APP下载

基于DDS的信号发生器设计

2017-01-17吴艳玲

武昌理工学院学报 2016年4期
关键词:单片机

吴艳玲

摘 要:本系统以单片机89C51与FPGA为控制核心,采用DDS(直接频率数字频率合成)技术,D/A转换电路及滤波电路,设计了一个高频率稳定度、高精度的信号发生器。单片机向存储器写波形表,控制频率、幅度步进以及人机交换。FPGA集成了DDS、键盘扫描等功能模块。D/A转换模块采用DAC0832,可将波形表内数据输出为所需要的波形。输出波形可以在正弦波与方波及三角波间切换,并能由键盘设置频率值,还能完成步进和扫频的功能。

关键词:DDS;单片机;FPGA

中图分类号:G640 文献标识码:A

1 信号发生器设计原理

本设计在分析直接数字频率合成器(DDS)工作原理的基础上,以89C51单片机和FPGA芯片为主要硬件进行设计。该系统主要包括:波形生成、频率控制、数模转换、程控滤波模块。信号频率为20Hz~20kHz步进可调,步长为1Hz。 频率稳定度达到10-4。 正弦波信号非线性失真系数不大于3%。脉冲波上升时间和下降时间不大于1μs。平顶斜降不大于5%。脉冲占空比为2%~98%步进可调,步长为2%。负载为600Ω时,输出幅度大于3V。 另外,系统提供的矩阵键盘和点阵式液晶显示器还实现了良好的人机交互,能够设置功能并将相关信息显示出来。

2 方案论证

2.1 频率合成器模块

方案一:采用模拟分立元件或单片压控函数发生器MAX038,可产生正弦波、方波、三角波,通过调整外部元件可改变输出频率。但采用模拟器件由于元件分散性太大,即使使用单片函数发生器,参数也与外部元件有关,外接的电阻电容对参数影响很大,因而产生的频率稳定度较差、精度低、抗干扰能力低、成本也高,且灵活性较差,不能实现任意波形以及波形运算输出等智能化的功能。

方案二:采用直接数字频率合成技术产生波形,信号频率范围覆盖超低频和高频,便于单片机控制。通过计数器的高位输出作为读取波形存储器RAM的地址,将读出的数据送至D/A转换器输出波形。而对计数器的控制也有两种实现方案:通过一定的频率作用于计数器,使其能循环计数。采用FPGA与单片机相结合的方式实现对频率的控制,利用FPGA产生一个相位累加器,通过相位累加器和固定时钟脉冲取样的相位寄存器组成。

经过论证比较,DDS与锁相环方案相比,无需相位反馈控制,频率建立及频率切换快,覆盖频率范围大,精度高,控制性好且容易实现,具有功能扩展的能力,故采用这种方案。

2.2 存储器模块

方案一:可以使用DSP中的存储器,不仅存储量大而且运算速度快。

方案二:使用FPGA作为数据的桥梁,将波形先存储在ROM中,通过单片机控制,将数据传输给FPGA,再由FPGA将数据高速传送给DAC0832。

综合考虑器件的使用性和实际情况,我们决定采用FPGA中的ROM作为系统的存储器件。

2.3 幅度控制模块

方案一:采用VCA810通过一个单片机控制DAC0832通过数模转换得到一个控制电压,从而控制VCA810的放大倍数,最后达到控制输出电压的目的。

方案二:数模转换和幅度控制部分采用双D/A技术,第一级D/A的输出波形作为第二级D/A的基准电压源,第一级D/A以由单片机P1口控制,由此来控制信号发生器的输出电压幅度。

方案一中VCA810的放大倍数并不是完全线性,而且它的放大倍数是以dB的形式来表现的,所以不是很容易控制。第二种方法电路简单,通过软件控制,可控性强,故采用这种方案。

2.4 后级滤波模块

方案一:采用二阶切比雪夫低通滤波器。切比雪夫低通滤波器的幅度响应在通带内是在两个值之间波动,在通带内的波动次数取决于滤波器的阶数。理想的切比雪夫低通滤波器近似在靠近截止频率的部分有比巴特沃兹滤波器更接近矩形的频率响应。

方案二:采用二巴特沃兹滤阶波器。巴特沃兹滤波器的幅度函数是单调下降的,但巴特沃兹滤波器能实现最大平坦幅度滤波。

由于信号发生器的输出波形中的主要噪声为D/A转换产生的高频分量,与设计的频率范围相差很远,所以相对来说,滤波器在频带内的平坦程度比其衰减陡度更为重要,而且巴特沃兹滤波器的元件值也较合乎实际情况,不像其他类型滤波器对元件值要求那么苛刻。基于上述考虑,决定采用二阶巴特沃兹滤波器。

3 系统设计

3.1 系统总体设计

