基于单片机AT89C51的AD9850DDS信息源设计与实现
摘要:该文阐述了直接数字频率合成DDS技术的基本概念、特点及工作原理,介绍了基于单片机AT89C51的AD9850DDS信息源系统所采用的两个主要核心芯片的功能、结构等,对基于单片机AT89C51的AD9850DDS信息源的设计与实现进行了深入探讨。
关键词:AT89C51;DDS技术;信息源;设计
1.引言
在电子及信息系统设备和领域中,无论是系统测试,还是应用系统,都少不了一个重要角色――信号源的参与。信号源可以根据不同的场合、需求和特点,提供输出一定波形幅值、频率可调,且频率准确、稳定的信号;甚至信号源还可以输出相位关系确定的多路波形信号。在这种背景之下,传统的模拟信号源已经明显落伍,不能满足现代电子技术设计测试的需要,而直接采用数字合成(Direct Digital Frequenly Synthesis,简称DDS)技术为满足这些目标提供了可能。直接数字频率合成技术具有频率分辨率高、带宽输出相对较宽、频率转换速度快、相位变换连续等优点,可以非常方便地实现对相位、幅度和频率的数字调制,能够满足数字化信号处理应用要求。由DDS技术产生的全数字化信号源,更具智能化、功能更强大、操作更便捷。DDS技术为信息源的设计提供了可靠保障,笔者使用单片机AT89C51为核心,以AD9850芯片作为DDS技术的实现载体,提出了一种信号源的设计与实现方法。
2.DDS技术基本原理
DDS技术是一种基于相位出发合成波形的全数字频率合成技术,该技术是建立在采样定理基础上,首先完成对所需波形进行采样,将采样值数字化后存入存储器作为查找表,然后再通过查表将数据读出,经过D/A转换器转换成模拟量,把存入的波形重新合成出来,进而实现信号的输出。DDS技术除具有上文所提到的优点外,还具有生成的正弦/余弦信号具有正交特性,相关输出信号得到有效数字化等特点,更便于信号的利用与效能的发挥。
DDS工作过程为:首先,将存于数表中的数字波形经数模转换器D/A,形成模拟量波形;改变寻址的步长来改变输出信号的频率,步长即为对数字波形查表的相位增量,由累加器对相位增量进行累加,累加器的值作为查表地址;D/A输出的阶梯形波形,经带通滤波,形成符合质量要求的模拟波形。DDS的核心是相位累加器。相位累加器由N位加法器与N位累加寄存器级联构成。每来一个时钟脉冲fs,加法器将控制字k与累加寄存器输出的累加相位数据相加,把相加后的结果送到累加寄存器的数据输入端,以使加法器在下一个时钟脉冲的作用下继续与频率控制字相加。用相位累加器输出的数据作为波形存储器的相位取样地址。波形存储器的输出送到D/A转换器,D/A转换器将数字量形式的波形幅值转换成所要求合成频率的模拟量形式信号。
3.主要芯片介绍
基于单片机AT89C51的AD9850DDS信息源,采用的主要芯片主要有两块,其中单片机AT89C51是系统的核心,AD9850为DDS信息源的主体部分。
A.AT89C51
AT89C51单片机是一种带有4K字节闪烁可编程可擦除只读存储器的低功耗、低电压、高性能CMOS8位微处理器。该单片机采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚具有较好的兼容性。AT89C51单片机基本结构如图1所示。
a.主要特性
与MCS-51兼容,具有4K字节可编程FLASH存储器。寿命可达1000写/擦循环,数据保留时间长。全静态工作:0Hz-24MHz,三级程序存储器锁定,具有128x8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源,可编程串行通道,具有低功耗的闲置和掉电模式和片内振荡器和时钟电路。
b.引脚功能
AT89C51单片机共有40个管脚,详见图2。
VCC:供电电压。GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写"1"时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部數据存储器进行存取时,P2口输出地址的高八位。在给出地址"1"时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入"1"后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口: P3.0 RXD(串行输入口)、P3.1 TXD(串行输出口)、P3.2 /INT0(外部中断0)、P3.3 /INT1(外部中断1)、P3.4 T0(记时器0外部输入)、P3.5 T1(记时器1外部输入)、P3.6 /WR(外部数据存储器写选通)、P3.7 /RD(外部数据存储器读选通)。P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
B.AD9850
AD9850是AD公司生产的最高时钟为125 MHz、采用先进的CMOS技术的直接频率合成器,主要由可编程DDS系统、高性能模数变换器(DAC)和高速比较器三部分构成,能实现全数字编程控制的频率合成。AD9850基本结构如图3所示。
a. AD9850主要工作性能
单电源工作:+3.3V或+5V。接口简单,可用8位并行口或串行口直接装载频率和相位调制数据。片内有高性能D/A转换器和高速比较器,可输出正弦波和方波。最高工作时钟125MHz,32位频率控制字保证在125MHz的工作时钟下频率分辨率达0.0291Hz。5位调相控制字,可实现相位调制功能。频率转换速率极快,可达2.3€?07次/秒。低功耗:在125MHz时钟频率、+5V电源工作时,功耗为380mW;110MHz时钟、+3.3v工作时,功耗为155mW。工作温度范围宽:-40℃~+85℃。
b. 基本工作原理
AD9850内含可编程DDS系统和高速比较器,可实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,由一个加法器和一个N位相位寄存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0€啊?60€胺段У囊桓鱿辔坏恪2檠戆咽淙氲刂返南辔恍畔⒂成涑烧也ǚ刃藕牛缓笄疍AC输出模拟量。相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相应地正弦查询表。每经过一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波频率fout=M*fc/ 2的N次方,fc为外部参考时钟频率。
AD9850 采用32 位的相位累加器将信号截断成14 位输入到正弦查询表,查询表的输出再被截断成10 位后输入到DAC,DAC再输出两个互补的电流。DAC 满量程输出电流通过一个外接电阻RSET调节,典型值3.9千歐。将DAC 的输出经低通滤波后接到AD9850内部的高速比较器上即可直接输出方波。在125MHz的时钟下,32 位频率控制字可使AD9850 输出频率分辨率达0.0291Hz。
c. 引脚功能
AD9850共有28个引脚,具体如图4所示。
图3 AD9850芯片结构框图 图4 AD9850引脚功能
D0-D7:8位数据输入口,可分次并行转载40位控制数据,D7(第250脚)也可以作为串行数据输入端使用;DEND:数字地;DVDD:数字电源;WCIK:数字写入脉冲;FQ-UD:频率刷新功能信号;CLK IN:外部参考时钟输入,可以是CMOS电子的脉冲序列;AGND:模拟电源;REST:DA 输出电流的了控制电阻连接端,通常接一只3.9K欧的电阻到地;QOUT:内部比较器输出端;QOUTB:内部比较器互补输出端;VINN:内部比较器的负相输入端;VINP:内部比较器的正相输入端;DACBL:内部的旁路端,通常悬空;IOUTB: DA 的互补输出端。
4. DDS信号源设计
基于单片机AT89C51的AD9850DDS信息源系统,控制核心采用单片机AT89C51,DDS芯片选用AD9850,系统产生信号为正弦波、方波和三角波,信号频率范围为:100-100KHz,频率步进<=100Hz,输出波形范围在为:0~5V(峰-峰值),可按0.1V调整,编程语言采用Keil C语言。
A.总体设计
基于单片机AT89C51的AD9850DDS信息源系统,主要由主控制器模块、正弦信号发生模块、输出电压放大模块、人机界面模块构成。系统基本结构框图如图5所示。
图5 基于单片机AT89C51的AD9850DDS信息源系统框图
B.硬件设计
信号产生模块用于输出三路正弦波、方波、三角波。其中正弦、方波信号由AT89C51单片机和AD9850DDS产生。数字输入值范围为0x000H~0xFFFH,其对应输出的模拟电压幅值为0 V~VREF-1LSB V(VREF参考电压为+5 V),1LSB的电压幅值即为5/4 096 V,从而产生所需信号。
基准调压电路,可使正弦信号以0 V为基准电压,上下对称、稳定输出。由于任意一路D/A转换器输出的正弦波形幅值变化范围仅在0 V-5 V,即正弦波的基准电压为2.5 V。因此,需要给输出的正弦波形升高一个电压基准。根据运算放大器的特性,此时U1B的反相输入端(引脚6)的电压值也为2.5 V。当正弦波经过差动放大电路(U1B及其外围电路R1、R2)和滤波电容C1后,波形输出端会获得电压幅值介于-2.5 V和+2.5 V之间的正弦波形。
C.软件设计
单片机软件部分具体编程方法为:通过程序循环传输D/A转换器波形的离散幅值数据,模拟基准时钟的功能;在单片机内部RAM取3个字节(24位)作为相位累加器;周期波形的幅值在相位上按256份等分,计算出的离散幅值数据组成波形数据表存储单片机内部ROM 中;程序每循环一次相位累加器累加一个频率控制字,从而得到一系列的相位值,直到相位累加器溢出,才完成波形一个周期的相位累加;取相位值序列的高8位数据,查
ROM表转换相位幅值,得到离散波形幅值;幅值序列通过D/A转换及滤波电路得到输出波形。
初始化程序如下:
参考文献
[1]刘旭东.基于DDS的毫米波汽车防撞雷达扫频源设计[J]电讯技术.2010.04
[2]马令坤,张震强,党宏社.DDS频率合成器杂散的分析与仿真[J]微电子学与计算机.2007.07
[3]徐晓林,刘四新.基于DDS芯片AD9851的步进频率源的设计与实现[J]大众科技.2009.05
[4]吴海超,邢斯瑞.基于AD9850的嵌入式信号源设计与实现[J]现代电子技术.2009.16
[5]吴士云,叶建芳,石 燚.DDS+PLL高性能频率合成器的设计与实现[J]现代电子技术.2010.05
[6]张志强,刘 琦,郭黎利.DDS芯片AD9851及其在全数字扩频调制中的应用[J]应用科技.2002.08