跳转到主要内容

【通信篇】FPGA中FSK调制怎么做?

demi 提交于

作者:范龙飞 ,文章来源:<a href="https://mp.weixin.qq.com/s/jK3c5oxPAfkQpbHpKjquew">MYMINIEYE微信公众号</a&gt;

<font size="4"><strong>1、FSK信号的调制原理</strong></font>

数字频率调制是利用载波的频率传输信息的一种调制方式,FSK是在ASK之后出现的一种调制方式,抗衰落能力较强,在一些衰落信道中应用广泛。

数字频移键控(FSK)是用载波的频率来传递数字信息,符号1对应某个载频,符号0对应某个载频,频率之间的改变瞬间完成的,根据码元转换时刻的载波相位特征,可以分为连续相位FSK和非连续相位FSK,最简单的是二进制频移键控(2FSK),如下是连续相位的2FSK信号的波形。

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100153-1.j…; alt=""></center><br>

波形<img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100154-2.p…; alt="">分别用来传输数字1和0,信号可以看成是载频为f1和f2的两个振幅键控信号的合成,2FSK信号可表示为:

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100155-3.p…; alt=""></center><br>

式中,A是载波的振幅,Tb为数字码元的周期,{bn}为传送的数字序列为bn的反码.

<font size="4"><strong>2、FSK调制信号的MATLAB仿真</strong></font>

在matlab中仿真具有连续相位的2FSK调制信号:

调制指数为3.5。即两个频点以载波为中心,间隔为3.5*Rb=3.5MHz。

基带信号符号速率Rb =1MHz。

载波信号频率fc =6MHz。

采样频率fs =32*Rb。

Matlab提供了专门的FSK信号调制函数fskmod(),只需要设置几个参数就可以产生所需调度以及相位特征的FSK信号。

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100156-4.p…; alt=""></center><br>

如下可以看到产生的FSK信号,并且两个频率确实相差3.5MHz,其中时域的波形只截取了一部分显示。

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100157-5.p…; alt=""></center><br>

<font size="4"><strong>3、FSK调制信号的FPGA实现</strong></font>

在matlab中可以使用。现成的FSK函数,快速产生FSK调制信号,在FPGA中却不会有这样方便的函数使用,如下是产生2FSK信号的原理框图

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100158-6.p…; alt=""></center><center><font color="#9a9a9a"><i>2FSK信号原理框图</i></font></center><br>

两种方法都可以实现,但是第二种所需要更少的逻辑资源,更具有性能优势,这里采用一个DDS核实现连续相位的FSK,需要使得DDS输出信号的频率可以配置,因此需要将DDS的“Phase Increment Programmability”选中“Streaming”,输出位宽选择16bit。根据输入数据data_in的高低电平状态,分别设置DDS核的频率调制输入信号的相位增量值,得到需要的信号。

根据DDS工作原理

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100159-7.p…; alt=""></center><br>

式中fout为输出频率,fclk为系统时钟频率,<img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100160-8.p…; alt="">为相位增量位宽,例如:

<center><img src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100161-9.p…; alt=""></center><br>

计算得到相位增量,编写完成整个系统的Verilog HDL代码后,经测试,仿真如下:

<center><img width="600" src="http://xilinx.eetrend.com/files/2020-06/wen_zhang_/100049948-100162-10…; alt=""></center><br>

从图中可以看到输出信号在符号跳变时刻仍然保持了信号相位的连续性。