单片机构成系统的控制中心,控制功能选择和结果显示,FPGA在单片机的控制下实现直接频率合成,系统初始化后对按键进行判断从而根据设定选择相应的功能执行。在更改输出波形频率时,根据输入产生相应的频率控制字送到FPGA中,控制输出频率值。FPGA的输出作为ROM的读取地址,选取波形数据经DAC0832输出模拟波形。同时,单片机控制第一片DAC0832输出直流电压作为输出波形的DAC0832的基准源,控制输出波形的幅值。

系统总体框图如图1所示。

3.2 D/A模块设计

幅度控制和D/A转换用双D/A实现,第一个DAC0832由单片机P1口控制,其输出做为第二级DAC0832的参考电压,通过单片机就可以实现设置输出幅度的峰值。第二个DAC0832读取波形存储器双口RAM的波形值,转换输出波形。由于0832为电流型输出,所以需要两级运算放大器电路将电流转化为电压,其中第一级将电流转换为-5V~0V,第二级将-5V~0V反向,转换为0V~5V,为下一级DAC0832提供基准电压。具体电路设计如图2所示:

3.3 相位累加器设计

累加宽度设计:若相位累加器的宽度为N位, 当于2 rad,则信号输出的频率 = , ,由公式可得,累加器的位数越大,频率分辨率越小,精度也就越高。在本实验中,我们设计累加器的位数为 N=23位,则 =312.5k/8388608=0.037HZ。如果为1HZ的话,则对应频率控制字为1/0.037=27。

频率控制字(k)宽度设计:频率步进为1HZ,

则频率控制字为27为单位步进。在这里我们采用一个乘法器(*27),当键盘置数位1时,通过乘法器后,变为27,对应输出的频率为1HZ。 =20000HZ,K=20000,当频率控制字的位数为19,远能满足设计要求。

经过实验验证可得,ROM表最好只装8192个数,否则会出现意外情况。8192个点为正弦波总点数1/4。总点数为8192*4=32767(2的15次方)。所以累加器的输出为2的15次方,取累加器的第22位至8位作为输出如图3所示。

3.4 ROM的设计

该模块是存放DDS正弦波各个相位所对应的幅值大小的存储单元,模块功能是供相位累加器模块找到对应相位的波形幅值。

为了尽限利用ROM的大小,我们设计13位的ROM表如图4所示,即Rom表中存放了8192个波形数据,且在表中只放置正弦波形0—T/2的波形值,利用软件处理,得到整个周期内的波形值。对于ROM存放的正弦表值的设计,可以借助Matlab软件编写0---T/2内正弦的波形值,需要注意的是波形值数据点共8192个全部为正整数,且所有点对应的幅值范围应是0—5,这样才能给DAC0832处理。

3.5 键盘键值转化为频率控制字模块

我们是通过对应数据的为止调节来调节频率和幅度变化的。0对应加10KHZ,6对应减10KHZ,1对应加1KHZ,7对应减1KHZ,2对应加100HZ,8对应减100HZ,3对应加10HZ,9对应减10HZ,4对应加1HZ,A对应减1HZ,5对应加2%步进的占空比,B对应减2%步进的占空比,C对应复位,频率为10KHZ,D对应转换波形,E对应幅度加1V,F对应幅度减1V,ESC键对应幅度加100 mV,ENTER对应幅度减100mV

3.6 方波的设计

方波的调节也是通过改变频率控制字从而改变高电平占中分频中的系数来调节方波占空比的,当频率控制字小于某一值时取高电平,低于这个值时取低电平,这样就形成了方波。

4 程序流程图

5 总结

对于信号发生器的设计,原始的方案中,决定了采用直接数字频率合成,不过采用直接数字频率合成原始的信号也分成两种,一种是采用AD9851直接数字频率合成模块,另一种是采用FPGA编程实现直接数字频率合成,前者可以简化程序而且可以达到更高的信号发生频率,但硬件电路复杂,成本高。后者程序复杂但节约硬件成本。信号发生后,如果波形不好,需要滤波,由于输出幅度在不同的频率内可能有一些差别,所以需要将不同的频率幅度稳定,由于要求幅度可调,因而需要有对信号进行幅度控制的模块。

参考文献:

[1] 李朝青.单片机原理及接口技术(第三版)[M].北京:北京航空航天大学出版社,2009(7).

[2] 谢自美.电子线路设计[M].武汉:华中科技大学出版社,2000(7).

[3] 康华光.电子技术基础(模拟部分)[M].北京:高等教育出版社,2010(6).

[4] 黄根春.电子设计教程[M].北京:电子工业出版社,2009(5).

(本文审稿 李正发)

猜你喜欢

单片机
单片机在智能控制中的应用
C8051F020与80C51单片机的异同点
单片机I/O口模拟串行通讯的C51实现方法
单片机调试方法的探讨
用PIC单片机制作的时间继电器