DDS.docx
《DDS.docx》由会员分享,可在线阅读,更多相关《DDS.docx(9页珍藏版)》请在冰豆网上搜索。
DDS
基于FPGA的DDS信号发生器
摘要:
本系统基于直接数字频率合成技术,以51单片机和PFGA为控制核心,频率范围10hz-10khz,最小步进10hz。
采用verilog在fpga内设置逻辑电路实现相位累加器、键盘扫描、正弦波采样表、分频电路等数字处理部分。
单片机控制t6963进行同步显示。
关键字:
FPGADDSAT89C51
目录
一.方案论证与比较1
1.1方案论证与比较1
1.2方案确定1
二.设计与理论分析1
2.1总体设计思路1
2.2各模块实现原理2
2.3DDS系统的主要性能参数4
三、软件设计流程5
四、测试数据与分析6
4.1、测试数据6
4.2.实验结果处理与分析6
五、总结7
参考文献7
一.方案论证与比较
1.1方案论证与比较
方案一:
数字锁相环式频率合成技术。
利用锁相环将VCO(压控振荡器)的输出频率锁定在所需频率上,可以很好地选择所需频率信号,抑制杂散分量,可以采用集成芯片。
但要减小频率间隔,就必须减小输入频率,导致频率转换时间增加,且输出频率在很大范围变化时,分频比也要随之变化,环路增益也将大幅度变化,从而使环路的动态特性急剧变化。
方案二:
采用基于直接数字频率合成的专用芯片AD9852。
该方案具有频谱纯度高、集成度高等特点,可以生成低相噪、高稳定的频率输出波形。
但它只直接提供了实现多种数字调制的功能,要实现模拟线性调制AM、FM具有一定难度。
方案三:
基于FPGA的片上可编程系统。
该方案以高速的FPGA为数字平台,基于直接数字频率合成和数字调制技术原理。
虽然专用DDS芯片功能也比较多,但控制方式却是固定的,而利用FPGA则可以根据需要方便地实现比较复杂的功能,有利于提高集成度,可靠性和灵活性,且容易实现。
1.2方案确定
综合考虑以上三种方案的优缺点以及题目的基本要求。
我们选用第三种方案,即基于FPGA的片上可编程系统为我们此次设计的方案。
二.设计与理论分析
2.1总体设计思路
DDS以Nyquist时域采样定理为基础,在时域中进行频率合成。
每个参
考频率上升沿到来时,相位累加器的值便按照频率控制字K的长度增加一次,所得的相位值被输出至正弦查找表,查找表将相位信息转化为相应的正弦幅度值,再经过D/A转换器得到相应的阶梯波,最后经过低通滤波器对阶梯波进行平滑,得到连续变化的模拟输出波形。
对于相位累加器、正弦波采样点存储ROM、键盘扫描、分频电路等数字处理部分,可通过verilog在fpga内实现。
其中,频率控制字有由键盘扫描模块提供。
单片机把键值送t6963显示,显示频率控制字和相应的系统介绍。
系统总框图如图一所示
图一、DDS系统总框图
2.2各模块实现原理
(1)相位累加器
DDS系统的核心是相位累加器,它由一个N位累加器与N位相位寄存器构成。
时钟脉冲每触发一次,累加器便将频率控制数据与相位寄存器输出的累加相位数据相加,然后把相加后的结果送至相位寄存器的数据输入端。
相位寄存器将累加器在上一个时钟作用后所产生的新相位数据反馈到累加器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。
这样,相位累加器在参考时钟的作用下将进行线性相位累加,当相位累加器
累加满时,就会产生一次溢出,以完成一个周期性的动作,这个周期就是DDS合成信号的一个频率周期,相位累加器的溢出频率就是DDS输出的信号频率。
(2)波形存储器
波形存储器是用来存储波形数据的,可通过MATLAB或C语言生成波形数据文件。
正弦波是中心对称波形,而半周期又是轴对称图形,为减少RAM容量,并提高波形采样点,故只要存储1/4周期波形即可。
相位累加器、波形存储器、波形转换器如图二所示。
相位累加器为15位,存储1/4周期波形,固取13位相位地址。
波形转换器把两个半波形转换成一个正弦波。
图二、波形控制模块
(3)键盘控制及LCD显示模块
键盘控制模块用于键值扫描及输出频率控制字,键值可输出给LCD,通过单片机控制来显示具体的频率及其他相关信息,输出频率可通过改变频率控制字来改变。
(4)D/A转换模块
D/A转换器的作用是把一组二进制的量化数字通过数模转换,转换成模拟量的输出,由于D/A0832为电流输出型的转换器,因此要获得模拟电压输出时,需接外加转换电路,即如图三所示的运放电路。
图三、DAC0832转换电路
(5)滤波模块及毛刺消除
通常理想的滤波器应在要求的频带内具有均匀而稳定的增益,并能尽可能滤掉杂波.实际的滤波器有是不可能达到此要求,为此一般采用各种函数来逼近理想滤波器的频率特性。
用运算放大器和RC网络组成的有源滤波器具有许多独特的优点。
由于运算放大器的增益和输人阻抗高,输出阻抗低,所以能提供一定的信号增益和缓冲作用,本实验主要采用二阶RC有源低通滤波。
在FPGA多路信号同时发生跳变的瞬间,会产出“竞争冒险”。
因此在信号输出时会产生不确定的尖峰值,即毛刺,它的出现会影响电路工作的稳定性、可靠性。
消除毛刺有软件与硬件两种方法,在此采用硬件消除,可在每个数据输出端接上如图四所示电路即可有效地消除毛刺。
图四、毛刺消除电路
2.3DDS系统的主要性能参数
(1)正弦波频率计算
DDS输出信号频率为:
(2.3-1)
最低输出频率(即步进):
(2.3-2)
上面两式中,
为累加时钟频率,K为频率控制字,N为累加器位数。
本设计中要求输出频率为10HZ~10KHZ,当累加时钟频率为FPGA默认频率40MHZ,累加位数设为22位时,存在较大误差,因此将40MHZ进行120分频,将累加位数设为15位,得到误差最小。
相应的步进值:
HZ。
(2)波形控制
由于波形存储器存储的是四分之一波形,因此可将15位累加器的前2位用于判断四分之一波的相位,后13位作为相位地址输出给RAM。
部分程序设计如下:
if((A>=0)&&(A<=15'd8191))result<=A;
if((A>=15'd8192)&&(A<=15'd16383))result<=15'd16383-A;
if((A>=15'd16384)&&(A<=15'd24575))result<=A-15'd16384;
if((A>=15'd24576)&&(A<=15'd32767))result<=15'd32767-A;
为使输出波形与实际相符,需先将整波抬高,再将后半波翻转,具体程序如下:
if((a>=0)&&(a<=15'd16384))sin_out=sin_in+8'd127;
if(a>=15'd16384)sin_out=8'd127-sin_in;
三、软件设计流程
利用KeiluVision3设计软件,QuartusII8.0设计软件和武汉大学开发板,使用单片机实现液晶显示功能,用FPGA实现键盘扫描的功能,使单片机和FPGA通讯,实现人机交互。
主要包括键盘中断、液晶显示、频率控制、键值处理等模块。
软件流程图如图五所示。
图五、软件流程图
四、测试数据与分析
4.1、测试数据
测试结果如表一所示
表一:
测试数据及误差
设定频率值/HZ
实际频率值/HZ
误差/%
实际频率值/HZ
误差/%
实际频率值/HZ
误差/%
10
10.01
0.1
10.00
0
10.03
0.3
20
20.00
0
20.04
0.2
20.04
0.2
50
50.10
0.2
49.95
0.1
50.05
0.1
100
100.20
0.2
99.80
0.2
100.10
0.1
500
499.5
0.1
500.00
0
501.00
0.2
1K
1.002K
0.0002
1.000K
0
0.999K
0.0001
5K
5.020K
0.0004
4.995K
0.0001
4.980K
0.0004
10K
10.02K
0.0002
9.980K
0.0002
10K
0
4.2.实验结果处理与分析
本次设计能满足以下要求:
(1)正弦波输出频率范围:
10Hz~10kHz;
(2)具有频率设置功能,频率步进:
10Hz;
(3)输出信号频率稳定度:
优于10-4;
(4)输出电压幅度:
在负载电阻上的电压峰-峰值Vopp≥1V;
(5)失真度:
用示波器观察时无明显失真。
DDS的全数字结构决定了其输出必然有杂散噪声。
来源主要如下:
(1)相位误差:
虽然相位累加器的位数N做得很大,但由于受体积和成本的限制,用来寻址RAM的位数远小于N,其低位必须舍去,不可避免的产生相位截断误差。
(2)幅值量化误差。
(3)DAC的非理想特性引起的误差。
五、总结
本次设计,设计难点在波形函数的存储、液晶显示器的控制和频率控制字的输入,方案几经修改后,我们找到了最佳方案,储存1/4波,用FPGA实现键盘输入和键值的处理,用单片机实现度液晶显示器的控制。
参考文献
[1]梅丽凤王艳秋等单片机原理及接口技术北京:
清华大学出版社北京交通大学出版社
[2]谭浩强C语言程序设计第三版北京:
清华大学出版社
[3]夏宇闻Verilog数字系统设计教程北京航空航天大学出版社
[4]马忠梅籍顺心等单片机的c语言应用程序设计北京航空航天大学出版社
附、FPGA总图