dds课程设计报告正文文档格式.docx
- 文档编号:16637879
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:19
- 大小:240.53KB
dds课程设计报告正文文档格式.docx
《dds课程设计报告正文文档格式.docx》由会员分享,可在线阅读,更多相关《dds课程设计报告正文文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
3.8开关功能说明¨
第14页
第4篇调试、仿真、编程下载过程¨
第14页
第5篇实验总结
5.1对本设计的一些改进方案¨
第15页
5.2实验感想¨
参考文献
第1篇直接数字频率合成器DDS设计要求说明
1.1设计基本要求
1)利用QuartusII软件和SmartSOPC实验箱实现DDS的设计;
2)DDS中的波形存储器模块用Altera公司的Cyclone系列FPGA
芯片中的ROM实现,ROM结构配置成4096×
10类型;
3)具体参数要求:
频率控制字K取4位;
基准频率fc=1MHz,由
实验板上的系统时钟分频得到;
4)系统具有清零和使能的功能;
5)利用实验箱上的D/A转换器件将ROM输出的数字信号转换为模拟信号,能够通过示波器观察到正弦波形;
6)通过开关(实验箱上的Ki)输入DDS的频率和相位控制字,并能用示波器观察加以验证;
1.2设计提高部分要求
1)通过按键(实验箱上的Si)输入DDS的频率和相位控制字,以扩大频率控制和相位控制的范围(注意:
按键后有消颤电路);
2)能够同时输出正余弦两路正交信号;
3)在数码管上显示生成的波形频率;
4)充分考虑ROM结构及正弦函数的特点,进行合理的配置,提高计算精度;
5)设计能输出多种波形(三角波、锯齿波、方波等)的多功能波形发生器;
第2篇对整体电路工作原理的方案论证
DDS即DirectDigitalSynthesizer数字频率合成器,是一种基于全数字技术,从相位概念出发直接合成所需波形的一种频率合成技术,是一种新型的数字频率合成技术。
具有相对带宽大、频率转换时间短、分辨力高、相位连续性好等优点,很容易实现频率、相位和幅度的数控调制,广泛应用于通讯领域。
2.1DDS基本结构图
频率预置与调节电路
图1.本设计DDS基本结构图
2.2工作原理说明
本设计DDS主要由频率预置电路、相位累加器、波形存储器、D/A转换器、低通滤波器组成。
可通过频率控制字kf和相位控制字kp输出频率和相位均可调的正弦波、余弦波、三角波、锯齿波、方波。
输出频率fo是对基准频率fc的分频,其关系如下:
fo=(kf/2N)fc
在本设计中,N取12位,基准频率fc取1MHz,kf从0000(0)到1111(15),所以输出频率从0到3840Hz。
第3篇各子模块原理说明
3.1频率预置与调节电路
本模块的主要功能是产生基准频率fc、频率控制字kf、相位控制字kp。
SmartSOPC实验箱提供的是48MHz的系统时钟,需要经过48分频得到基准频率fc,48分频用一个模48计数器即可实现。
具体电路如图2所示(参见原理图文件48counter74161.bdf)。
图2.模48计数器
如图所示,用两片二进制加法计数器74161实现模48计数器,在74161时钟输入端输入系统时钟48MHz,q5端输出的就是基准频频1MHz。
频率控制字kf设计的是从0000到1111的四位二进制数,但是为了与相位累加器相匹配,kf需要定义成12位的二进制数。
所以kf的高8为都要赋零,只需要控制低四位。
若直接用开关输入需要4个开关,而SmartSOPC实验箱提供的只有8个开关,为了节省开关,本设计利用一个模16计数器来产生频率控制字kf。
计数频率采用1Hz,1秒钟计一次数,通过开关来控制使kf达到需要频率控制字(参见原理图文件dds.bdf)。
同样,为了与加法器匹配,相位控制字也定义成了12位的二进制数,为了方便起见,kp也设计了从0000到1111十六个状态,但是若加在低四位,当kp也从0000到0001时,相位只变化了2π/212=π/2048,肉眼很难观测到,从0000到1111也之变化了π/2048×
16=π/128,在示波器上很难看到。
所以本设计将4位相位控制字加在高四位,低八位赋零。
这样从0000到1111,相位变化了2π/212×
27=π/16,在示波器上很容易看到的,从0000到1111相位变化了π。
3.2相位累加器模块
相位累加器的结构图如图3所示。
图3.相位累加器结构图
相位累加器在基准频率信号fc的控制下以频率控制字kf为步长进行累加运算,产生所需要的频率控制数据。
相位寄存器则在时钟的控制下把累加的结果作为波形存储器ROM的地址,实现对波形存储器ROM的寻址。
当累加器加满量时就会产生一次溢出,完成一个周期性的动作。
这个周期也就是DDS信号的一个频率周期。
本设计相位累加器采用文本输入法VHDL语言设计,具体如下(参见VHDL源文件SUM4096.vhd):
--SUM4096.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYSUM4096IS
PORT(K:
INSTD_LOGIC_VECTOR(11DOWNTO0);
CLK:
INSTD_LOGIC;
EN:
INSTD_LOGIC;
RESET:
OUT1:
OUTSTD_LOGIC_VECTOR(11DOWNTO0));
ENDENTITYSUM4096;
ARCHITECTUREARTOFSUM4096IS
SIGNALTEMP:
STD_LOGIC_VECTOR(11DOWNTO0);
BEGIN
PROCESS(CLK,EN,RESET)IS
IFRESET='
1'
THEN//清零端为1时累加器清零
TEMP<
="
000000000000"
;
ELSE
IFCLK'
EVENTANDCLK='
THEN
IFEN='
THEN//使能端EN为1时累加器正常工作
=TEMP+K;
//时钟CLK上升沿到来时以kf为步长递增
ENDIF;
OUT1<
=TEMP;
//将目前的累加结果保存并输出,下次上升沿时实现累加
ENDPROCESS;
ENDARCHITECTUREART;
以上程序不仅定义了累加器还添加了清零和使能功能。
相位寄存器是与相位累加器同步的寄存器,也是采用文本输入法VHDL语言设计,具体如下(参见VHDL源文件REG1.vhd):
--REG1.VHD
ENTITYREG1IS
PORT(D:
Q:
ENDENTITYREG1;
ARCHITECTUREARTOFREG1IS
PROCESS(CLK)IS
IF(CLK'
)THEN
Q<
=D;
//当时钟上升沿到来时输出相位累加器的结果
ENDARCHITECTUREART;
相位寄存器的输出就是波形存储ROM的地址。
3.3波形存储器模块
用累加器的输出作为波形存储器的取样地址,进行波形的相位—幅值转换,即可在给定的时间上确定输出的波形的抽样幅值。
以正弦波形存储器sine_rom为例,N(12)位的寻址ROM相当于把0—2π的正弦信号离散成具有2N个样值的序列,波形ROM有D(10)位数据位,所以设置2N个样值的sin值以D位二进制数值固化在ROM中,这里设置D=10,所以ROM中的数据范围应该从0到1023,但是正弦值只从-1到1,所以要对其进行量化,公式如下:
存储数据=round(sin(n×
2π/4096))×
512+512
其中,n为存储地址,范围是从0到4095。
按照地址的不同可以输出相应相位的正弦信号的幅值。
相位—幅度变换原理如图4所示。
图4.相位-幅度变换原理图
同理,余弦波ROM、锯齿波ROM、三角波ROM、方波ROM只需在ROM里存储相应波形的幅度量化序列即可。
1)正弦ROM的存储数据表参见dds.mif。
2)余弦ROM的存储数据表与正弦ROM类似(参见cos.mif):
存储数据=round(cos(n×
2π/4096)×
512)+512
3)
三角波ROM的数据表参见sanjiao.mif。
三角波的数据没有现成的生成三角波的数据,本设计根据图5做出相应的函数产生三角波的数据表。
图5.三角波
所以三角波函数如下:
当n∈(0,1023)时,存储数据=round(n/2)+512;
当n∈(1023,3071)时,存储数据=1024-round(n/2)+512;
当n∈(3071,4095)时,存储数据=round(n/2)-2048+512;
4)
锯齿波ROM的数据表参见juchibo.mif。
锯齿波的波形如图6所示。
图6.锯齿波
由图6可得出锯齿波的函数如下:
存储数据=round(n/4)
5)方波ROM的数据表参见fangbo.mif。
方波的波形如图7所示。
图7.方波
由图7可得出方波的函数如下:
最后,生成5个存有不同波形的存储器,分别是sine_rom、cos_rom、fangbo_rom、juchibo_rom、sanjiao_rom。
分别如图8所示。
图8.5个波形存储器
所有.mif文件的数据都来源于电子表格ROM地址数据。
3.4相位调节模块
相位控制模块是在ROM地址信号输入波形存储器ROM之前,将相位控制字叠加上去,使相位都增加相应的值。
这个功能用一个加法器就能实现。
该加法器采用文本输入法VHDL语言设计,具体如下(参见VHDL源文件xiangweijiafa.vhd):
--xiangweijiafa.VHD
ENTITYxiangweijiafaIS
PORT(K1:
K2:
OUT2:
ENDENTITYxiangweijiafa;
ARCHITECTUREARTOFxiangweijiafaIS
OUT2<
=K1+K2;
加法器输出的信号再输入ROM的地址输入端,输出的波形在示波器上会发生平移,即相位输出发生了变化。
3.5波形输出模块
由波形存储器ROM输出的是量化的数字信号,这种信号在示波器上显示出来是离散的,所以还要经过D/A转换器,在经过低通滤波器输出才能在示波器上显示出连续的波形。
事实上经过D/A转换后不需要低通滤波器就已经可以满足我们的要求了。
DDS基本工作流程图如图9所示。
图9.DDS基本工作流程图
本次实验箱提供了两片D/A转换芯片,本设计中,第一片D/A转换芯片始终输出正弦波,余弦波、三角波、锯齿波、方波通过控制电路在第二篇D/A转换芯片选择输出。
选择电路的原路很简单,四种波形由四路数据,每路数据都有10位,所以用两个开关作为地址端来控制5片双四选一数据选择器74153就可实现波形的四选一。
具体电路如图10所示(参见原理图文件4xuan1.bdf):
图10.四种波形的选择输出
图10中,c[9..0]是余弦信号,f[9..0]是方波信号,s[9..0]是三角波信号,j[9..0]是锯齿波信号。
a1a0是地址端,对应的波形输出如表1所示。
表1输出波形选择
a1a0
输出信号y[9..0]
对应波形
00
c[9..0]
余弦波
01
f[9..0]
方波
10
s[9..0]
三角波
11
j[9..0]
锯齿波
3.6频率测定模块
本设计的测频电路是通过测定相位累加器输出的ROM地址信号在1秒钟内溢出的次数来测定输出频率的。
原理图如图11所示。
电路波形示意图如图12所示。
图12.测频电路波形示意图
单位时钟进过二分频之后得到周期为2秒的时钟信号,利用这个时钟信号,使计数器在1秒钟的时间内对待测信号进行计数,在下一秒的时间内对计数结果进行锁存并输出。
这里利用了反相器的演示效应,否则锁存器的输出永远都会是0000,而且在编译成功后进行仿真时会发现,功能仿真是输不出结果的,这就是因为软件进行的功能仿真是理想仿真,忽略了门电路的实际延时效应,所以即使计数器输出正确,锁存器的也还是没有结果输出的,只有将总电路下载到试验箱才能检测测频器是否正确。
测频器的电路图如图13所示(参见原理图文件cepinyi.bdf)。
图13.测频器电路图
图中,signal就是待测信号,接入的是相位累加器输出的最高位out1(11)。
jishuqi4096是用4片十进制加法计数器组成的同步计数器,最大可计到十进制的9999,输出个十百千四路4位的8421BCD码,对于本设计来说输出频率最大是3840Hz,而设计计数器是模10000的,所以完全够用了。
寄存器是由4片74173组成的。
仿真波形如图14所示(参见波形文件cepinyi.bdf)。
图14.测频器仿真波形图
其中,g、s、b、q是寄存器的输出,gg、ss、bb、qq是计数器的输出,可见计数器的输出是没问题的,但是寄存器始终没有输出,这就是上面说到的功能仿真的缺陷。
3.7显示模块
该模块实现了频率控制字kf、相位控制字kp、输出频率fo的显示。
因为频率控制字和相位控制字都是四位的二进制码,要转换成8421BCD码才能在数码管上显示。
输出频率本身就是8421BCD码,不需要转换。
频率控制字和相位控制字都是只有从0000到1111十六个状态,也就是从十进制的0到15,各需要2各数码管,加上频率的四位数正好需要8各数码管。
首先看频率控制字和相位控制字的转换电路。
频率控制字和相位控制字的数据类型相同,所以可以用同样的转换电路。
以下以频率控制字的转换为例。
本设计是依据下表来进行码制转换的。
表2.二进制与8421BCD码
频率控制字kf
十进制个位(kfg[3..0])
十进制十位(kfs[3..0])
0000(0)
0000
0001
(1)
0010
(2)
0011(3)
0100(4)
0101(5)
0110(6)
0111(7)
1000(8)
1001(9)
1010(10)
0001
1011(11)
1100(12)
1101(13)
1110(14)
1111(15)
从上表可以一看出,当kf从0000到1001时,也就是从0到9是1位数时,转换后的8421BCD只有个位计数,十位保持0000,并且此时个位kfg[3..0]=kf;
当kf从1010到1111,也就是从10到15上升为两位数时,转换后的8421BCD码十位一直保持是0001,个位是从0000到0101,也就是从0到5,所以此时个位kfg[3..0]=kf-1010,也就是当kf上升为两位数以后减去10就是转换后的个位。
所以设计电路如图15(参见原理图文件kf-to-8421.bdf)。
图15.频率控制字码制转换电路
如图15所示,图中k[3..0]是频率控制字,首先通过一片4线16线译码器74154判断kf是一位数还是两位数。
当kf是一位数时,译码器只有q0—q9中的一个为0其余均为1;
当kf是两位数时,译码器只有q10—q15中的一个为0其余均为1。
所以,将q[9..0]全部与非得到信号c,将q[15..10]全部与非得到信号d,c和d不可能同时为1或者同时为0,当c=1时,可以判断kf是一位数,当d=1时,可以判断kf是两位数。
根据表2,当kf是一位数即c=1时,kfg=kf,kfs=0;
当kf是两位数即d=1时,kfg=kf-10,kfs=1。
对于转换后的十位,只需要输出最后一位即可,因为kfs只有0000和0001两个状态,所以前三位全部置零,最后一位直接用d信号表示即可。
对于个位,当kf是两位数时,kfg=kf-10,减10即减1010,也即加上0101再加1,所以kfg=kf-1010=kf+0110,本设计采用一片4位加法器7483实现,如图15中的jia模块,具体电路图参见原理图文件jia.bdf。
加法器输出s[3..0]信号。
所以现在再通过一个二选一电路就可以得到kfg[3..0]。
原理如下:
kfg[3..0]=c&
kf[3..0]+d&
s[3..0]
本设计采用简单的门电路实现2选1的功能,如图15中的to8421模块,具体电路参见原理图文件to8421.bdf。
用4个to8421模块就可以实现kfg[3..0]信号的选择输出。
这样频率控制字就从四位二进制数转换成为8421BCD码,可以在数码管上显示,相位控制字的转换原理同上。
下面就可以将这八路数据通过数码管显示了。
本设计的显示电路同样是动态显示,具体电路图参见原理图文件xianshi.bdf。
本设计现将八路数据都进行显示译码电路,在通过数据选择器轮流选择七段码,数据选择器的地址端由一个模8计数器的输出x2x1x0控制,同时x2x1x0经过一个三线八线译码器产生8个数码管的片选信号,数据选择器十一1KHz的时钟信号计数的。
3.8开关功能说明
开关
功能
key1(en端)
使能开关:
k1=1正常工作,k1=0保持
key2(reset端)
清零开关:
k2=1清零,k2=0正常工作
key3(kf端)
频率控制字计数开关:
k3=1频率控制字以1Hz的频率递增,k3=0保持当前的频率控制字
key4(kp端)
相位控制字计数开关:
k3=1相位控制字以1Hz的频率递增,k3=0保持当前的相位控制字
key5(a0端)
选择输出波形
key6(a1端)
第4篇调试、仿真、编程下载过程
实验过程中没做完一个模块添加一项功能之后都要进行编译仿真,在确定各子模块的功能都正确之后组合整体电路(参见原理图文件dds.bdf),并对其进行综合编译,编译成功之后就可以准备下载到SmartSOPC实验箱了。
在下载之前要注意将未使用的管脚设置为三态输入。
之后就可以给各输入端输出端分配管脚,其中输入端48MHz分配到实验箱的系统时钟48MHz的脉冲,输入端en、reset、kf、kp、a0、a1分别分配到实验箱的手动开关KEY1到KEY6,输出端abcdefg分配到显示管七段码,输出端s[7..0]分配到数码管的片选端DIG7到DIG0。
之后下载到SmartSOPC实验箱后对各项功能进行验证和调试。
5.1对本设计的一些改进方案
1.本设计的译码显示部分先将8路32位数据进行显示译码后再用数据选择器选择输出,这样32位数据进过显示译码变成8路56位,还需要7个8选1数据选择器。
总共用了15个芯片。
但事实上可以不用这么多芯片,先用4片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dds 课程设计 报告 正文