基于ATmega8的DDS信号发生器的设计

分享到:

  1引言 

  频率源是雷达、通信、电子对抗与电子系统实现高性能指标的关键,很多现代电子设备和系统的功能都直接依赖于所用频率源的性能,因此频率源被人们喻为众多电子系统的“心脏”。而当今高性能的频率源均通过频率合成技术来实现。频率合成器是利用一个或多个标准信号,通过各种技术途径产生大量离散频率信号的设备。传统的频率合成器有直接模拟合成法与锁相环合成法两种。直接模拟合成法利用倍频、分频、混频及滤波,从单一或几个参考频率中产生多个所需的频率。该方法频率转换时间快(小于100ns),但是体积大、功耗大,目前已基本不被采用。锁相环式频率合成器具有很好的窄带跟踪特性,可以很好地选择所需频率的信号,抑制杂散分量,并且避免了大量的滤波器,有利于集成化和小型化。但存在高分辨率和快转换速度之间的矛盾,一般只能用于大步进频率合成技术中。

  直接数字频率合成(DDS)是近年来发展起来的一种新的频率合成技术。其主要优点是相对带宽很宽、频率转换时间极短(可小于20ns)、频率分辨率很高、全数字化结构便于集成、输出相位连续、频率、相位和幅度均可实现程控。因此,能够与计算机紧密结合在一起,充分发挥软件的作用。作为应用,现在已有DDS产品用于接收机本振、信号发生器、通信系统、雷达系统、跳频通信系统等。

  2DDS的基本工作原理

  直接数字频率合成是采用数字化技术,通过控制相位的变化速度,直接产生各种不同频率信号的一种频率合成方法。DDS的基本结构如图1所示,它主要由相位累加器、正弦ROM表、D/A转换器和低通滤波器构成。

  参考时钟fr由一个稳定的晶体振荡器产生。相位累加器由N位加法器与N位相位寄存器级联构成,类似于一个简单的加法器。每来一个时钟脉冲,加法器将频率控制数据与相位寄存器输出的累积相位数据相加,把相加后的结果送至相位寄存器的数据输入端。相位寄存器将加法器在上一个时钟作用后所产生的新相位数据反馈到加法器的输入端,以使加法器在下一个时钟的作用下继续与频率控制数据相加。这样,相位累加器在参考时钟的作用下,进行线性相位累加,当相位累加器累积满量时就会产生一次溢出,完成一个周期性的动作,这个周期就是DDS合成信号的一个频率周期,累加器的溢出频率就是DDS输出的信号频率。

  在参考时钟fr的控制下,频率控制字由累加器累加以得到相应的相位数据,把此数据作为取样地址,来寻址正弦ROM表进行相位-幅度变换,即可在给定的时间上确定输出的波形幅值。DAC将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号,低通滤波器用于滤除不需要的取样分量,这样即可得到由频率控制字决定的连续变化的输出正弦波。

  DDS的输出频率f0和参考时钟fr、相位累加器长度N以及频率控制字FSW的关系为:基于ATmega8的DDS信号发生器的设计 ; DDS的频率分辨率为:基于ATmega8的DDS信号发生器的设计 ;由于DDS的输出最大频率受奈奎斯特抽样定理限制,所以DDS 的最高输出频率为fr/2,但在实际设计的DDS系统中,由于输出滤波器的非理想性,一般输出信号的最大频率只能达到参考时钟频率fr的40%左右。

  3基于ATmega8的DDS信号发生器设计

  (1)硬件设计

  系统框图如图2所示。

  本系统采用AD公司的DDS芯片AD9832。AD9832是一块集成了一个32位的相位累加器、正弦函数功能查询表和一个10位D/A转换器的CMOS芯片。它的最高时钟频率为25MHz,内部包含两个32位的频率寄存器和四个12位的相位寄存器,可以产生一个最高频率为10MHz,频率和相位都可以编程控制的模拟正弦波,它的频率分辨率为0.00582Hz,相移可以是(360/4096)°的任意整数倍,易于实现灵活的高精度PSK和FSK调制。

  本系统的一个特点是控制芯片采用ATMEL公司的AVR系列单片机ATmega8,用于控制键盘、显示和DDS芯片的工作。AVR单片机由于采用了精简指令集RISC结构,因此具有1MIPS/MHz的高速运行处理能力。同样以12MHz的晶振为例,AVR单片机的一个机器周期为1/12µs,而普通51单片机的一个机器周期则为1µs。因此,使用AVR单片机来加载和控制频率/相位转换时间极短的DDS芯片,对于提高整个系统的运行速率和性能都是十分有利的。此外,在AVR家族中,ATmega8是一种非常特殊的单片机,它的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备AVR高档单片机MEGA系列的全部性能和特点,并且在省电性能、稳定性、抗干扰性及灵活性方面都比AT90系列更加周全和完善。而且由于采用了小引脚封装(为DIP 28和TQFP/MLF32),不仅能够有效减小硬件系统的体积,而且其价格仅与低档单片机相当,成为具有极高性价比的单片机。

  4×4的小键盘用于设定工作模式、频率和相位参数,显示部分采用16×2的通用点阵字符液晶显示器。调制信号通过接口电路送入AD9832,然后通过0~10MHz的低通滤波器输出。

  (2)软件设计

  图3为单片机ATmega8的软件流程图。其中“AD9832初始化”是对AD9832写入一些控制字,包括对SLEEP、RESET、CLR、SYNC、SELSRC控制位的设置,一旦设定后,AD9832将保持设定状态不变,直到重新对这些控制位进行设定。初始化之后开始对键盘进行查询,当检测到有键按下时,判断键值,执行相应的操作,并将结果显示在LCD上。当检测到“确定”键被按下后,根据键盘设定的工作模式以及相应的参数来改变控制字,包括频率、相位控制字的计算和写入,使用管脚还是使用串行控制位来选择频率、相位寄存器,以及选择哪个或哪些寄存器的值等等,然后输出波形,等待下一次的键盘输入。

  本系统的另一特点是采用以高级程序设计语言BASIC为手段的AVR单片机开发平台:BASCOM-AVR。它是MCS Electronics公司推出的面向AVR单片机系列,采用高级程序设计语言Windows BASIC的软件开发平台。其特点主要有:程序语句和Microsoft VB/QB高度兼容,为标准的LCD显示器,I2C芯片和单总线协议芯片等扩充了专用语句,内置模拟终端和程序下载功能,内置软件仿真平台用于测试,具有完善的连机帮助功能和大量的例程。不仅控制灵活方便,而且学起来比较简单直观。在本系统的软件设计中,它最大的特点体现在对键盘和LCD的控制上。在BASCOM-AVR中,已经提供了一个读4×4键盘的专用功能函数(GETKBD),利用这个函数我们就不必从底层编写键盘扫描子程序了,只需调用该函数,就能完成按键扫描和消抖处理的过程,返回一个按键的值,非常方便灵活。在LCD的使用上,如果要先编写底层的控制子程序,再编写上层的应用程序,需要花费较长的时间。但是由于点阵字符液晶显示器模块在国际上已经规范化,因此BASCOM中提供了强大的LCD应用的功能语句,在LCD的字符显示、清屏,光标的定位、显示、闪烁等控制上都有专门的语句供调用,只要写上几条语句,需要显示的信息就能在LCD上显示出来。

  本系统设计了三种工作模式:点频、FSK、PSK。采用25MHz的晶振作为参考时钟,可以产生 0~10MHz 频率和相位都能精确控制的正弦波,频率分辨率为0.01Hz,相位分辨率为0.1°。结果显示,在频率跳变的过程中,波形衔接得非常好,中间没有控制失调的过渡带出现。此外,在产生PSK信号的过程中,相位跳变的瞬时性和准确度均很好,可以精确控制相位是DDS的一个突出优点,也是其它频率合成手段难以达到的。

  4结束语

  本文介绍了DDS的工作原理,设计了由AVR单片机ATmega8控制AD9832的DDS电路,构成了一个控制简便,响应速度快、稳定性、精度和分辨率都很高的频率合成器,输出信号的频率范围为0~10MHz,分辨率为0.01Hz,可实现点频、FSK和PSK输出。随着通信技术的发展, DDS合成信号源在国防通信、铁路通信及民用移动通信等方面,将得到广泛的应用。

  参 考 文 献

  1Analog Devices, Inc. CMOS Complete DDS AD9832 Datasheet, 1999

  2马潮,詹卫前,耿德根. ATmega8原理及应用手册. 北京:清华大学出版社,2003

  3耿德根,宋建国,马潮,叶勇建. AVR高速嵌入式单片机原理与应用. 北京航空航天大学出版社,2001

  4刘铁新,高俊法. 一种单片DDS构成的新型频率合成器. 宇航计测技术,1999,4

