直接数字频率合成器Word文档下载推荐.docx
《直接数字频率合成器Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《直接数字频率合成器Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
![直接数字频率合成器Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2022-11/28/d350d5c0-c44e-483d-b1b4-01437f7854f1/d350d5c0-c44e-483d-b1b4-01437f7854f11.gif)
6
调试,仿真及下载·
12
结论·
13
1.设计要求
基本要求:
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、自己添加其他功能。
2、方案论证
直接数字频率合成器(DirectDigitalFrequencySynthesizer)是一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术。
dds的组成及工作原理:
每来一个CLOCK,加法器就将频率控制字f与累加寄存器输出的累加相位数据相加,相加的结果又反馈送至累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。
这样,相位累加器在时钟作用下,不断对频率控制字进行线性相位累加。
由此,相位累加器在每一个时钟脉冲输入时,把频率控制字累加以此,相位累加器输出的数据作为波形存储器的相位取样地址,这样就可把存储在波形存储器内的波形抽样值进行找表查出,完成相位到幅值的转换。
由于相位累加器为N位,相当于把正弦信号在相位上的精度定为N位,所以分辨率为1/2N。
若系统时钟频率为fc,频率控制字f为1,则输出频率为fOUT=fC/2N,这个频率相当于"
基频"
。
若f为K,则输出频率为:
fout=K*fC/2N
当系统输入时钟频率fC不变时,输出信号的频率由频率控制字K所决定。
由上式可得:
K=2N*fout/fC
其中,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"
math.h"
intmain(intargc,char*argv[])
{
inti;
doubles;
for(i=0;
i<
4096;
i++)
{
s=sin(atan
(1)*8*i/4096);
printf("
%d:
%x;
\n"
i,(int)((s+1)*1023/2));
}
return0;
}
上述程序编译后,生成一个可执行文件rogen.exe,在DOS命令下执行:
rogen>
sine.mif
生成sine.mif文件,再加上*.mif文件的头部说明即可,
格式如下:
DEPTH=4096;
WIDTH=10;
ADDRESS_RADIX=DEC;
DATA_RADIX=HEX;
CONTENT
BEGIN
......-----ROM中的数据,每个占用一行
......
END
然后设定LPM-ROM
在元器库中选取LPM-ROM,设置ROM的信息,数据宽度为10bits,数据个数为4096;
设置ROM为寄存器输出,不需要时钟和异步清零信号;
指定ROM的初始化数据来源,选择刚刚所生成的mif文件。
然后点击“finish”即可生成ROM单元了。
器件图如下:
6、显示电路
由于译码器一次只能输入一个数字的7位控制信号进入系统,为了使8个数字同时亮,则需要用到计数器与若干选择器,将想要输入系统的信号轮流送入。
电源接通,1khz的clk接入,计数器开始工作,产生0—7以控制8个数字同时亮。
7、测频电路
测频就是计算1秒钟内脉冲的个数。
我们利用计数器和锁存器实现这一功能。
由于累加器以频率控制字K为间隔,当累加器满量时就会产生一次溢出,完成一次周期性的动作,这个周期也就是DDS信号的一个频率周期,所以将累加器的最高位作为测频电路技术器的脉冲。
将1HZ的时钟信号二分频,得到0.5Hz。
将0.5Hz脉冲送入锁存器的时钟端,0.5Hz反相延时后的脉冲送入计数器的清零端。
这样就使计数器在2s的脉冲周期内,1s内清零,1s内计数。
由于锁存器的脉冲和计数器的脉冲是反相的,且有一定的延时,所以当锁存器有效脉冲来到时,计数器是清零状态,锁存器就锁存前1s内计数器的计数信号。
这样就完成了1s内的脉冲计数,再将锁存器的输出送入译码显示电路,就可以在数码管上显示波形频率了。
原理图如下:
电路图如下:
8、总电路
将累加器所得与k与p进行处理,以实现对相频的控制,再送入rom地址端,为了实现多波形输出,对开关输入信号进行判别,根据不同情况送入不同rom以实现多波形输出。
最后再合并上显示电路与测频电路。
4、调试,仿真及下载
调试
先保存,将上述电路以字母输入方式输入并保存在工程文件夹中。
再将文件置顶,最后进行编译,在主菜单中选择processing项,在弹出的对话框中选择Startcomplication键,则编译开始。
在编译过程中,若有任何信息、错误和警告消息,都将显示在自动打开的Message-Compiler窗口中;
若由于文件出错而没有通过,则需要返回原文件进行修改,修改后存盘,再编译直至文件通过。
仿真
新建一个“VectorWaveformfile”文件,并在下拉列表中选.vwf扩展名,生成波形文件。
右键单击,在弹出的菜单中选EnterNodesFromeSNF,在弹出的对话框中选择要观测的节点。
选Option\GridSize和Time,设置相应选项,并给输入引脚加上适当的信号。
然后,选保存。
接着选择主菜单中的Simulator项,打开模拟器,点击Start开始仿真。
其中dds的cos部分仿真结果如下图所示:
Sin部分如下图所示:
下载
1.在device&
pin中,configuration标签页,采用串行配置器件EPCS4的主动配置方式。
在unusedpins标签页,进行没有使用管脚的配置,设置为高阻输入,避免损坏。
2.选择processing-startcompilation进行全程编译。
5、结论
同时输入正弦余弦波:
同时输入正弦波与方波:
同时输入正弦波与三角波:
相位改变功能演示:
测频功能检测:
(单位hz)
频率控制字
理论输出频率
示波器显示频率
测频显示频率
1
244.1
244.032
244
1464.8
1464.239
1464
15
3662.1
3662.091
3661
误差均在允许范围内。
六、遇到的问题和解决方法
想做位相控制的位拓展,将原模16换成模64,原是低四位或者高四位相加,改为低8位或者高8位相加,实现了功能拓展。
7、实验感想
本次实验是对我们数电能力实际应用的一次考验,通过这次实验我们灵活运用了我们所学习过的知识,尝试了自主探究与创新。
这是我们经历过的最长的一个单项实验,整整一周的时间里我们独立设计出了一个dds,遇到很多问题,通过独立探索或者与他人的交流讨论我们克服了困难并作出了成果。
本次实验里我学习到了创新的精神以及活学活用的道理。
参考文献
1.蒋立平编著.《数字电路》.南京理工大学出版社
2.南京理工大学电子技术中心编.《EDA设计实验指导书》
3.付文红、花汉兵编著.《EDA技术与实验》.机械工业出版社