本文对数字调制中的2FSK采用matlab进行了仿真实验,代码中没有加入噪声,采用相干解调的解调方式。
(一)、代码的流程如下:(1)、设置载波频率,码元频率(本文中即比特率)和采样率;
(2)、产生2FSK信号;
(3)、信号分别经过两个带通滤波器后得到band_passed_sig1和band_passed_sig2;
(4)、对band_passed_sig1和band_passed_sig2分别进行相干解调,再分别进行低通滤波得到lower_sig1和lower_sig2;
(5)、对lower_sig1和lower_sig2进行抽样判决得到输出信号;
(6)、统计无码率;
(二)、2FSK进行matlab仿真的疑难点:(1)、相干解调采用的“同频同相的载波”的获取。
由于信号经过带通滤波器之后(本文采用的是FIR线性相位数字滤波器)会出现相移,所以不能直接用调制时候的载波信号与此时的band_passed_sig1信号相乘来相干解调,此时用来相干解调的载波应该与经过滤波器之后出现相移的“载波”信号同频同相,本文代码中直接采用band_passed_sig1.*band_passed_sig1的方式进行相干解调,这点需要读者细心斟酌一下(其实不难理解的)。
(2)、抽样判决的判决时刻选择。
据笔者观察,经过低通滤波器之后得到的信号会出现时移(延时)的情况,建议读者可以先设置10个码元个数,观察一下低通滤波器的输出波形,然后再选择波形峰值时刻作为抽样判决时刻。
本文的代码中是采用每一个码元的结束时刻作为抽样判决时刻,这是笔者通过观察低通滤波器的输出波形后得到的,不具有通用性。
时移的原因,笔者觉得是因为FIR数字滤波器的线性相位所导致的,但是怎么个时移法,笔者目前还没有弄明白(数字信号处理学的不够好),还有待探究。
1