基于NCOIPcore的Chirp函数实现设计
扫描二维码
随时随地手机看文章
引 言
IP就是知识产权核或者知识产权模块的意思。在EDA技术和开发领域具有十分重要的作用,在半导体产业中IP定义为用于ASIC或FPGA/CPLD中预先设计好的电路功能模块。IP可以分为软IP,固IP和硬IP三种。
随着电子系统的越来越复杂,PLD设计的越来越庞大,这就增加了市场对IP核的需求,各大FPGA/CPLD厂商陆续推出了许多IP核。例如:FIR(有限冲击响应)数字滤波器core;FFT(快速傅里叶变换)core,NCO(数控振荡器)core等,在设计中如果使用了这些知识产权核可以大大简化 FPGA/CPLD的设计,加速设计速度,缩短研发周期,并且较之于开发者自己的设计程序,这些IP有更好的运算精度、速度、SFDR参数、SNR参数等,达到良好的效果!
由于电磁波在传输过程中,经过色散介质,如不均匀的波导经过高空电离层时会发生色散现象。Chirp函数在射电天文信号的消色散处理中发挥着重要的作用,研究在FPGA中实现Chirp函数是基于FPGA的射电宇宙信号处理的重要组成部分。如图1所示。
该设计就是通过实时的改变NCO IP core的输入频率控制字的办法,数控频率输出的办法实现Chirp函数。
1 系统总体设计
Chirp函数根据输出频率的递变规律一般分为两种:线性Chirp函数和非线性Chirp函数,以下是两种Chirp函数在频域上的表现如图2,图3所示。
从图2,图3可以看出Chirp函数的频率输出与时间的f-t关系可以总结为:
对于线性Chirp函数:
在连续域时间域内有关系式:
式中:k为常数;f0为初始输出频率;t为连续时间。
在离散时间域有关系式:
式中:k为常数;f0为初始输出频率;n为采样点。
对于非线性Chirp函数:在连续域时间域内有关系式:
式中:f(t)为非线性函数;f0为初始输出频率;t为连续时间。
在离散时间域有关系式:
式中:f(n)为非线性函数f0为初始输出频率;n为采样点。由上式可以看出Chirp函数在每一个时刻点具有不同的频率输出,而根据具体的频率变化的需要在每一个时刻点实时的改变其频率控制字是实现Chirp函数的关键。其算法框图如图4所示。
2 NCO IP Core
数字压控振荡器知识产权核(Numerically Con-trolled Oscillators Intellectual Property Core,NCO IPCore),通过多种算法(相位累加或者CORDIC算法,在此不一一赘述),实现了一个离散幅度和时间的正弦波信号输出。输入控制字和输出频率之间满足以下方程:
s(nT)=Asin[2π(f0+fFM)nT+ψPM+ψDITH)] (5)
式中:T为该模块的工作时钟;f0是由输入频率控制字ψINC决定的初始频率;fFM是由调制频率控制字ψFM决定的调制频率;ψPM为该输出正弦波的调制相位,ψPM=P/2Pwidth,由输入控制字P的比特位数(Pwidth)决定了它的精度;ψDITH为模块内部自身的不稳定而引起的相位杂散(噪声);幅值量A=2N-1,其中N为幅值精度取值在4~32之间。
该设计中仅采用通过改变频率控制字ψINC,以实现改变频率输出的目的,为此式(5)可以简化为:
式中,f0由给定的频率控制字ψINC决定,满足如下方程:
式中:M为累加器精度;fclk为该模块的输入时钟频率,单位为Hz。例如:在fclk=100 MHz的情况下,如果需要f0=10 MHz的输出,ψINC的计算如下:
通过Altera公司的FPGA编程软件QuartusⅡ提供的MegaWizard Plug-In Manager功能,在NCO IPCore参数配置中自动对ψINC的计算,很容易得出在输入频率的条件下所需输出频率的ψINC(累加器精度为32 b的情况下)如图6所示。
值得注意的是:在MegaWizard Plug-In Manage中,ψINC的精度只保留到了百位。 function ImgZoom(Id)//重新设置图片大小 防止撑破表格 { var w = $(Id).width; var m = 650; if(w
3 频率控制字寄存器及驱动单元的设计
频率控制字寄存器为一个保存有N个输出频率所需的相位累加控制字的片上ROM单元,其作用在驱动单元输入地址控制字的作用下实时向NCOIP Core调入所需要的ψINC,在该设计中Chirp函数的频率变化规律是从1 MHz步进1 MHz输出到16 MHz。在该设计中选择的累加器精度为32 b,为此选择的逻辑单元的规律为如表1所示。
为此,建立一个深度为1 6,每个存储单元字长32 b位的ROM,将表1内所有ψINC数据保存至NCO_1_16.mif文件中,在ROM建立时调用该mif文件。如图7所示。[!--empirenews.page--]
在设计中,通过不同时间点向频率控制字寄存器写入不同的地址信号驱动,使存储器输出不同的频率控制字驱动NCO IP Core,产生不同的频率信号输出。该设计中采用两个计数器级联作为驱动单元,首先第一级计数器将钟频率降至需要的Chirp函数输出某频点的稳定时间范围,将第一级计数器的进位端作为第二级计数器的时钟输入端;第二级计数器的作用是,产生地址信号以驱动频率控制字存储器输出相应的控制字,当前级进位信号有效时该计数器输出加“1”。以达到改变频率输出的目的,其连接电路图如图9所示。
4 仿真与验证
将该设计通过将程序下载到Altera公司生产的DSP开发板(型号DK-DSP-2C70N)中进行仿真,其核心FPGA(型号为EP2C70F672C6)的资源使用情况如图10所示。
并通过该开发板上D/A转换器输出模拟波形(只截取了4个时刻的图样)如图11所示。
通过图11可以看出该设计能很好地完成扫频输出的功能,并且杂波分量很小,干扰很小。
5 结 语
该设计通过采用技术成熟的NCO IP Core完成,其优势在于:
(1)利用了成熟的FPGA知识产权技术,使得设计更加简便并易于移植;
(2)利用NCO IP core的高稳定性,使得Chirp函数的各项噪声较之于其他设计更小,有利于对射电天文这样微弱信号的处理,减少了处理带来的各种噪声。