直接数字频率合成器课设DDSWord文档下载推荐.docx
《直接数字频率合成器课设DDSWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《直接数字频率合成器课设DDSWord文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
DDS技术具有频率切换时间短,频率分辨率高,频率稳定度高,输出信号的频率和相位可以快速控切换,输出相位可连续,可编程以及灵活性大等优点,它以有别于其他频率合成方法的优越性能和特点成为现代频率合成技术的姣姣者。
DDS广泛用于接受机本振、信号发生器、仪器、通信系统、雷达系统等,尤其适合跳频无线通信系统。
一、设计任务与要求
设计任务:
学习利用EDA技术和FPGA实现直接数字频率合成器DDS的设计。
设计要求:
1.详细叙述DDS的工作原理。
2.画出DDS基本原理组成框图。
3.DDS的FPGA实现设计。
4.编写VHDL主要源程序。
5.完成系统仿真和硬件验证。
二、总体框图
直接数字频率合成器程序设计可以有多种的方法来实现,其中所用到的器件和很多基本的算法好思想都是相同的,DDS的工作原理是一致的,只是根据不同的硬件,具体的方法有所区别。
在此次直接数字频率合成器的设计中预先有两种设计方案:
方案一:
如图1—1所示:
1.频率控制字M和相位控制字分别控制DDS输出正(余)弦波的频率和相位。
2.相位累加器是DDS系统的核心,它是由一个N位字长的加法器和一个N位相位寄存器组成,作用是对频率控制字进行线性累加,每来一个时钟脉冲,相位寄存器以步长M增加。
相位寄存器的输出与相位控制字相加,其结果作为正(余)弦查找表的地址。
3.正(余)弦查找表由ROM构成,内部存有一个完整周期正弦波的数字幅度信息,每个查找表的地址对应正弦波中0~360
°
范围内的一个相位点。
查找表把输入的地址信息映射成正(余)弦波的数字幅度信号,同时输出到数模转换器D/A的输入端。
4.D/A转换器输入的是数字量,经转换后输出的是模拟量。
有关D/A转换器的技术性能指标很多,例如分辨率、建立时间、接口形式、偏移量误差以及线性度等等。
分辨率是D/A转换器对输入量变化的敏感程度,与输入数字的位数有关,数字量位数越多,分辨率也就越高,亦即转换器对输入量变化的敏感程度也就越高。
使用时,应根据分辨率的需要来选定转换器的位数。
DAC常可分为8位、10位和12位三种。
本设计使用8位D/A转换器。
方案一有关设计框图:
图1—2DDS内部组成框图
方案二:
DDS基本原理框图如图1—1所示,方案二有关设计DDS.vhd顶层原理框图如图1—3所示:
图1—3DDS.vhd顶层原理图
图1—3中共有四个元件,其中:
1.波形数据ROM:
其中放置一个周期为1024个点的正弦信号波形数据,精度10位,所以输出10位与实验系统的高速DAC相接。
2.锁相环PLL20M的输入是20MHz(利用实验系统提供的时钟),输出是75MHz(根据实验需要选择)。
3.FWORD是频率控制字输入,为了实验方便,选择输入8位,加法器的32位的其它位挂接在固定电平上。
4.输出DAC_CLK用于作为外部工作时钟。
以上为设计时的两套方案,在实际操作实施过程中采用方案一。
三、器件选择
在该方案设计时要采用的器件有:
加法器,寄存器,D/A转换器芯片AD558,CPLD/FPGA芯片,示波器。
1.CPLD/FPGA芯片:
在现代电子系统中,数字系统所占的比例越来越大。
系统发展的越势是数字化和集成化,而CPLD/FPGA作为可编程ASIC(专用集成电路)器件,它将在数字逻辑系统中发挥越来越重要的作用。
2.主芯片EPF10K10LC84-4:
功能简介:
因内含SRAM,可在系统进行无限次实验。
资源配备:
引脚84,最大用户I/O,引脚59,可用门数目10000,宏单元数目576,逻辑阵列块数目72,电源电压5V,最高时钟频率150MHz,输出电流I(OH)/I(OL)4mA/12mA。
3.D/A转换器芯片AD558:
AD558如图1—4所示,是一款完整的电压输出8位数模转换器,它将输出放大器、完全微处理器接口以及精密基准电压源集成在单芯片上。
无需外部元件或调整,就能以全精度将8位数据总线与模拟系统进行接口。
AD558提供四种性能等级产品。
AD558J和AD558K的工作温度范围为0°
C至+70°
C,AD558S和AD558T则为-55°
C至+125°
C。
J级和K级可采用16引脚塑料(N)或密封陶瓷(D)DIPS封装,也可采用20引脚JEDEC标准PLCC封装。
S级和T级均采用16引脚密封陶瓷DIP封装。
AD558特性
完整8位DAC
电压输出:
两种校准范围
内部精密带隙基准电压源
单电源供电:
+5V至+15V
完全微处理器接口
快速建立时间:
1±
s内电压达到±
1/2LSB精度
低功耗:
75mW
无需用户调整
在工作温度范围内保证单调性
规定了Tmin至Tmax的所有误差
小型16引脚DIP和20引脚PLCC封装
激光晶圆调整单芯片供混合使用
图1—4数模转换器AD558
4示波器:
示波器是一种能把随时间变化的过程用图像显示出来的电子仪器。
用它来观察电压(或转换成电压的电流)的波形,并测量电压的幅度、频率和相位等。
因此,示波器被广泛地应用在无线电测量中。
示波器的种类很多,但它们都包含下列基本组成部分,如图1—5所示。
图1—5示波器基本组成部分
四、功能模块
1.相位累加器SUM99:
模块如图1—6所示
图1—6相位累加器SUM99
(1)相位累加器SUM99模块功能:
是一个带有累加功能的6位加法器,它以设定的6位频率控制字K作为步长来进行加法运算,当其和满时,计数器清零,并进行重新运算。
(2)相位累加器SUM99模块所用VHDL程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSUM99IS
PORT(K:
INSTD_LOGIC_VECTOR(5DOWNTO0);
CLK:
INSTD_LOGIC;
EN:
RESET:
OUT1:
OUTSTD_LOGIC_VECTOR(5DOWNTO0));
ENDENTITYSUM99;
ARCHITECTUREARTOFSUM99IS
SIGNALTEMP:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(CLK,EN,RESET)IS
IFRESET='
0'
THEN
TEMP<
="
000000"
;
ELSE
IFCLK'
EVENTANDCLK='
1'
IFEN='
=TEMP+K;
ENDIF;
OUT1<
=TEMP;
ENDPROCESS;
ENDARCHITECTUREART;
(3)模块功能仿真:
如图1—7所示
图1—7相位累加器SUM99模块功能仿真图
(4)分析:
由图1—7中得知,
2.相位寄存器REG1:
模块如图1—8所示
图1—8相位寄存器REG1
(1)相位寄存器REG1模块功能:
是一个一般的6位寄存器,它对输入端输入的数据进行寄存,当下一个时钟到来时,输出寄存的数据。
(2)相位寄存器REG1模块所用VHDL程序:
ENTITYREG1IS
PORT(D:
Q:
ENDENTITYREG1;
ARCHITECTUREARTOFREG1IS
PROCESS(CLK)IS
IF(CLK'
)THEN
Q<
=D;
如图1—9所示
图1—9相位寄存器REG1模块功能仿真图
由图1—9中得知,
3.正弦查找表SIN(ROM):
模块如图1—10所示
图1—10正弦查找表SIN(ROM)
(1)正弦查找表SIN(ROM)模块功能:
是DDS最关键部分,也是最复杂的部分,设计时首先需对正弦函数进行采样,接着讲采样结果放到ROM模块的对应存储单元中,每一位地址对应一个数值,输出为8位。
首先利用MATLAB或C语言编程对正弦函数进行采样,然后对采样数据进行二进制转换,其结果作为查找表地址的数值。
参照EDA技术使用教程课本P163-164方法,用C语言编写的正弦函数数据采样集程序如下:
#include“stdio.h”
#include“math.h”
Main()
{intI;
Floats;
For(i=1;
i<
1024;
i++)
{s=sin(actan
(1)*8*i/1024);
Printf(“%d,%d;
\n”,(int)((s+1)*1023/2));
}
然后将得到的所需波形数据数据填入MIF文件表中,如图1—11所示表。
利用MegaWizardPlug-InManager定制正弦信号数据ROM宏功能块,并将以上波形数据加载于此ROM中。
具体步骤参考课本P165。
图1—11波形数据MIF文件表
(2)正弦查找表模块所用VHDL程序:
--megafunctionwizard:
%LPM_ROM%
有省略部分——
LIBRARYieee;
USEieee.std_logic_1164.all;
LIBRARYaltera_mf;
USEaltera_mf.all;
ENTITYromIS
PORT
(
address:
INSTD_LOGIC_VECTOR(5DOWNTO0);
clock:
INSTD_LOGIC;
q:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)
);
ENDrom;
ARCHITECTURESYNOFromIS
SIGNALsub_wire0:
STD_LOGIC_VECTOR(7DOWNTO0);
COMPONENTaltsyncram
GENERIC(
address_aclr_a:
STRING;
init_file:
intended_device_family:
lpm_hint:
lpm_type:
numwords_a:
NATURAL;
operation_mode:
outdata_aclr_a:
outdata_reg_a:
widthad_a:
width_a:
width_byteena_a:
NATURAL
PORT(
clock0:
address_a:
q_a:
ENDCOMPONENT;
BEGIN
q<
=sub_wire0(7DOWNTO0);
altsyncram_component:
altsyncram
GENERICMAP(
address_aclr_a=>
"
NONE"
init_file=>
rom.mif"
intended_device_family=>
Cyclone"
lpm_hint=>
ENABLE_RUNTIME_MOD=NO"
lpm_type=>
altsyncram"
numwords_a=>
64,
operation_mode=>
ROM"
outdata_aclr_a=>
outdata_reg_a=>
CLOCK0"
widthad_a=>
6,
width_a=>
8,
width_byteena_a=>
1
)
PORTMAP(
clock0=>
clock,
address_a=>
address,
q_a=>
sub_wire0
ENDSYN;
后面的程序略。
如图1—12所示
图1—12正弦查找表仿真图
由图1—12中得知,
五、总体(顶层)电路原理图
1.总体(顶层)电路原理图,如图1—13所示
图1—13DDS.vhd顶层原理图
根据图1—13,输入信号有时钟输入CLK,时能端EN,复位端RESET,频率控制字K,输出信号为Q。
整个系统各个模块是在同步时钟信号CLK的控制下协调工作的。
(2)整体仿真结果:
如图1—14
图1—14DDS仿真图
有仿真结果可验证输出的数据是正确的所需波形数据。
(3)管脚分配图:
如图1—15
图1—15管脚分配图
(4)EDA实验箱验证结果:
如图1—16所示
图1—16输出波形