实验八 直接数字式频率合成器(DDS )程序设计与仿真实验
1 实验目的
(1) 学习利用EDA 技术和FPGA 实现直接数字频率合成器的设计。
(2) 掌握使用Quartus Ⅱ原理图输入设计程序。
2 实验仪器
(1)GW48系列SOPC/EDA 实验开发系统
(2)配套计算机及Quartus II 软件
3 实验原理
直接数字频率合成技术,即DDS 技术,是一种新型的频率合成技术和信号产生方法。
其电路系统具有较高的频率分辨率,可以实现快速的频率切换,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数控调制。
传统的生成正弦波的数字是利用—片ROM 和一片DAC ,再加上地址发生计数器和寄存器即可。
在ROM 中,每个地址对应的单元中的内容(数据)都相应于正弦波的离散采样值,ROM 中必须包含完整的正弦波采样值,而且还要注意避免在按地址读取ROM 内容时可能引起的不连续点,避免量化噪音集中于基频的谐波上。
时钟频率f clk 输入地址发生计数器和寄存器,地址计数器所选中的ROM 地址的内容被锁入寄存器,寄存器的输出经DAC 恢复成连续信号,即由各个台阶重构的正弦波,若相位精度n 比较大,则重构的正弦波经适当平滑后失真很小。
当f clk 发生改变,则DAC 输出的正弦波频率就随之改变,但输出频率的改变仅决定于f clk 的改变。
为了控制输出频率更加方便,可以采用相位累加器,使输出频率正比于时钟频率和相位增量之积。
图1所示为采用了相位累加方法的直接数字合成系统,把正弦波在相位上的精度定为n 位,于是分辨率相当于1/2n 。
用时钟频率f P 依次读取数字相位圆周上各点,这里数字值作为地址,读出相应的ROM 中的值(正弦波的幅度),然后经DAC 重构正弦波。
这里多了一个相位累加器,它的作用是在读取数字相位圆周上各点时可以每隔M 个点读一个数值,M 即力图1中的频率字。
这样,DAC 输出的正弦波频率f sin 就等于“基频” f clk 1/2n 的M 倍,即DAC 输出的正弦波的频率满足下式:
)2(sin n clk f M f (1)
这里,f clk 是DDS 系统的工作时钟,式(6-1-1)中的n 通常取值在24~32之间,由图1可知,
相位分辨率至少是1/16777216,相当于2.146x10-5度。
相位增量值可预置,通过相位累加器,选取ROM的地址时,可以间隔选通。
相位寄存器输出的位数一般取10—16位,这是截断式用法,以减少ROM的容量。
假定用16位,最大相位不连续相当于96dB。
若DAC的位数为N位,则所用ROM的字长也为N。
图1 DDS基本结构
如图1所示的DDS基本原理组成框图结构特点如下:其中clk来自为高稳性晶振或由PLL提供,用于提供DDS各种部件的同步工作。
DDS核心的相位累加器由—个N位字长的二进制加法器和一个有时钟f clk取样的N位寄存器组成,作用是对频率控制字进行线性累加:波形存储器中所对应的是一张函数波形查询表,对应不同的相位码址输出不同的幅度编码。
当相位控制字为0,相位累加输出的序列对波形存储器寻址,得到一系列离散的幅度编码,相位累加器位宽和采样点关系如图2所示。
该幅度编码经D/A转换后得到对应的阶梯波,最后经低通滤波器平滑后可得到所需的模拟波形。
相位累加器在基准时钟的作用下,进行线性相位累加,当相位累加器加满量时就会产生一次溢出,这样就完成了一个周期,这个周期也就是DDS信号的一个频率周期。
图2 相位累加器位宽和采样点关系
4 实验内容
图3是根据图1的基本DDS原理框图做出的电路原理图的顶层设计,其中相位累加器的位宽是32。
图中共有三个元件和一些接口,说明如下:
(1)32位加法器ADDER32.由LPM_ADD_SUB宏模块构成。
设置了2级流水线结构,使其在时钟控制下有更高的运算速度和输入数据稳定性。
(2)32位寄存器DFF32.由LPM_DFF宏模块担任。
ADDER32和DFF32构成一个32位相位累加器,其高10位A[31..25]作为波形数据的ROM的地址。
(3)正弦波形数据ROM。
正弦波形数据ROM模块sim_rom的地址线和数据线位宽都是10位。
这就是说,其中一个周期的正弦波数据有1024个,每个数据有10位。
其输出可以接一个10位的高速DAC;如果只有8位,可以截去低2位输出。
ROM中的MIF数据文件由mif_maker2010生成,使用方法见教材附录P413-414.
(4)频率控制字输入B[24..17].本来的频率控制字是32位,但为了方便实验验证,把高于24位和低于17位的输入预先设置成0或1.对于+5E系统,此8位数据可以由两个拔码开关控制输入。
(5)编译和下载。
选择模式5。
时钟频率CLK直接接入20MHZ。
输出DAC-CLK用于作为外部DAC工作时钟。
Clk接PIN_28,B[24..17]接PIN_240,239,238,237,236,235,234,233; ADC[9..2]接PIN_168,167,166,165,164,163,162,161。
图3 原理图
5.仿真波形
程序中部分模块仿真结果如下图所示。
①32位寄存器模块reg32仿真结果入图4所示,图中Load为数据装载信号。
图4 32位寄存器模块reg32仿真波形
图6 DDS仿真波形图
6 配置下载
启动Assignment Editor编辑器,并将配置文件下载。
7 Signal TapⅡ实时测试
操作步骤见教材第4章4.3节。
图6为嵌入式逻辑分析仪测试波形的结果。
注:PH为输出的正弦波,AA[24..31]为地址。
8.实验报告要求
(1)将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
(2)本次实验体会。