1.接收的信号:
2.乘cos(2πfct)后的信号:
3.经过低通滤波器后的信号:
4.抽样判决输出:
看到这个信号,我的确有点吃惊,滤波出来的波形居然会这么好,但仔细想想,我发送的信号的波特率很低,也就很靠近0频,而带宽也很小。而且我把滤波器的通带调得很小,因此噪声的大部分能量都被滤去了。因此结果能够达到这么好。
语音信号的传输
语音信号这个部分我就没用使用simulink来模拟了,主要原因是语音信号较长,而且一面simulink模块中,运行低通滤波器需要很大消耗,因此我考虑编程来模拟语音信号的量化,调制,以及解调。其中的滤波器我需要重新设计,以减
少程序运行时间。
下面是一段自己录制的语音信号(大概1秒左右,内容是“你好”):
当前语音信号的最大值为0.1290,最小值为-0.1333。因此我将其进行从-0.15到0.15的均匀量化,并采用格雷码进行编码(量化代码参考附录4:语音信号的量化,以及格雷码的生成代码,参考附录5:格雷码的产生)。之所以采用格雷码进行编码,是因为如果接收产生误码,可以不至于声音差得太多。
下面是量化后的语音信号,是采用8位二进制数进行量化,即将-0.15到0.15均匀分成了256份。试听以后效果不错,声音基本没有失真。
通过以上处理可以得到一串语音的二进制码,采用与上文中相同的DPSK传输方法,将语音信号调制并传送出去(代码参考附录6:语音信号的调制)。由于信号量化后序列较长,因此仅给出一小部分波形:
给信号添加噪声,以模拟真实的噪声信道,添加噪声后信号的部分波形如下:
给信号乘上与载波同频的正弦信号,得到如下波形:
这里自行设计了滤波器,采用切比雪夫2型滤波器,阶数为9,阻带为80dB,阻带频为0.07(代码参考附录7:切比雪夫低通滤波器),通过低通滤波器后得到如下波形(对应序列为000000100):
由于有噪声影响,滤除的效果并不算特别好,但仍然能进行较准确的抽样判决了。接下来就通过抽样判决的函数输出原量化后的语音信号的序列(代码参考附录8:抽样判决),接着就根据格雷码对信号进行复原了(代码参考附录9:语音信号的复原)。下面给出抽样判决后的部分序列,和格雷码复原后的信号波形:
通过上面的操作,便完成了语音信号的量化、调制、加噪、解调,成功的,模拟了语音信号利用DPSK的通信过程,最后播放得到的语音信号,声音辨识度很高,基本没有失真。
最后的一点话:
其实本次工作一开始我是希望能够在两台电脑上实现通信的,由于没有串口线,我想我们都有网线,就可以直接把两台电脑用网线相连,利用运输层的协议就可以实现通信了,如下图一样:
之后我就分别在两台电脑上运行下面两个Simulink模块:
可以说,和我预想的一样,可以接收到发送的信号,但是接收到的信号却让人琢磨不透,如下图(是多维的信号,第一个模块接收到的信号,其余三个是部分信号的部分波形):
和在本机模拟的一样,接收到的都是255×1×6001的信号,但是不同的是本机接收到的信号中,只需通过能量最大就可以找出需要的信号,而在两台电脑
相关推荐: