原创 数字中频处理FPGA实现

2010-7-6 18:31 5686 3 3 分类: FPGA/CPLD

4通道数字下变频-> CIC抽取滤波器-> FIR滤波器-> CIC插值滤波器->数字上变频<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


 


 


   


1.数字下变频


NCO采用ALTERAIP核,NCO的设置如下:


点击看大图


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


NCO IPcore设置


 


NCO IPcoreModelSim中仿真如下:

点击看大图



ModelSim中进行NCO IPcore仿真


 


2.数字下变频+CIC 64倍抽取模块


通道1 NCO中频设为28.8MHz,通道2 NCO中频设为26.88MHzNCO输出位宽16bit,通道信号输入ch_in位宽16bitI&Q信号按如下公式产生:


I = ch_in * cos(wt)


Q = ch_in * sin(wt)


       乘法器位宽为32bitI&Q信号为16bit,截取乘法器输出的[30:15]


为仿真方便,输入设为一常量:32767


主时钟频率为122.88MHzCIC滤波抽取后数据速率为1.92MHz,抽取倍数为64,级数4,每级延迟1。输入数据位宽16bit,内部位宽为[40 40 40 40 40 40 40 40],输出位宽为16bit,截取[39:24]CIC抽取在QUARUTS中的仿真图如下:

点击看大图



CIC抽取滤波器QUARTUS仿真图


 


    CIC抽取滤波器在MATLAB中仿真如下:




点击看大图


点击看大图


点击看大图


通道1 CIC抽取滤波器MATLAB仿真图


 



点击看大图点击看大图点击看大图


通道2 CIC抽取滤波器MATLAB仿真图


 


    结论:经数据对比,结果正确。


 


3.FIR滤波器


主时钟频率122.88MHz,每通道采样频率为1.92MHz,滤波器阶数为16阶,如果采用串行累加结构实现FIR滤波器,则每通道完成一次滤波需要16个时钟,122.88/1.92=64,因此可以4通道分时复用1乘法器。FIR滤波器一般先在MATLAB FDATool中进行设计,然后从MATLAB中导出FIR滤波器的系数,再在FPGA中实现。


MATLAB FDATool中设置FIR滤波器参数如下图所示:


 点击看大图


                      图 在MATLAB中设置FIR滤波器的参数


 


    4通道FIR滤波器在FPGA中的仿真如下:


点击看大图


                      图 4通道FIR滤波器 FPGA仿真


 


    4通道FIR滤波器在MATLAB中的仿真如下: 


 


b4d5fd04-d1b7-4230-b9f5-2a3b1852fd65.jpg adc1787e-ef36-44ef-af92-98525f9848f8.jpg


                 通道1 I&Q信号 FIR滤波后输出MATLAB仿真图


 

 d881c4ac-34dc-46b8-b075-d521c6525d73.jpg 7bc749dd-2cbe-43e1-94a7-c884b11eb4cb.jpg


                

通道2 I&Q信号 FIR滤波后输出MATLAB仿真图


 


4.CIC插值滤波器


CIC插值前数据速率为1.92MHz,插值后速率为122.88MHz,插值倍数为64,级数4,每级延迟1。输入数据位宽16,内部位宽[17 18 19 19 19 24 29 34],最后输出位宽为16,截取高16[33:18]


CIC插值滤波器在QUARTUS中的仿真如下:

点击看大图


               图 CIC插值滤波器QUARTUS仿真图


 


产生相同的输入数据,在MATLAB中的仿真如下(2I&Q信号输出都相同):


 点击看大图


                    图 CIC插值滤波器MATLAB计算结果


 


数据对比:


QUARTUS     MATLAB


0                                                   0


0              0


0              0


0              0


-1             -1


-4             -4


-10            -10


-20            -20


-35             -35


……           ……


 


结论:结果正确。


 


5.数字上变频


每路I&Q信号,上变频都要做复数乘法,公式为:


Real = I*cos(wt) + Q*sin(wt)


Imag = Q*cos(wt) - I*sin(wt)


cos(wt)sin(wt)共用数字下变频时的NCOIQ信号输入为16bit,正余弦信号16bit,则每进行一次复数乘法需要4个乘法器。乘法器输出为32bit,进行加减法后位宽取32bit,输出位宽取16bit,截取[30:15]


数字上变频在QUARTUS中的仿真图如下:点击看大图



数字上变频QUARTUS仿真图


 


 


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /1 下一条