1.ASK信号的调制原理
数字信号对载波信号的振幅调制称为振幅键控,即ASK。
在2ASK调制系统中,数字信息只有0和1两种,所调制的载波信号的幅度变化状态也只有两种:无载波输出时代表发送0;有载波输出时代表发送1。
在4ASK调制系统中,数字信息就有00、01、10、11四种,需要载波信号幅度的4个电平状态表示。显然,进制越大,相同频带内可以传输的数据信息量也就越多,即频带利用率越高。
ASK调制系统的模型如下所示:
ASK信号产生模型
基带信号m(t)可以看作一串由0、1组成的矩形脉冲信号,理论上其带宽是无限的,与载波信号调制之后的键控信号s(t)带宽也是无限的。工程中为了提高频带利用率,需要对信号带宽做限制,通常只需要将在主瓣带宽内包含90%能量的信号发送出去即可。
在频带资源比较紧张的情况下,为进一步降低信号的带宽,提高频带利用率,一种常用的方法就是在调制之前对基带信号进行成型滤波,如上图ASK信号产生模型所示。
2.ASK调制信号的MATLAB仿真
在FPGA设计前通常都会使用MATLAB对系统进行建模与仿真。设计ASK调制系统时,选定系统参数,如下所示:
码元长度(Len)
1000
码元速率(Rb)
1Mbps
采样频率(Fs)
8MHz
数据长度(LenData)
8000
载波频率(Fc)
70MHz
Matlab主要程序如下:
程序运行之后,生成2ASK的时域波形以及频谱如下:
从ASK信号的频谱图可以看出,经过成型滤波之后的信号频谱已经滤除了主瓣外的频率成分,采样后的载频分量被搬移到了2MHz处。采样后的载波频率fas = k*fs±fc,其中k为整数,当k=9时,fas=9*8-70=2MHz。
3.ASK调制信号的FPGA实现
前面采用MATLAB对ASK信号进行了仿真,接下来在Vivado开发环境下完成2ASK调制技术的设计并进行仿真。键控法实现ASK的FPGA十分简单,如下所示:
采用开关(键控)方式产生ASK调制信号,输入到DAC之前,在FPGA内部可以用一个数字带通滤波器对信号频带进行限制,关键在于产生本地载波信号,无论是Altera还是Xinlinx都提供了NCO核,我们可以根据需要,设置相应的参数后,就可以产生载波信号。
DDS/NCO核的参数的主要设置为:
• SystemClock : 8MHz
• ParameterSelection : Hardware Parameters
• PhaseWidth : 32
• OutputWidth : 14
• PhaseIncrement Programmability : Programmable
• Phaseoffset Programmability : None
• OutputSelection : Sine
输出频率为2MHz,相位累加器设置为 32’d1073741824。
主要程序如下,其中sine是DDS/NCO的输出信号,当进行4ASK调制的时候,输出信号的幅度有四种,需要合理设置中间值,分别为最大幅值的1/3和2/3,在FPGA实现除法是比较复杂和耗时的,这里采用了近似的方法,采用移位法实现0.3281(≈1/3)和0.6563(≈2/3)倍最大幅值。
最后的仿真为
FPGA实现后的2ASK调制信号仿真波形
FPGA实现后的4ASK调制信号仿真波形
从图上可以看出,2ASK中只有零值和最大值两种情况,4ASK有四种不同的幅值,符合ASK调制信号的要求。