继续阅读
基于ATmega8 单片机的工频电压/频率仪设计

基于ATmega8单片机工频电压/频率仪硬件电路简单、性能稳定可靠、经济适用,能满足一般的测量精度要求。

满足您创新创意的需要,亲手打造属于你的Arduino

Arduino,满足您创新创意的需要!Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它适用于艺术家、设计师、爱好

用Arudino打造多功能电子闹钟

前段时间入手了一块 LCD12864中文屏幕,带中文字库,有驱动库可以直接驱动;还有一个时钟模块,型号是最常见的DS1302,突发奇想,就做个电子闹钟玩玩吧,又想只做个闹钟有点单调了,既然手头有温湿

基于AVR单片机的LED显示屏的灰度设计与实现

LED点阵块具有亮度高、发光均匀、可靠性好、拼装方便等优点,能构成各种尺寸的显示屏。目前,LED显示屏已被广泛应用于文字显示并取得了很好的效果,但是大部分仅能显示滚动的文字信息而不能显示图像,并且还

基于ATMEGA8的LED彩灯控制器设计

如果你想改变LED接的管脚,请修改hardware.h文件。如果想修改LED的亮度,请修改globals.h 中的Timings 段定义。本设计外接了两个按钮,一个是选择工作模式,另一个是电源的开关。当你按下模式按钮1.5秒以上时,进入自动模式,会自动演示所有的预设模式。

©2018 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss