5.4 程序设计思路
5.4.1 发送端设计
通常利用二进制双极性码(1和-1)直接键控载波产生2PSK信号。因此,当我们产生二进制码元之后,需要对其进行极性变换:
%-----产生随机数据帧,length=500-----%
bit_trans = randint(1,bit_Num);
%-----基带码元双极性变换-----%
bit_tran2=bit_trans.*2-1;
在进行码元扩展和载波扩展之后,就可以进行键控调制了,具体就是将码元和载波相乘,得到2PSK已调信号。
加入训练序列之后,即可发送数据了。
5.4.2 接收端设计
对于接收端,我们需要接收发送端的2PSK调制信号,因此AD9361的采样率和频点必须与发送端一致,即:
samp_hex=dec2hex(20e6,8);
freq_hex=dec2hex(999e6,10);
接收到的信号应该是两路正交的IQ正弦波信号,它们的频率为1MHZ(本实验中为a1和a2)。我们将数据帧送入科斯塔斯环路进行滤波处理。滤波器采用双线性变换法进行滤波器的设计。函数输出为滤波器处理后的值,也就是解调值。
直接将判决阈值设为0即可恢复信息。应当指出的是,由于costas本身的相位模糊性和2PSK的调制方式,解调效果会在一定程度上不太理想,可以通过信源编码解决相模糊的问题。这种模拟的相位调制方式并不是太实用,而且接收机对此数据的处理非常复杂,
而且不符合数字接收机的一般原则。读者若有更好的实验方案,可以自己完善之。
5.5 实验步骤
1. 连接YunSDR设备,保证设备正常启动并且网络畅通
2. 运行发送端程序tx_2PSK.m,当matlab命令行端显示“data transfer done”时,表明数据正常发送完毕。
3. 运行接收端程序rx_2PSK.m,程序会显示接受到的2PSK调制信号和经过解调之后恢复出的原始基带信号。注意,由于滤波器的拖尾原因,我们会丢弃2bit的数据以获得最佳的解调码元。其中,cyc显示接收数据次数,下方画出了帧同步曲线,原始基带信号和长度也示于上面,解调序列显示误码率和解调次数,可以看到bit_err为0,解调完全正确。
更多精彩文章请扫码关注订阅号