直接数字频率合成器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子线路课程设计直接数字频率合成器
学号:
姓名:
2011年11月
摘要
本篇论文主要讲了用eda设计dds。用quartus 软件模拟仿真电路,并下载到芯片。使电路能输出正余弦波,并可调节频率和相位。并在这基础上进行一部分扩展,如能输入矩形三角形波。
关键词eda设计 dds quartus
Abstract:
This report introduces the EDA design is completed with Direct Digital Synthesis DDS process. This design uses DDS QuartusII 7.0 software design, and downloads SmartSOPC experimental system hardware.
Key word eda design dds quartus
目录
设计要求 (4)
方案论证 (4)
各子模块设计原理 (6)
调试,仿真及下载 (12)
结论 (13)
一.设计要求
基本要求:
1、利用QuartusII软件和SmartSOPC实验箱实现DDS的设计;
2、DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA芯片中的RAM 实现,RAM结构配置成212×10类型;
3、具体参数要求:频率控制字K取4位;基准频率fc=1MHz,由实验板上的系统时钟分频得到;
4、系统具有使能功能;
5、利用实验箱上的D/A转换器件将ROM输出的数字信号转换为模拟信号,能够通过示波器观察到正弦波形;
6、过开关(实验箱上的Ki)输入DDS的频率和相位控制字,并能用示波器观察加以验证;
提高部分:
1、通过按键(实验箱上的Si)输入DDS的频率和相位控制字,以扩大频率控制和相位控制的范围;(注意:按键后有消颤电路)
2、能够同时输出正余弦两路正交信号;
3、在数码管上显示生成的波形频率;
4、充分考虑ROM结构及正弦函数的特点,进行合理的配置,提高计算精度;
5、设计能输出多种波形(三角波、锯齿波、方波等)的多功能波形发生器;
6、基于DDS的AM调制器的设计;
7、自己添加其他功能。
二、方案论证
直接数字频率合成器(Direct Digital Frequency Synthesizer)是一种基
于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术。
dds的组成及工作原理:
每来一个CLOCK,加法器就将频率控制字f与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加以此,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值进行找表查出,完成相位到幅值的转换。
由于相位累加器为N位,相当于把正弦信号在相位上的精度定为N位,所以
分辨率为1/2N。若系统时钟频率为f
c ,频率控制字f为1,则输出频率为f
OUT
=f
C
/2N,
这个频率相当于"基频"。若f为K,则输出频率为:
f out =K* f
C
/2N
当系统输入时钟频率f
C
不变时,输出信号的频率由频率控制字K所决定。由上式可得:
K=2N*f
out /f
C
其中,K为频率字,注意K要取整,有时会有误差。
DSS工作流图:
三、各子模块设计原理
1、分频器
实验中需要有1mhz,1khz,2hz,0.5hz的输入信号,而实验像仅能提供48mhz 的输入信号,故需要分频。实验中拟用74163制作3分频,3片74160分别制作1k分频与500分频,用4片触发器做16分频。
16分频:
3分频:
1k分频:
500分频:
2、加法器
加法器的目的,其一是作为累加器的一部分,将k进行累加,其二是作为频率控制与相位控制电路的一部分,调整输入给rom的12位地址。
3、寄存器
寄存器的目的,是使加法器出来的结果稍作停留,以便传递给rom的地址位或者是回传给加法器成为加数。
4、累加器
相位累加器的组成= N位加法器+N位寄存器
相位累加器的作用:在时钟的作用下,进行相位累加
注意:当相位累加器累加满量时就会产生一次溢出,完成一个周期性的动作。
5、rom的制作
作用:进行波形的相位—幅值转换。
原理:
ROM的N位地址
把0O—360O的正弦角度离散成具有2N个样值的序列
ROM的D位数据位
则2N个样值的幅值量化为D位二进制数据
以正弦为例:
首先用VC程序产生rom数据值,程序如下:
#include"stdio.h"
#include"math.h"
int main(int argc,char*argv[])
{
int i;
double s;
for(i=0;i<4096;i++)
{
s=sin(atan(1)*8*i/4096);
printf("%d:%x;\n",i,(int)((s+1)*1023/2));
}
return 0;
}
上述程序编译后,生成一个可执行文件rogen.exe,在DOS命令下执行: rogen>sine.mif
生成sine.mif文件,再加上*.mif文件的头部说明即可,