一.实验目的:学习利用EDA技术和FPGA实现直接数字频率综合器DDS的设计。 二.实验设备:
1.电脑,quartus ii 集成开发环境
2.GX_SOPC_EP3C10_EDK系统
三.实验实训要求
1.使用quartus ii 集成开发环境完成直接数字频率综合器DDS的设计 2.利用GX_SOPC_EP3C10_EDK系统和电脑完成实验并观察波形
四.实验原理:参考6.12节。
图6-72是根据图6-71的基本DDS原理框图作出的电路原理图的顶层设计,其中相位累加器的位宽是32。图中共有六组元件模块和一些接口,说明如下:
图6-72 DDS信号发生器顶层原理图
(1) 32位加法器ADDER32。由LPM_ADD_SUB宏模块构成。设置了2级流水线结构,使其在时钟控制下有更高的运算速度和输入数据稳定性。
(2) 32位寄存器DFF32。由LPM_FF宏模块担任。ADDER32与DFF32构成一个32位相位累加器,其高8位A[31..24]作为波形数据ROM的地址。
(3) 正弦波形数据ROM。正弦波形数据ROM模块sin_8X8的地址线和数据线位宽都是8位。这就是说,其中的一个周期的正弦波数据有256个,每个数据有8位。其输出可以接一个洗瓶8位的高速DAC。ROM中的MIF数据文件可用专用软件工具获得,这里不再深入探讨。 (4) 频率控制字输入B[20..17]由计数器CNT4B产生。本来的频率控制字是32位的,但为了方便实验验证,把高于20和低于17的输入位预先设置成0或1。
频率控制字B[31..0]阳极化处理与由DAC[7..0]驱动的DAC的正弦信号频率的关系,可以由公式算出。其中fout为DAC输出的正弦波信号频率,fclk是CLK的时钟频率,直接输入是50MHz,接入锁相环后可达到更高频率。频率上限要看DAC的速度。如果接高速DAC,如10位的5651,输出速度可达180MHz。但应该注意,5651需要一个与数据输入频率相同的工作时钟驱动,这就是图6-72中的DAC_CLK,它用于作为外部mp3手表DAC的工作时钟。
当B[20..17]=0FH、01H时,DAC输出数据的速度有很大不同。
图6-73是图6-72电路的仿真波形。尽管这个波形只是局部的,但也能看出DDS的部分性能。
即随着频率字B[20..0]的加大,电路中ROM的数据输出的速度也将提高。
(5) DAC驱动数据口DAC[7..0]。如果外部DAC是DAC0832,只需将DAC[7..0]输出给0832即可,信号频率算法不变,而且要注意0832的速度只有1MHz。
五.实验内容
根据图6-72完成整体设计和仿真测试,深入了解其功能,并由仿真结果进一步说明DDS的原理。完成编译和下载,用嵌入式逻辑分析仪观察输出波形。
1.绘制并完成电路原理图
(1) 用LPM_ADD_SUB宏模块生成32位加法器ADDER32。
(2) 用LPM_FFa7075宏模块生成32位寄存器DFF32。
(3) 用ROM:1-PORT生成正弦波形数据ROM。
(4) 生成lut8x8.mif文件,实现8X8正弦波形文件,并写入ROM。
(5) 用LPM_COUNTER宏模块生成4位计数器,并用D触发器构成2进制分频器,生成逻辑分析仪所需时钟信号COUT。
(6) 用LPM_COUNTER宏模块生成4位计数器CNT4B,用作频率控制字,并将输入引脚定义为91,即GX_SOPC_EP3C10_EDK系统板的key1,产生从0H~FH的作频率控制字,是输出频率发生对应的变化。
(7) 用ATLPLL宏模块生成PLL电路,输出频率为20MHz,亦可生成更高的频率。
(8) 参考图6-72连接其他线路。
2. 用嵌入式逻辑分析仪观察输出波形
(1) 打开SignalTapII编辑窗口完成设置
选择cregFile→New命令,,在New窗口中选择SignalTap II Logic Analyzer File。单击OK按钮,即出现SignalTap II编辑窗口,如图4-30所示。
首先单击上排的Instance栏内的auto_signaltap_0,更改此名为dds,这是其为了调入待测信号名,在下栏的空白处双击,即弹出Node Finder窗口,再于Filter水麻叶栏选择“Pins: output",单击List按钮,即在左栏出现与此工程相关的所有输出信号。选择需要观察的信号名:4位输出总线F[3..0]、正弦输出总线信号PA[7..0]。单击OK按钮后即可将这些信号调入SignalTap II信号观察窗口。