查询表把输入的地址相位信息映射成正弦波幅度的数字量信号,驱动DAC,输出模拟量。我们已知在FPGA的芯片上的D/A的输入为8位而输出有10位,符合的设计要求。
3.3 相位累加器模块的论证与选择
DDS系统的核心是相位累加器,它由一个加法器和一个相位寄存器组成;每来一个时钟,相位寄存器以步长增加,相位寄存器的输出与频率控制字(M)相加,然后输入到正弦查询表地址上。
3.4 相位寄存器模块的论证与选择
将累加器的高8位输入给相位寄存器,用来寻址Sin表,然后输出波形。
3.5 频率控制字M转码输出模块的论证与选择
用5个除法器对m进行转码,m经过一个除法器之后,余数作为10进制数M的第一位,商输入第二个除法器,依次类推,总共用到5个除法器。
2
3.6 输出频率转化输出模块的论证与选择
方法相同,也是用5个除法器来实现10进制的输出。
3.7输出选择模块的论证与选择
方案一:
用系统自带的数据选择器lpm_mux对输出进行选择 方案二:
自己编写一个数据选择的程序。
方案选择:方案一稍微方便一些,但是方案二写程序也很简便,而且灵活性大,所以这里我采用方案二实现。
四、系统理论分析与计算
4.1 理论分析
为了更加容易控制输出频率的改变,可以采用相位累加器的方式,使输出的频率正比于时钟频率和相位增量之积。如下图所示为本次设计实际采用的设计图:
图2.2 DDS基本原理结构框图
? 工作过程:
将存于数表中的数字波形,经D/A转换器和滤波,形成模拟量波形. ? 改变输出信号的频率:
? (1) 改变查表寻址的时钟频率, 改变输出波形的频率.
(2) 改变寻址的步长,改变输出信号的频率—DDS。
步长即为对数字波形查表的相位增量.由累加器对相位增量进行累加,累加器的值作为查表地址.
正弦波在相位上的精度定义为n,那么分辨相当于1/2n。用时钟频率fp依次读取数字相位圆周上各点,这里的数字值作为一个地址,读出相应的ROM中的数值,然后通过DAC重构成正弦波。这里多了一个相位累加器,它的作用是在读取数字相位圆周上的各点时可以每隔M个点读一个数值,M即为本次设计中的频率
3
控制字。这样DAC的输出频率fout应该满足如下的公式:
fout?M(fclk) n2上式中的fclk是DDS的系统工作时钟,n通常的取值范围在24~32,相位寄存器的输出一般在10~16位,若DAC为N位,则ROM的字长也需要选取N位。
2nfc输出正弦波的周期t0?tc,输出正弦比的频率:fo?mn
m2fo?2n频率控制字m?,0?m?2n?1
fc该DDS的最小分辨率?fmin?fc 2n4.2 理论计算
根据下面三个设计要求列出表达式: 1.分辨率优于1Hz
2. ROM表长度8位、位宽10位
3.输出频率优于100kHz(每周期大于50个点)
2n fcfcfo?mn?100000?fmin?n?1?5022m在实验中可取m的位数为20,n的位数取24位,根据这三个公式得出m最小取17位,
时钟频率fc取10mhz。
五、电路与程序设计 5.1 电路的设计
5.1.1 DDS信号源顶层图形设计
4
5.1.2系统电路原理图
(1)信号产生部分
(2)m转化部分
(3)f转化部分
5