首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Xilinx FPGA IP CORE的可调正弦信号发生器设计

基于Xilinx FPGA IP CORE的可调正弦信号发生器设计

直接数字式频率合成( Direct Digit al Frequency Synt hesis, 简称DDS) 相对于直接频率合成( DS) 和锁相频率合成(PLL) 等频率合成方式具有频率转换时间短, 频率,相位和幅度均可程序控制以及频率分辨率高和稳定度好、实现方便灵活等优点。因此利用DDS 芯片或FPGA 进行设计, 可以简化设计流程、提高设计效率。随着集成电路工艺水平的飞速发展, DDS 技术已在工程中得到了广泛应用。
1 DDS 的基本原理和实现
1. 1 DDS的基本原理
图1 是DDS 的基本原理图。在每个f clk 到来时, 相位累加器将上一时钟周期的累加结果和频率增量$H( 频率控制字) 进行累加, 累加结果的高位作为正/ 余弦查表(LUT)的地址, 输出对应地址上的波形数据sin(H(n) ) 或cos( H(n) ), 由外部数模转换器DAC 重构波形, 经滤波后输出平滑模拟信号波形。

DDS 的输出频率为:

频率分辨率为:

1. 2 DDS的实现方法
DDS 的实现常采用专用芯片(如美国模拟器件公司的AD985X系列) 和大规模可编程逻辑阵列( FPGA) 来实现。AD985X系列专用DDS 芯片, 以AD9850 为例, 其内部集成有32 位的相位累加器、5 位的相位控制器和10 位的DAC,可以产生低相位噪声、高稳定度的频率输出波形, 但不能实现0~ 360b任意的相位调整, 只能实现180b、90b、45b、22. 5b和11. 25b等5 种固定值组合的相位调整, 且输出幅度不能调节。基于FPGA 的DDS 实现方法具有设计灵活、硬件开销少、开发效率高、利于集成的优点。FPGA 外部只需搭配一只双通道的DAC 芯片和少许滤波电路, 由CPU 控制即可实现正弦信号频率、相位和幅度的程序控制。
2 基于FPGA IP CORE 的DDS设计方法
传统基于FPGA 的DDS 设计方法是利用硬件描述语言VH DL 或Verilog 来设计相位累加器、LUT( 数据查表)以及控制逻辑。此方式程序代码量较大、设计效率偏低且使用较多FPGA 资源。本文提出一种基于Xilinx 公司系列FPGA IP CORE 的DDS 设计方法, 直接从Core Generator 中调用DDS IP CORE 即可实现DDS 核心功能,无需编写DDS 内部代码, 设计简单方便。
Core Generator 是Xilinx 公司系列FPGA 集成开发环境ISE 的子设计工具, 其将原有重复使用的设计思路或方法模块化、集成化、标准化后进行封装IP CORE, 供以后设计直接使用。Core Generator 中的所有IP CORE 都是Xilinx 以及第三方合作伙伴提供并经过验证的, 其中有的复杂的IP CORE 需要另行付费才能使用, 绝大部分简单IP 只要有集成开发环境ISE 使用授权就可以使用[ 7] 。为保护知识产权, 所有IP 都不公开内部代码, 只提供外部接口定义和操作技术文档。

图2 是启动ISE Core Generator 调用的DDS IPCORE 界面。在设置选项中DDS Clock Rat e( DDS 时钟)、Frequency Resolution( 频率分辨率)、输出数据宽度要设定固定值; Out put Frequency( 输出频率) 是可编程的, 只需设置初始值。Core Generator 会根据DDS 时钟和频率分辨率自动配置累加器数据宽度和数据表深度。
图3 为DDS IP CORE 模块外部接口定义。模块定义了输入端口(DATA)和输出端口(SINE、COSINE) 、地址端口( A) 、时钟使能端口( CE)、RDY 和RFD 握手信号( 可选) 、SCLR( 同步清零端, 可选) 、CHANNEL( 输出通道指示, 用于多通道DDS) 。

图4 为单通道DDS 时序图[ 8] 。模块在CE 为- 0. ( 无效) 、WE 为- 1. 时, 分别将相位增量( 频率控制字) 和初始相位( PH ASE OFFSET)读入, 在CE 有效(CE 为- 1. ) 后的一个时钟周期内输出DDS 数据, 同时RDY 有效。

