(2)锁相环PLL20的输入是20MHz,输出是75MHz。
(3)FWORD是频率控制字输入,为了实验方便,选择输入8位,加法器的32位的其他位挂接在固定的电平上。
(4)输出DAC_CLK用来作为外部DAC工作时钟[12]。因为THS5651是高速DAC,需要给它接一个与数据输入频率相同的工作时钟驱动。
5.3 波形产生模块设计
FPGA中的波形发生控制电路,是通过外来控制信号和高速时钟信号,向波形ROM送入地址信号,输出波形的频率由送入的地址信号的速度决定。当以固定频率扫描输出地址时,模拟输出的频率是固定频率;如果以周期性扫描输出地址,那么波形的输出是扫频信号。波形ROM中存有发生器的波形数据,如正弦波、方波和三角波数据等。当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据。地址变化的越快,则数据输出的越快,也就是D/A输出的模拟信号的变化速度越快。
本设计使用的是用FPGA设计出ROM,在FPGA中存放波形数据,这里用到了Ouartus II中的Mega Wizard Plug—In Manager调用LPM_ROM模块生成波形存储ROM[13]。根据设计的要求,通过设置,就可以生成一个ROM的IP核。当在波形ROM中固化所需波形的一个周期的幅度值后,由地址发生器产生的地址对波形ROM寻址,并将其依次取出送至D/A转换器,再经过滤波得到所需要的模拟波形。
在data_rom设计中用到了定制初始化数据文件,定制ROM查询表需要在软件Ouartus II能接受的LPM_ROM模块中的初始化数据格式有.mif或.hex文件,这两种文件可由多种工具获得,如Quartus II的Text File编辑器、Matlab、DSP Builder、Keil编译器、专用MIF生成器等工具。本文选用专用MIF生成器得到正弦波数字幅度值的.mif文件,专用MIF生成器波形设置图如图10所示。
图10 专用MIF生成器波形设置图
专用MIF生成器中对于波形参数的设置,采样频率相对越高波形越好,这里选择1000Hz,格式选择十751进制,数据位宽为10位,数据长度选取1024个采样点。另外,专用MIF生成器中含有固定的自动波形绘制,包括正弦波、方波、三角波和锯齿波。还含有手动绘制波形功能,可以绘制想要的任意波形。波形参数的设置也可以任意设置所需要的。设置好需要的波形和参数后,通过向调用的LPM_ROM种载入.mif文件,生成任意波形数据[14],所以DDS可以产生任意频率的波形。而对于任意波形的生成,只要改变ROM查找表中的数据就可以实现。如将正弦波生成的数据以.mif的格式保存好,在Quartus II中打开。其正弦波形数据MIF文件如图11所示。
图11 正弦波形数据MIF文件
载入了.mif文件就可以生成ROM元件图供顶层原理图调用,其中输入和输出的数据位宽都是10位[15]。需要输出正弦波、方波和三角波等标准波形,则用专用MIF生成器直接在设定波形一栏选定需要的波形,参数设置后,保存生成.mif文件,以供波形ROM调用。定制的波形ROM元件如图12所示。
图12 波形ROM元件图
想要输出任意波形,只需要改变ROM表的数据,即通过专用MIF生成器中手动绘制功能来得到任意波形。本设计用正弦波产生作为代表,给出仿真结果,来说明基于FPGA的DDS信号发生器的功能和性能。
6. 仿真结果
波形数据ROM直接来自相位累加器,所以用于基准正弦信号输出,对于频率控制字FWORD给出的不同值(23H至5CH),对应每一个时钟所输出的采样点的步幅变化有很大的不同。对于FWORD=23H,采样点的步幅变化较小;而当FWORD=5CH时,步幅变化就大多了。频率控制字为23H时的正弦波仿真图如图13所示。
图13 频率控制字为23H时的正弦波仿真图 信号发生器的FPGA设计与实现+仿真图(6):http://www.751com.cn/tongxin/lunwen_500.html