作者:武汉空军雷达学院 石 雄 杨加功 彭世蕤
摘要:介绍了美国AD公司采用先进的直接数字频率合成(DDS)技术推出的高集成度频率合成器AD9850的工作原理、主要特点及其与MCS51单片机的接口,并给出了接口电路图和部分源程序。
关键词:直接数字频率合成(DDS) 控制字 控制时序 接口 AD9850
1 AD9850简介
随着数字技术的飞速发展,用数字控制方法从一个参考频率源产生多种频率的技术,即直接数字频率合成(DDS)技术异军突起。美国AD公司推出的高集成度频率合成器AD9850便是采用DDS技术的典型产品之一。
AD9850采用先地蝗CMOS工艺,其功耗在3.3V供电时仅为155mW,扩展工业级温度范围为-40~80℃,采用28脚SSOP表面封装形式。AD9850的引脚排列如图1所示,图2为其组成框图。图2中层虚线内是一个完整的可编程DDS系统,外层虚线内包含了AD9850的主要组成部分。
AD9850内含可编程DDS系统和高速比较器,能实现全数字编程控制的频率合成。可编程DDS系统的核心是相位累加器,它由一个加法器和一个N位相位寄存器组成,N一般为24~32。每来一个外部参考时钟,相位寄存器便以步长M递加。相位寄存器的输出与相位控制字相加后可输入到正弦查询表地址上。正弦查询表包含一个正弦波周期的数字幅度信息,每一个地址对应正弦波中0°~360°范围的一个相位点。查询表把输入地址的相位信息映射成正弦波幅度信号,然后驱动DAC以输出模式量。
相位寄存器每过2N/M个外部参考时钟后返回到初始状态一次,相位地正弦查询表每消费品一个循环也回到初始位置,从而使整个DDS系统输出一个正弦波。输出的正弦波周期To=Tc2N/M,频率fout=Mfc/2N,Tc、fc分别为外部参考时钟的周期和频率。
AD9850采用32位的相位累加器将信号截断成14位输入到正弦查询表,查询表的输出再被截断成10位后输入到DAC,DAC再输出两个互补的电流。DAC满量程输出电流通过一个外接电阻RSET调节,调节关系为ISET=32(1.148V/RSET),RSET的典型值是3.9kΩ。将DAC的输出经低通滤波后接到AD9850内部的高速比较器上即可直接输出一个抖动很小的方波。其系统功能如图3所示。
AD9850在接上精密时钟源和写入频率相位控制字之间后就可产生一个频率和相位都可编程控制的模拟正弦波输出,此正弦波可直接用作频率信号源或经内部的高速比较器转换为方波输出。在125MHz的时钟下,32位的频率控制字可使AD9850的输出频率分辨率达0.0291Hz;并具有5位相位控制位,而且允许相位按增量180°、90°、45°、22.5°、11.25°或这些值的组合进行调整。
2 AD9850的控制字与控制时序
AD9850有40位控制字,32位用于频率控制,5位用于相位控制。1位用于电源休眠(Power down)控制,2位用于选择工作方式。这40位控制字可通过并行方式或串行方式输入到AD9850,图4是控制字并行输入的控制时序图,在并行装入方式中,通过8位总线A0…D7将可数据输入到寄存器,在重复5次之后再在FQ-UD上升沿把40位数据从输入寄存器装入到频率/相位数据寄存器(更新DDS输出频率和相位),同时把地址指针复位到第一个输入寄存器。接着在W-CLK的上升沿装入8位数据,并把指针指向下一个输入寄存器,连续5个W-CLK上升沿后,W-CLK的边沿就不再起作用,直到复位信号或FQ-UD上升沿把地址指针复位到第一个寄存器。在串行输入方式,W-CLK上升沿把25引脚的一位数据串行移入,当移动40位后,用一个FQ-UD脉冲即可更新输出频率和相位。图5是相应的控制字串行输入的控制时序图。
AD9850的复位(RESET)信号为高电平有效,且脉冲宽度不小于5个参考时钟周期。AD9850的参考时钟频率一般远高于单片机的时钟频率,因此AD9850的复位(RESET)端可与单片机的复位端直接相连。
值得一提的是:用于选择工作方式的两个控制位,无论并行还是串行最好都写成00,并行时的10、01和串行时的10、01、11都是工厂测试用的保留控制字,不慎使用可能导致难以预料的后果。
3 单片机与AD9850的接口
AD9850有两种与微机并行打印口相连的评估版,并配有Windows下运行的软件,可以作为应用参考,但运用单片机实现对DDS的控制与微机实现的控制相比,具有编程控制简便、接口简单、成本低,容易实现系统小型化等优点,因此普遍采用MCS51单片机作为控制核心来向AD9850发送控制字。
单片机与AD9850的接口既要客商用并行方式,也可采用串行方式,但为了充分发挥芯片的高速性能,应在单片机资源允许的情况下尽可能选择并行方式,本文重点介绍其并行方式的接口。
3.1 I/O方式并行接口
I/O方式的并行接口电路比较简单,但占用单片机资源相对较多,图8是I/O方式并行接口的电路图,AD9850的数据线D0~D7与P1口相连,FQ-UD和W-CLK分别与P3.0(10引脚)和P3.1(11引脚)相连,所有的时序关系均可通过软件控制实现。
将DDS控制字从高至低存放于30H至34H中,发送控制字的程序清单如下:
MOV R0,#05H
MOV R1,#30H
DD:MOV P1,@R1
SETB P3.1
CLR P3.1
INC R1
DJNZ R0,DD
SETB P3.0
CLR P3.0
END
在程序中,每将一字节的数据送到P1口后,必须将P3.1(W-CLK)置高。在其上升沿,AD9850接收到P1口相连的数据线上的数据,然后将P3.1置低,并准备下一字节的发送,连续发送5个字节后,须将P3.0(FQ-UD)再次置高,以使AD9850根据则输入的控制字更改频率和相位输出,随后再置P3.0为低,准备下一组发送。单片机的P3.0、P3.1引脚为串行口,当被占用时,W-CLK和FQ-UD引脚也可与其它I/O脚相连,这时需要修改相应的发送程序。
3.2 总线方式并行接口
总线方式并行接口占用的单片机资源较少,在这种方式下,AD9850仅作为一扩展芯片而占用RAM的一段地址,必须时也可以只占用一个地址。图7是总线方式并行接口的电路原理图。同样将DDS控制字从高至低存放于30H至34H中,发送控制字的程序清单如下:
MOV R0,#05H
MOV R1,#30H
MOV DPTR,#0700H
DD:MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R0,DD
MOVX A,@DPTR
END
AD9850的W-CLK和FQ-UD信号都是上升沿有效,用MOVX @DPTR,A指令向AD9850传送控制字时,由74F138将高八位地址的低三位译码,其输出经反相并与反相后的信号相与得到一上升沿送至AD9850的W-CLK脚,此时已送到总线上的数据将被AD9850接收,连续五次将40位的控制字全部发送以后,用MOVA A,@DPTR指令产生FQ-UD信号,使AD9850更改输出频率和相位,此时读入到单片机内的数据实际上无任何意义。图7中AD9850的地址为0700H。
上述两种接口方式经实际应用证明:工作可靠,效果良好。单片机与AD9850的串行接口可参照有关资料进行设计。上述接口电路和程序也适用于与AD9850脚对脚兼容的AD9851,值得注意的是:AD9851的控制字与AD9850控制辽中别位的定义稍有区别,编程时应予以注意。
|