基于FPGA的GMSK调制之高斯滤波器设计先生成一个50kbps码率的源(带宽为25KHz),码元1编码成7FFFH(+1)发送,码元0编码成80000H(-1)发送。利用SystemView制作一个采样频率为500KHz的低通高斯滤波器,把生成的21阶滤波器系数做成.coe文件(如IIRfilter的datasheet要求)加载到IPCore中生成所需低通滤波器。最后将码元通过高斯滤波器进行滤波。SystemView生成的高斯滤波器时域波形图:SystemView生成的高斯滤波器频域波形图:功能仿真波形如下。连续发送的码元为1011101001010101,最后通过高斯滤波后得到的平滑的波形如下,与原始码元型号一一对应。布局布线后仿真的波形如下。可以看到有明显的毛刺。Verilog程序:modulegmsktop(CLK,clk_50,RST,RDY,dout);inputCLK;//主时钟信号,500KHzinputclk_50;//50KHz时钟信号inputRST;//inputND;outputRDY;output[33:0]dout;wireND,RFD;wire[15:0]source;sent_sourcesent_source(clk_50,RST,ND,RFD,source);gsfirgsfir(ND,RDY,CLK,RST,RFD,source,dout);endmodulemodulesent_source(clk_50,RST,ND,RFD,source);inputclk_50;//50KHz时钟信号inputRST;//复位信号,高电平有效inputRFD;output[15:0]source;//1bit基带信号,用16bit表示outputND;reg[15:0]source;reg[15:0]scode;reg[3:0]num;regND;always@(posedgeclk_50)beginif(RST)beginND=0;source=16'd0;num=4'b1111;scode=16'b1011101001010101;endelseif(RFD)beginif(scode[num])beginsource=16'h7fff;endelsebeginsource=16'h8000;endND=1;num=num-1;endelseND=0;endendmodule