图6 核心控制模块设计图
顶层的设计主要包括编辑顶层文件、创建工程、全程编译、仿真、了解时序分析结果、引脚锁定等等。顶层设计采用自上而下的设计方法,利用Quartus II的原理图输入法进行顶层设计的输入。根据基本DDS原理框图作出的电路原理图的顶层设计,其中包括四个元件和一些接口。
在Quartus II中分别建立DDS的顶层文件DDS_VHDL.vhd和底层模块文件,底层模块包括32位加法模块ADDER32B.bdf、32位寄存器模块REG32B.bdf、ROM查找表模块data_rom.bdf、锁相环PLL20。
由于高性能的嵌入式模拟锁相环PLL包含在Cyclone系列的FPGA中,且可以同步与一输入的单位脉冲信号,并以其作为参考信号实现锁相,所以可以输出一到多个同步分频或者倍频的片内时钟,以应用于逻辑系统。相对于某一输出时钟,Cyclone系列的锁相环能对输入的参考时钟同步,即独立乘以或除以一个因子而输出含小数的精确频率,或直接输入所需要输出的频率,并提供输出信号占空比和任意相移。与直接来自片外的时钟脉冲相对比,这种片内时钟不仅可以改进时钟的建立时间和保持时间,而且可以减少时钟延时和时钟变形,减少外部干扰,这就是保证系统稳定高速工作的重要原因。
32位加法器和32位累加器共同构成32位相位累加器,其中其高10位[31…22]作为波形存储器ROM的地址,说明了该波形存储器放置了一个周期为1024个点的波形数据,精度为10位,所以输出10位DAC[9…0]与实验系统的高速DAC相接。锁相环PLL20M的输入是20MHz,输出是75MHz,FWORD是频率控制输入,为了实验方便,选择输入8位,加法器的32位的其他位挂接在固定电平上。输出DAC_CLK作为外部DAC工作时钟。
本设计在DDS技术工作原理的基础上通过VHDL硬件描述语言实现信号源的产生,使用了Quartus II中的Mega Wizard Plug-In Manager来生成一个波形存储器ROM,即利用LPM(Library of Parameterized Modules,参数可设置模块库)宏功能模块,选择LPM库中的适当模块,并为其设定适当的参数,方便地调用了已有的设计成果,当然也可通过VHDL例化生成。
本次设计的部分核心就在于利用宏功能模块生成波形存储器ROM查找表模块,使得所需要的波形数据通过.mif文件载入到定制模块data_rom模块中,当在波形存储器ROM中固化所需波形的一个周期的幅度值后,由地址发生器产生的地址对波形存储器ROM寻址,依次可取出送至D/A转换及滤波后即可得到所需的模拟波形输出,就可以实现DDS中波形存储器的功能。
在波形存储器ROM查找表模块data_rom中采用了定制初始化数据文件,Quartus II能接受的ROM模块中的初始化数据文件的格式有两种:Memory Initialization File文件(.mif文件)格式和Hexadecimal(Intel-Format)File文件(.hex文件)格式,本次设计采用.mif格式。关于建立.mif格式文件,比较简便的方法是利用.mif文件生成器,将参数设置成如图7所示,然后保存,再运行保存的.mif文件,这样就能产生用户所需要的函数波形数据。
图7 .mif生成器的参数设置
用Quartus II打开.mif文件,如图8所示。
图8 打开.mif文件
3.3 D/A转换模块
信号经过波形存储器完成相-幅转换之后,输出的信号是数字量,信号处理后的结果往往要转换为实际的模拟量,以便实现对被控对象的控制,这种将数字量转换为模拟量的过程称为D/A转换(数模转换)。将数字形式的波形幅值转换成所需要合成频率的模拟形式信号就是数模转换器的作用[11,12]。DAC输出的信号并不能真正连续可变的,而一般是以DAC输出的信号的绝对分辨率为最小单位,所以其输出实际上是一个阶梯波,如图9所示。 基于FPGA的任意波形发生器设计+电路图+仿真图(5):http://www.751com.cn/tongxin/lunwen_508.html