直接数字频率器DDS设计.docx
- 文档编号:7657261
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:17
- 大小:330.08KB
直接数字频率器DDS设计.docx
《直接数字频率器DDS设计.docx》由会员分享,可在线阅读,更多相关《直接数字频率器DDS设计.docx(17页珍藏版)》请在冰豆网上搜索。
直接数字频率器DDS设计
数字逻辑系统课程设计报告
设计题目:
直接数字频率器DDS设计
班级:
1211
姓名:
学号:
35
日期:
2014.12.8~2014.12.12
目录
1.设计任务与要求1
1.1设计任务1
1.2设计要求1
2.整体电路工作原理1
3.模块设计过程与仿真3
4.整体设计与分析10
5.下载与调试12
6.结论与心得15
7.参考文献15
设计任务与要求
设计任务
直接数字频率综合技术,即DDS技术,是一种新型的频率合成技术和信号产生方法。
利用EDA技术和FPGA实现直接数字频率合成器DDS的设计。
设计要求
掌握直接数字频率合成器的原理;
掌握直接数字频率合成器的设计方法;
学习嵌入式逻辑分析仪SignalTabII的使用方法;
通过实验箱上的开关输入DDS的频率控制字,并能用示波器观察加以验证;
DDS中的波形存储器模块用Altera公司的CycloneⅡ系列FPGA芯片中的ROM实现。
整体电路工作原理
一个数字频率合成器由相位累加器、加法器、波形存储ROM、D/A转换器、低通滤波器(LPF)构成。
DDS原理框图如图2-1所示。
图2-1DDS原理框图
其中,F为频率控制字,控制输出波形频率;N为相位取值精度,即将一个周期的波形分为2N个点,每个点对应相应的波形数据和相位,相位步进为(2π)/2N;P为相位控制字,控制输出波形相位;W为波形控制字,控制输出波形是正弦波还是方波等;S(N)为存储器ROM的地址线宽,即ROM内一共有2S(N)个储存单元用于存储几种波形各一个周期的波形数据,如果只存储一种波形数据,则存储单元数2S(N)=2N,如果存储两种波形数据,则2S(N)=2×2N,即每种波形需要2N个存储单元,与相位取值精度N将一个周期的波形分为2N个点对应起来;ROM内每个单元存储波形数据的宽度为M。
频率控制字F和相位累加器。
在系统时钟clk控制下,ROM存储的波形数据将不断被读取。
假设系统时钟频率是fc,则读完一个周期的波形数据需要的时间T=(1/fc)×2N,即输出波形频率f0=1/T=fc/2N。
频率控制字F又称为相位增量。
它的含义是每次读数时,将上一次ROM的地址增加F,即每隔F个点读取一次,如图2-2所示,这时相位增加F×(2π/2N)。
因为读完一个周期(即一个圆周)的波形数据,要比每隔一个点读取一次快F倍,所以通过频率控制字F后输出波形的频率变为f0=F×(fc/2N)。
当F=1时,DDS输出最低频率fc/2N;而DDS的最大输出频率是fc/2,即F=2N-1,由Nyquist采样定理决定。
只要N足够大,DDS就可以得到很细的频率间隔,即足够精度的频率分辨率fc/2N。
当然在F越大,取样点越少,频率越高的同时,波形越粗糙。
图2-2相位累加器输出
相位控制字P和加法器。
把相位累加器的输出与相位控制字P相加,相当于将需要取值的地址向后移动P个,则波形相位变化P×(2π/2N)。
波形控制字W和加法器。
在波形存储器ROM中的波形数据是分块存储的。
当波形控制字W改变时,波形存储器的地址输入为改变相位后的地址输出加上波形控制字W(不同波形存储的地址)。
如果相位精度N=8,则每种波形需要256个存储空间,两种波形需要512个存储空间。
设计者可以将正弦信号存储在0~255这256个存储空间中,而将方波信号存储在256~511这256个空间中。
那么可以设置控制信号WCTL,当WCTL=‘1’时,W=0,指向正弦信号;当WCTL=‘0’时,W=256,指向方波信号。
D/A转换器。
D/A转换器的作用是把从ROM中取出的波形数据转换为模拟量。
D/A转换也有一定的精度要求。
LPF。
D/A输出的波形为阶梯型,除了主频外,还存在非谐波分量,需要通过低通滤波器(LPF)取出主频,得到光滑的波形。
模块设计过程与仿真
频率控制模块,如图3-1所示。
该模块通过拨挡开关产生不同的频率控制字F,以便得到不同的输出频率的波形。
图3-1频率控制模块
FCT1.VHD源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYFCT1IS
PORT(
CLK:
INSTD_LOGIC;--系统时钟CLK,频率fc=1.5MHz
DIN:
INSTD_LOGIC_VECTOR(3DOWNTO0);--4位拨挡开关
ADD:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));--256个波形点对应数据
END;
ARCHITECTUREONEOFFCT1IS
SIGNALA:
STD_LOGIC_VECTOR(7DOWNTO0);
SIGNALF:
INTEGERRANGE0TO8;--频率控制符
BEGIN
P0:
PROCESS(CLK)
BEGIN
IFRISING_EDGE(CLK)THEN
A<=A+F;
ENDIF;
ENDPROCESSP0;
P1:
PROCESS(DIN)
BEGIN
CASEDINIS
WHEN"1110"=>F<=2;
WHEN"1101"=>F<=4;
WHEN"1011"=>F<=6;
WHEN"0111"=>F<=8;
WHENOTHERS=>F<=1;
ENDCASE;
ENDPROCESSP1;
ADD<=A;
ENDONE;
波形仿真,如图3-1.1所示。
图3-1.1频率控制字波形仿真
波形控制模块,如图3-2.1所示。
该模块用来控制输出波形是方波还是正弦波。
图3-2.1波形控制模块
WCT1.VHD源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYWCT1IS
PORT(
A_IN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
WIDTH:
INSTD_LOGIC;
A_OUT:
OUTSTD_LOGIC_VECTOR(8DOWNTO0));
END;
ARCHITECTUREONEOFWCT1IS
SIGNALW:
INTEGERRANGE0TO256;--波形选择
BEGIN
PROCESS(WIDTH)
BEGIN
IFWIDTH='1'THEN
W<=0;
ELSE
W<=256;
ENDIF;
ENDPROCESS;
A_OUT<='0'&A_IN+W;
ENDONE;
波形仿真,如图3-2.2所示。
图3-2.2波形控制字波形仿真
波形数据存储模块,如图3-3.1所示。
该模块是用来存储正弦波和方波的数据。
图3-3.1波形数据存储模块
配置波形数据文件。
File→New→MemoryFile→HexadecimalIntelFormalFile。
设置512个存储空间,8位WordSize,具体数据如图3-3.2所示。
波形数据可有MATLAB/DSPBuilder或者C语言编程生成,以正弦信号为例,其计算公式如下:
上式中,i表示第i个点,2N表示一个周期内的取样个数,本实验是256;M代表数据位宽,本实验是8,即数据值最大是255。
图3-3.2波形配置文件具体配置数据
添加的IPM_ROM宏模块。
设置512个存储空间,8位数据输出,添加3-3.2的数据文件。
数模转换模块,如图3-4.1所示。
该模块是把IPM_ROM中输出的波形数据转换为模拟量。
图3-4.1数模转换模块
DAC.VHD源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYDACIS
PORT(
DAC_CLK:
INSTD_LOGIC;
CHAN_SEL:
INSTD_LOGIC_VECTOR(1DOWNTO0);
RNG:
INSTD_LOGIC;
DATA_IN:
INSTD_LOGIC_VECTOR(7DOWNTO0);
DA_CLK:
OUTSTD_LOGIC;
DA_LDAC,DA_LOAD,DA_DATA:
OUTSTD_LOGIC);
END;
ARCHITECTUREONEOFDACIS
SIGNALCNT_LOAD:
STD_LOGIC_VECTOR(2DOWNTO0);
SIGNALCNT_DA_CLK:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALDATA_REG:
STD_LOGIC_VECTOR(11DOWNTO0);
SIGNALDA_CLK_R,DA_LOAD_R:
STD_LOGIC;
TYPESTATESIS(ST0,ST1,ST2,ST3);
SIGNALC_STATE,N_STATE:
STATES;
BEGIN
DA_CLK<=DA_CLK_R;
DA_LOAD<=DA_LOAD_R;
DA_DATA<=DATA_REG(11);
DA_LDAC<='0';
PROCESS(DAC_CLK)
BEGIN
IFRISING_EDGE(DAC_CLK)THEN
C_STATE<=N_STATE;
ENDIF;
ENDPROCESS;
PROCESS(DAC_CLK,DA_LOAD_R)
BEGIN
IFDA_LOAD_R='1'THEN
CNT_LOAD<="000";
ELSIFFALLING_EDGE(DAC_CLK)THEN
IFCNT_LOAD<"111"THEN
CNT_LOAD<=CNT_LOAD+1;
ELSE
CNT_LOAD<=CNT_LOAD;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(DA_LOAD_R,DA_CLK_R)
BEGIN
IFDA_LOAD_R='0'THEN
CNT_DA_CLK<="0000";
DATA_REG<='0'&CHAN_SEL&RNG&DATA_IN;
ELSIFRISING_EDGE(DA_CLK_R)THEN
CNT_DA_CLK<=CNT_DA_CLK+1;
DATA_REG<=DATA_REG(10DOWNTO0)&'0';
ENDIF;
ENDPROCESS;
PROCESS(C_STATE,N_STATE)
BEGIN
CASEC_STATEIS
WHENST0=>DA_LOAD_R<='1';DA_CLK_R<='0';N_STATE<=ST1;
WHENST1=>DA_LOAD_R<='0';DA_CLK_R<='0';
IFCNT_LOAD>"101"THEN
N_STATE<=ST2;
ELSE
N_STATE<=ST1;
ENDIF;
WHENST2=>DA_LOAD_R<='1';DA_CLK_R<='0';
IFCNT_DA_CLK>="1011"THEN
N_STATE<=ST0;
ELSE
N_STATE<=ST3;
ENDIF;
WHENST3=>DA_LOAD_R<='1';DA_CLK_R<='1';N_STATE<=ST2;
WHENOTHERS=>N_STATE<=ST0;
ENDCASE;
ENDPROCESS;
ENDONE;
波形仿真,如图3-4.2所示。
图3-4.2数模转换波形仿真
整体设计与分析
顶层原理图,如图4-1所示。
图4-1顶层原理图
整体设计仿真与分析
当波形控制WCTL=1(WDITH=’1’)和频率控制字F=1(SW[3..0]=”1111”)时,所仿真得到的数据,如图4-2.1、4-2.2、4-2.3、4-2.4所示,并且与理论正弦波形数据一致。
图4-2.1正弦波数据
图4-2.2正弦波数据
图4-2.3正弦波数据
图4-2.4正弦波数据
当波形控制WCTL=1(WDITH=’0’)和频率控制字F=1(SW[3..0]=”1111”)时,所仿真得到的数据,如图4-2.5所示,并且与理论方波波形数据一致。
图4-2.5方波波数据
引脚配置,如图4-3所示。
图4-3引脚配置
整体设计过程及遇到问题的解决方法。
直接复制的程序在编译时出错:
删除并重新编译错误的程序;
程序在编译的时候出现错误:
在错误显示栏分别找出对应的错误点,然后分析修改,再次编译看结果。
另外可以参考资料相互比较在修改程序。
在电路图绘制的时候,要注意总线要对应,不然编译会出错。
此外,引脚设置要相对应。
下载与调试
下载步骤
打开配置好的DDSS.stp文件,如图5-1所示,启动全程编译。
图5-1DDSS.stp文件界面
使用下载线,连接计算机USB和实验箱JTAG下载口(注意插口方向),打开实验箱电源。
启动下载界面,确认已选中下载线。
完成下载界面的设置,启动下载。
下载完成后,将实验箱与示波器连接好,通过实验箱上的拨档开关SW1可以改变输出波形,SW2~SW5可以改变波形输出频率。
观察电脑上的嵌入式逻辑分析仪和示波器的现象,记录数据并分析结果。
测试结果与分析
嵌入式逻辑分析仪观察到的波形,如图5-2.1~5-2.5所示。
通过改变实验箱上拨档开关SW1(WIDTH=‘1’,正弦波;WIDTH=‘0’,方波)可以改变波形,拨档开关SW2~SW5(F=1,2,4,6,8)可以改变波形输出频率。
图5-2.1SW=“1111”(F=1),WIDTH=‘1’,产生5.9KHz正弦波
图5-2.2SW=“1110”(F=2),WIDTH=‘1’,产生11.7KHz正弦波
图5-2.3SW=“1101”(F=4),WIDTH=‘1’,产生23.4KHz正弦波
图5-2.4SW=“1011”(F=6),WIDTH=‘1’,产生35.2KHz正弦波
图5-2.5SW=“0111”(F=8),WIDTH=‘1’,产生46.9KHz正弦波
示波器测试的波形。
当SW=“1111”(F=1)、WIDTH=‘1’时,如图5-2.6所示;当SW=“1110”(F=2)、WIDTH=‘1’时,如图5-2.7所示。
其他情况也是同样的测量。
图5-2.65.848KHz正弦波
图5-2.712.5KHz正弦波
通过以上的理论值和实测值可以看出,有误差和波形的
参考文献
潘松,黄继业.EDA技术实用教程.3版.北京:
科学出版社,2009.
杨旭,刘盾.EDA技术基础与实验教程.北京:
清华大学出版社,2010.
徐志军,徐光辉.CPLD/FPGA的开发与应用.北京:
电子工业出版社,2002.
周润景,图雅,张丽敏.基于QuartusII的FPGA/CPLD数字系统设计实例[M].北京:
电子工业出版社,2007.
赵明富.EDA技术与实践[M],北京:
清华大学出版社,2005.
陈玉琼,杨冠鲁.基于FPGA的三相正弦波形发生器[J].黎明职业大学学报,2006.
智少勇,侯俊钦.基于FPGA的多功能正弦信号发生器[J].淮北煤炭师范学院学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 直接 数字 频率 DDS 设计