3 可调正弦信号发生器的设计
基于IP CORE 的可调正弦信号发生器电路主要由4部分组成, 分别为FPGA、CPU、DAC 和有源滤波电路, 主要功能芯片指标参数和开发环境分别如表1 和表2 所示。


在Core Generator 生成独立DDS IP CORE 后, 运用component 和Port map 语句即可实现对DDS IP CORE dds1 的调用:

3. 1 频率调节
通过修改DDS 的控制字即可实现输出频率的调节, 本电路设计的频率输出范围为300~ 600 Hz, DDS 时钟f clk为10 MHz, 由外部有源50 MHz 晶振提供, 经FPGA 内部5 分频得到, DDS 相位累加器宽度BH(n) 为28 bits。根据式( 1 ), 可计算出相应的频率控制字范围为8053110 ~16106110 , 由DSP 将控制字发送给FPGA 实现频率的调节。据式( 2) 可知, 本设计的频率分辨率为0. 04 Hz。
3. 2 相位调节
由于本例中IP CORE 的密封性, 不能实现对直接累加寄存器D2 的操作, 通常通过改变累加寄存器的状态来实现相位调节的方法不适合本设计。考虑到DDS 时钟fclk也是影响相位的因素, 本设计采用/ 吞时钟0方法来实现对信号相位的调节。FPGA 中实现/ 吞时钟0调相的原理如图5 所示。

用DDS 数据输出最高位SINE( 7) 采用边沿触发方式触发DSP 中断INT0, 分频时钟Cclk 触发DSP 中断INT1。DSP 在INT0 相邻两次中断时间内, 对Cclk 进行计数得到一个波形周期内计数值N360 , 此数值对应相位为360b。0~ 360b之间的任意相位H对应的计数值N H 可以由此得到。当调整相位时, DSP 将NH 写至FPGA 中定义的预置减法计数器, 计数器开始计数, 当计数器输出Qn ~ Q0 不全为零时, 与门A1 输出为- 0. ,DDS 停止运行; 当计数输出Qn ~Q0 全为零时, 计数器停止计数, 等待下一次预置值, 与门A1 输出fclk= Cclk, DDS 继续运行, 此时波形相位已延迟了H。本设计相位分辨率为0. 02b。
3. 3 幅度调节
输出波形的重构与幅度调节是通过双通道DAC 芯片TLC7528 实现的, 原理图如图6 所示。DAC 采用直通模式( 使能CS 信号和写WR 信号已经接地) , 通道A 的输出作为通道B 的参考电压来控制通道B 的输出幅度。通道A、B 根据通道选择信号select 分时使用总线DB, 其VHDL 语言描述为:
DB< = Sine when ( select = c 1c) else ( others = >Amp) , ( Amp 为通道A 输出幅度值) 。通道A 的参考电压为+ 5 V, 电压调节分辨率为5/ 255 U0. 02 V, 即通道B波形幅度控制精度为0. 02 V。

4 系统测试及分析
DSP 控制FPGA 在300~ 600 Hz 范围内每间隔50 Hz输出两路正弦信号( 其中一路为参考信号) , 输出负载阻抗为50 8 , 用频率相位计( Powert ek SD1000) 和数字存储示波器( Tektronix 2012B) 分别测量正弦信号输出频率、相位和幅度, 测量结果见表3。结果表明: 电路输出的300~600 Hz正弦信号频率误差小于0. 07 Hz, 相位误差小于0. 11b, 幅度误差小于0. 04 V, 失真度、稳定度、分辨率完全达到预期设计要求。同时, 基于IP CORE 的设计方法相对于传统设计方法节约了硬件资源, FPGA 资源使用情况如表4 所示。


5 结 论
采用FPGA 器件进行DDS 设计是一种高效和便捷的方法, 而基于FPGA IP CORE 的设计方法比传统方法进一步减少了程序代码量、节约了FPGA 的逻辑资源, 并且具有很好的可移植性, 为基于FPGA 的DDS 开发提供了一个新的设计思路, 有着广阔的应用前景。
作者:张献伟,任志良,陈 光, 王 华,
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表