基于simulink仿真数字通信系统

admin 128 0

前言

读了好几年通信工程起码要知道个最简单的通信系统模型吧。

最近时间比较充足,总结一下之前做的信息论与编码实验,回顾一下通信原理的信息论与编码的基本知识。

本实验搭建了完整的通信系统,进行信源编码和信道编码分别提高了有效性和可靠性。(其实我用的定长PCM,不太能提高有效性)

通信系统

设计了如下系统模块,先产生随机模拟信号,进行PCM编码(非均匀量化中使用A律13折线压缩),信道编码分别尝试使用了BCH编码和线性码,调制使用的是2FSK,经过高斯白噪声信道后进行相干解调(通信原理中尝试用simulink比较相干解调、非相干解调和最佳接收机,可参考我的GitHub),抽样判决后进行信道译码和信源译码,最后低通滤波得到模拟信号。

基于simulink仿真数字通信系统
Fig1.系统框图

具体系统框图和调制解调子模块框图如下:

基于simulink仿真数字通信系统
Fig2.系统simulink框图
基于simulink仿真数字通信系统
Fig3.调制解调部分

结果

比较了BCH、线性码的性能,用无信道编码的系统作为对照,结果如下:

基于simulink仿真数字通信系统
Fig4.结论

相同信噪比条件下,信道编码可以有效降低系统的误码率,提高系统性能。

为了方便比较,BCH和线性分组码均采用3位编为6位的方式,但是实验中明显看出,BCH(6,3)编码与(6,3)线性分组编码相比,虽然编码效率一致,但是BCH(6,3)编码的性能更胜一筹,可能与线性分组码自定义的生成矩阵有关。

信道编码并不能降低信道的误码率,但能增加纠错能力,使得部分码元即便出现差错也能得到纠正。

除此之外,我还观察了不同信噪比下模拟信号的恢复情况,尤其是误码率为0时的系统,恢复效果如图:

基于simulink仿真数字通信系统
Fig5.波形比较

由此可见,即便误码率为0,但是模拟信号也无法完全恢复,原因是抽样量化存在误差,且不可消除,由此也可以说明,PCM并不是一种无失真信源编码。

一些思考

1.信源编码之后的译码问题,就是哈夫曼编码这种变长编码,一旦发生错误,如何译码?比如一个4位码字的前三位错成了一个3位合法码字,而第四位又和下一组混合了,这种就导致后边的继续错下去,无法译码。

我们的实验中只是要求实现无失真的编码,即考虑信源编码的时候,认为信道是无错误,实际应用中哈夫曼编码并没有这么简单,实际中应用的信源编码都是针对某种业务特征采用的具体编码,哈夫曼编码可以说是一种编码思想,而不是实际应用中的一种编码标准。本实验要求使用定长编码,传输错误不会导致信源编码由于译码错误导致的错误积累。

2.Simulink仿真跟Matlab代码仿真最大的区别就是,Simulink是严格按照时间线执行的,然而在编码、信道传输过程中会出现时延,且译码是从0时刻开始,导致译码的时候出现严重差错。

观察各个模块延时的码元个数,在译码之前增加延时模块,使得第一个码到来时正好是第二个码组时刻。比如,在本系统中,信道编码后6个码为一组,而信道传输产生了两个码元时间的时延,所以在信道译码之前,再认为时延四个码元时间,抛弃第一组码,从第二组开始译码。

详见: liuzengyun/IHtest: 信息论与编码实验 (github.com)

发表评论 取消回复
表情 图片 链接 代码

分享