利用Matlab simulink实现DPSK通信
刘易 2011001010010
工作简介
此次工作完成了以下几个任务:
1.Simulink的DPSK实现:利用MATLAB simulink模块实现了自定义的DPSK信号的调制和解调,其中通信是利用simulink的UDP send和UDP receive来实现的,将两台电脑直接用网线连接起来,便可在两边分别运行UDP send和UDP receive实现通信,其中目的IP用“255.255.255.255”以进行广播。 2.考虑噪声的通信:在考虑噪声的情况下传输自定义信号,并成功复原原信号。 3.语音信号的传输:在实现任意信号的通信后,用一段语音信号进行DPSK通信。先对语音信号进行量化,然后通过DPSK调制,再用相干解调得到原传输信号,最后复原语音信号并进行播放。信号的传输是在有噪声的情况下进行的。
下面分别介绍上述工作: Simulink的DPSK实现
1.1 首先展示simulink的发送方的模块:
1.2 定义需要传输的信号:{1 0 1 0 1 0 1 0 1 1}
1.3 生成需要传输的信号:
题目中要求:Tc=1800HZ,Rb=1200bps,但是为了模拟显示得更方便直观,我仅保持了这两个量的比例,将两个量改为了:Tc=3HZ,Rb=2bps。(消息信号生成的代码参考附录1:产生消息信号)
1.4 将消息信号与载波信号相乘得到需要传输的信号:
需要指出,我只定义了10个需要传输的信号,即需要传输5秒,但我都是以6秒来发送后的,后面的5-6秒的两个信号用0填充了,其原因是后面接收方的低通滤波器有延迟,需要留足够的空间来显示完整信号。
下面给出传输信号的功率谱密度,这里的计算是利用离散信号做FFT再除以信号长度得到的(由于主要集中在某一范围因此仅给出部分范围的频谱):
1.5然后UDP send模块需要将小心信号发送到接收端。
2.1 接收方的Simulink模块
2.2接收方的接收信号(由scope6显示):
从接收模块可以看到,在直接接收的信号到scope6之间有一个我自己定义的模块。其原因是在直接接收到的信号中,有许多不相关的信号,且一般都比需要的信号要小。如果将直接接收的信号存下来观察,可以得到的是255×1×6001的信号,但我们所需要的只是1×6001的信号,因此我添加了一个模块来滤去其他无关信号。(该模块代码参考附录2:接收信号的提取)
下面是处理过后的接收信号:
2.3 将接收信号再乘一个与载波信号同频率的正弦信号(由scope8显示):
2.4 将信号通过低通滤波器,得到如下信号(由scope5显示):
可以看到这个低通滤波器在时间上延迟了大概0.75秒,这就是为什么一开始要以6秒的长度来传输数据。
2.5 接着通过一个自定义的模块,进行抽样判决,大于0记为1,小于0为0,这样便复原了原信号:(抽样判决模块代码参考附录3:抽样判决)
考虑时延后,抽样判决输出的序列为{1 0 1 0 1 0 1 1},和原序列相同。
以上便完成了DPSK调制通信的全部过程,成功地复原了原信号。其实这个系统可以跑在两台电脑上,通过网线连接,用UDP通信,但在实行的时候出现了些问题,我在报告最后再来说说两台电脑的通信问题。
以上虽然成功地完成了DPSK的通信,但是很重要的是没有考虑噪声,在实际生活中是不可能不考虑噪声的,因此下面在考虑噪声的情况下实现DPSK通信。
考虑噪声的通信
只需在发送方的模块中添加一个产生噪声的模块即可模拟有噪声的通信:
下面依次给出接收方收到的信号以及处理之后的信号波形:
相关推荐: