MATLAB编程实现2FSK信号的调制与解调(非相干解调)

2FSK信号的产生 

数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频f1,而符号“0”对应于载频f2(与f1不同的另一载频)的已调波形,而且f1与f2之间的改变是瞬间完成的。

2FSK信号还可以看作两个不同载频的ASK信号的叠加。因此2FSK信号的时域表达式又可以写成:

e_{2FSK}=s_{1}(t)cos(w_{1}t+w_{2}t)+s_{2}(t)cos(w_{2}+\Theta _{n})

所以2FSK信号的产生方法有两种:

  1. 模拟法,即用数字基带信号作为调制信号进行调频。
  2. 键控法,用数字基带信号g(t)及其反相信号\overline{g(t) }分别控制两个开关门电路,以此对两个载波发生器进行选通。

 键控法如下图:

 

图1 键控法 

 

2FSK调制原理

二进制频率调制是用二进制数字信号控制正弦波的频率随二进制数字信号的变化而变化。由于二进制数字信息只有两个不同的符号,所以调制后的已调信号有两个不同频率的f1和f2,f1对应数字信息“1”,f2对应数字信息“0”。

在2FSK信号中,当载波频率发生变化时,载波的相位一般来说是不连续的,这种信号称为不连续2FSK信号。相位不连续的2FSK通常用频率选择法产生,如图所示:

 

图2 2FSK信号调制器 

 

两个独立的振荡器作为两个频率发生器,他们受控于输入的二进制信号,二进制信号通过两个与门电路,控制其中的一个载波通过。 调制器各点波形如图3所示:

 

图3 2FSK调制各点波形图 

 

可以看出,二进制频率调制信号2FSK可以看成是两个载波频率分别为f1和f2的2ASK信号的和。 

 

2FSK解调原理

2FSK的解调方式有两种:相干解调方式和非相干解调方式。在相同信噪比的前提下两种方式性能差别不大,包络检波不需要相干载波,因而设备简单,2FSK非相干运用更加广泛。

  1. 非相干解调

经过调制后的2FSK数字信号通过两个频率不同的带通滤波器f1、f2滤出不需要的信号,然后再将这两种经过滤波器的信号分别通过包络检波器检波,最后将两种信号同时输入到抽样判决器同时外加抽样脉冲,最后解调出来的信号就是调制前的输入信号。其原理框图如图4所示:

 

图4 非相干解调原理框图 

2 相干解调 

根据已调信号由两个载波f1、f2调制而成,则先用两个分别对f1、f2带通的滤波器对已调信号进行滤波,然后再分别将滤波后的信号与相应的载波f1、f2相乘进行相干解调,再分别通过低通滤波器,通过低通滤波器之后再用抽样信号进行抽样判决即可完成解调。原理框图如图5所示:

图5 相干解调原理框图 

  1. 系统设计步骤

3.1、信号产生

1)将要传输的字符串‘2120837+190020xx-xx+张三’转换成二进制流作为我们的基波调制信号a,并画出波形,在二进制基带矩形脉冲序列的控制下通过开关电路对两个不同的独立频率源进行选通,使其在每一个码元TB期间输出f1或f2两个载波之一,然后将波形画出来。。

字符串产生:

 

 

图7:字符串图

 

图7:信号图

2)产生两个频率为f1=100KHz和f2=150KHz的余弦波作为基带信号b1、b2,并画出其波形。

图8 两个信号 

3.2、信号调制

产生2FSK信号和加入高斯噪声后的2FSK信号

1)用二进制序列a去调制f1和f2,产生2fsk信号,具体做法是用以a生成的方波信号直接与f1相乘,用a取反后的方波与f2相乘,再将两列信号相加,并画出已调信号的波形。

2)调用MATLAB库函数产生高斯噪声信噪比20dB,并与2fsk信号相加得到加入噪声后的信号。并画出加噪后的波形和已调信号的加噪后波形。

 

图9 加噪 

3.3、信号解调

1)将加噪已调信号通过两个带通滤波器w1和w2,他们分别以f1和f2为中心频率,并画出经过带通滤波器后的波形。 

图10 带通

2)对经过带通滤波器的两列信号进行全波整流并画出此时的波形。

 

 图11  全波整流

3)让这两列波形再通过低通滤波器得到这两列基带调制波形s3和s4并画出其波形。

 图12 低通

4)最后将两列波通过抽样判决器,画出其通过抽样判决后的波形,并与之前调制后的波形做对比。

图13 判决 

通过与发送的码元信号对比,接收到的码元信号与发送的一致,只是时延上的区别,这样就算将已调的信号进行解调出来了。 

恢复出的字符串如下图所示:

图14:恢复出来字符串

通过与发送的码元信号对比,接收到的码元信号与发送的一致,只是时延上的区别,这样就算将已调的信号进行解调出来了。

最后进行误码率分析,如图所示,理论与实际误码率比较。

 

图15 误码率分析图

 4参考文献

[1]樊昌信,曹丽娜.通信原理第六版[M].国防工业出版社,2012:180-205

 

 

 

  • 27
    点赞
  • 195
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 39
    评论
1.1、设计内容 用Matlab编程仿真2FSK调制相干解调系统 1.2、设计要求 (1)信源为八位二进制随机信号,比特率为50bit/s,载波频率f1=200Hz,f2=100Hz; (2)画出信源,2FSK已调信号解调器乘以相干载波后的信号,经过低通滤波器后的信号和抽样判决后的信号波形; (3)撰写专业课程设计报告。 2、设计原理分析 2.1、2FSK介绍 数字频率调制又称频移键控(FSK),二进制频移键控记作2FSK。数字频移键控是用载波的频率来传送数字消息,即用所传送的数字消息控制载波的频率。2FSK信号便是符号“1”对应于载频f1,而符号“0”对应于载频f2(与f1不同的另一载频)的已调波形,而且f1与f2之间的改变是瞬间完成的。 其表达式为: 典型波形如下图所示。由图可见,2FSK信号可以看作两个不同载频的ASK信号的叠加。因此2FSK信号的时域表达式又可以写成: 2.2、 2FSK调制原理 2FSK调制就是使用两个不同的频率的载波信号来传输一个二进制信息序列。可以用二进制“1”来对应于载频f1,而“0”用来对应于另一相载频w2的已调波形,而这个可以用受矩形脉冲序列控制的开关电路对两个不同的独立的频率源f1、f2进行选择通。本次课程设计采用的是前面一种方法。如下原理图: 图1 调制原理框图 2.3、 2FSK解调原理 2FSK解调方式有两种:相干解调方式和相干解调方式,本次课程设计采用的是相干解调法,利用载波与已调信号进行相乘后滤波输出得到,在2FSK中要两个载波,所以解调也要两个载波,分别与已调信号相乘后利用低通,最后相加即可得到我们的滤波输出,再用抽样信号进行抽样判决器即可,其原理如下: 图2 相干解调原理框图 3、仿真参数设置说明 3.1、仿真参数设置 信源:八位二进制随机信号 载波频率:fc=900 信号频率:f1=100;f2=200 比特率:Rb= Rb=fm*log2_M=50 bit/s 3.2、仿真程序设计说明 详细设计步骤: 1.信号产生:二进制随机序列和两列频率不等的载波 1)利用matlab 库函数产生8个二进制随机数,也就是我们的基波调制信号a。 2)产生两列基带信号st1和st2,并画出其波形。 2.信号调制:产生2FSK信号和加入高斯噪声后的2FSK信号 1)用基带信号st1、st2和载波信号s1和s2,产生2fsk信号,具体做法是用以st1与 s1相乘,st2 与s2相乘,再将两列信号相加。 2) 2fsk信号相加得到加入噪声后的sn信号。 3.解调 (1)对于两列让sn通过两个低通滤波器,并画出经过带通滤波器后的波形。 (2)输入抽样脉冲,将两列波st1和st2通过抽样判决器,画出其波形st,并与之前调制后的波形sn做对比,并由Figure3得出比特率为50 bit/s。 4、仿真结果和分析 4.1、仿真结果 4.1.1.产生的基带信号 4.1.2.产生的载波信号 4.1.3.2FSK调制过程
好的,我可以为您提供一些关于使用MATLAB和FPGA结合实现2FSK调制解调的设计思路。 首先,您需要使用MATLAB来生成2FSK调制信号。您可以使用以下代码生成2FSK调制信号: ```matlab % 2FSK Modulation f1 = 10; % Carrier frequency 1 f2 = 20; % Carrier frequency 2 fs = 100; % Sampling frequency t = 0:1/fs:1; % Time vector m = [1 0 1 0 1 0 1 0]; % Message signal m = repelem(m,fs/f1); % Upsample the message signal s1 = sin(2*pi*f1*t); % Carrier signal 1 s2 = sin(2*pi*f2*t); % Carrier signal 2 s = m.*s1 + ~m.*s2; % Modulated signal ``` 这里,您需要定义两个载波频率和采样频率,然后生成一个时间向量。接下来,您需要定义一个消息信号,并将其上采样以与载波频率匹配。然后,您可以生成两个载波信号,并将它们与消息信号相乘。最后,您将它们相加,生成2FSK调制信号。 接下来,您需要将2FSK调制信号发送到FPGA中进行解调。在FPGA中,您可以使用相干解调器。相干解调器的原理是将接收信号与已知的参考信号相乘,然后将其通过低通滤波器来滤除高频分量。以下是相干解调器的MATLAB代码示例: ```matlab % 2FSK Demodulation r = s.*s1; % Received signal [b,a] = butter(10,2*f1/fs); % Lowpass filter y = filter(b,a,r); % Filtered signal z = y > mean(y); % Demodulated signal ``` 这里,您需要将接收到的信号与已知的载波信号1相乘。然后,您可以使用一个低通滤波器来滤除高频分量,并将其推迟一定的时间,以与原始消息信号对齐。最后,您可以将信号与其均值进行比较,并将其二值化,以获得解调信号。 在FPGA中,您可以使用HDL Coder将MATLAB代码转换为可在FPGA上运行的代码。HDL Coder支持将MATLAB代码转换为VHDL或Verilog语言,并为您提供FPGA开发工具的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫咪铲屎官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值