摘要:在分析了DDS基本原理以及AD9858基本特点的基础上,介绍了AD9858的送数方式及单片机接口程序。给出了利用AD9858内部寄存器来实现跳频时间小于50ns的4频点快速跳频的具体方法。
关键词:DDS;AD9858;快速跳频
在电子系统中,常常需要应用频率合成技术来实现跳频源设计。频率合成指对一个高稳定的参考频率进行各种技术处理,以生成一系列稳定的频率输出。目前应用最广的是锁相环(PLL)频率合成技术,它是通过改变PLL中的分频比N来实现跳频的,但PLL无法避免环路锁定时间缩短与频率分辨率提高及杂散减小之间的矛盾,因此很难同时满足高速跳频和细步长、低杂散的要求。直接数字频率合成(DDS)是一种新的频率合成技术。它具有频率分辨率高、频率切换快、频率切换时相位连续等优点,因而被广泛应用于雷达跳频、通信、电子对抗等系统中。
1 DDS基本原理
DDS的原理框图如图1所示。相位累加器在A位频率控制字FCW的控制下,以参考时钟频率fc为采样率来产生待合成信号相位的数字线性序列,然后将其高P位作为地址码,通过查询正弦表ROM产生S位对应信号波形的数字序列S(n),再由数模转换器将其转化为阶梯模拟电压波形,最后由低通滤波器LPF平滑为正弦波输出。
频率控制字FCW和时钟频率fc共同决定了DDS的输出信号频率fo 。其关系是:
输出频率:f0=FCW fc/2A
频率的分辨率为:fo=fc/2A 2 AD9858的特点及送数方式
AD9858的主要特点:
● 具有1千兆次/秒的采样速率;
● 具有高达2GHz的输入时钟(通过2分频);
● 集成有10位D/A转换器;
● 内含32位可编程频率寄存器;
● 带有8位并行及SPI串行控制接口;
● 具有自动频率扫描功能;
● 内带4个频率寄存器;
● 采用3.3V低电源供电;
● 电荷泵独立供电电压可达5V;
● 集成有2GHz混频器。
由于DDS产生的频率是由频率控制字FCW控制的,改变相应频率的控制字即可获得所需频率。因此DDS的送数方法是实现DDS跳频源的关键之一。其内部结构框图如图2所示。
AD9858有并行和串行两种送数方式。数据从用户传输到DDS器件核心需要两个步骤。在写操作时,不管是用并行送数方式还是串行送数方式,用户都要首先将数据写入I/O缓冲器。只有当数据从I/O缓冲器锁入存储寄存器,DDS的核心才接收到数据。在AD9858中,触发FUD脚或者改变预编程的Profile都可以使I/O缓冲器中的数据进入DDS的核心存储寄存器。
(1)并行送数模式时,系统应激活八个双向数据口(D0~D7)、六个地址输入口(ADDR5~ADDR0)、一个读口(RD)和一个写口(WR),寄存器的选择由寄存器图提供的地址决定。读写功能由RD和WR脉冲触发控制,但这两个功能不能同时起作用。读写的数据可通过D0~D7脚传输。
图2
(2)串行送数模式包括两个阶段。第一阶段由一个8位的指令周期构成。最高位是标志位,用于确定是读操作还是写操作,低六位是串行送数目标寄存器的地址。第二阶段就是送数据给寄存器。
许多时候DDS都要求快速跳频,而频率的快速变化则要求寄存器的频率控制字快速更新,因此,通常都要求DDS选用并行送数。相对于ADI公司以往的DDS芯片而言AD9858的优势在于它具有四个频率寄存器及四个相位补偿寄存器这使得它可以方便快速的产生跳频信号以及四相码编码调制信号而且它转换时间极短。这是因为跳频的频率控制字已经送入DDS核心寄存器中的四组控制寄存器,频点之间的选择是依靠外部选择信号PS1和PS0来实现的。
3 基于AD9858的快速跳频设计
3.1 跳频电路
送数及四频点的切换通过单片机来完成。89C51单片机可在5V电压下工作,但实验证明,3.3V供电时,89C51单片机的工作也是完全正常的,采用单片机和DDS芯片AD9858设计的跳频原理图如图3。
3.2 软件程序设计
根据AD9858的时序特点,可将单片机的P1.0和P1.1分别与RD和WR相连。这样,编程时就可以对频率控制字和相位补偿字的地址列表作如下具体设置:
FTW0_1 EQU 00101011B
FTW0_2 EQU 00101111B
FTW0_3 EQU 00110011B
FTW0_4 EQU 00110111B
POW0_1 EQU 00111011B
POW0_2 EQU 00111111B
最低两位分别是RD和WR,初始化时将其均置为高位。三到六位才是送数的地址。一个频点的送数程序如下:
MOV P3, 40H
MOV P1, #FTW0_1
CLR WR_
SETB WR_
SETB FUD
CLR FUD
MOV P3, 40H
MOV P1, #FTW0_2
CLR WR_
SETB WR_
SETB FUD
CLR FUD
MOV P3,40H
MOV P1, #FTW0_3
CLR WR_
SETB WR_
SETB FUD
CLR FUD
MOV P3, #40H
MOV P1, #FTW0_4
CLR WR_
SETB WR_
SETB FUD
CLR FUD
;
MOV P3, #00H
MOV P1, #POW0_1
CLR WR_
SETB WR_
SETB FUD
CLR FUD
;
MOV P3, #00H
MOV P1, #POW0_2
CLR WR_
SETB WR_
SETB FUD
CLR FUD
设计时,应先将8位频率控制字送入单片机的P3口,再将这8位的地址送入P1口。由于送8位地址的同时也将WR置为高位。因此,将WR置低就可将8位控制字和6位地址送入DDS缓冲器。由于频率的更新只需FUD一个上升沿,所以将FUD置为高位就可将8位数据送入指定的频率寄存器(初始化已将FUD置为低位),最后再将FUD置为低位,以为后边的频率更新设置上升沿做准备。
通过一个简单的程序可将一个频点的控制字送入DDS的存储寄存器。再通过相同的地址列表和送数方式就可将所需要的其它三个频点送入DDS的存储寄存器。这样,通过外部选择信号PS1和PS0就可以快速在这四个频点间进行切换。
由于AD9858内部的频率寄存器有限,因此,在跳频的频点较多时,每次跳频都需要改变频率控制字。DDS的实际跳频时间包括送数和内部切换时间。如果使用内部寄存器通过PS1和PS0来控制切换频率,则跳频时间只有内部切换时间,所以,这种跳频是相当快的。
图3
4 实验及测试结果
实验表明(该实验采用400MHz低相噪时钟):AD9858的内部切换时间仅为纳秒级。该实验使用周期逻辑电平控制 PS1和PS0,并通过对PS1和PS0信号的选择来实现频率的切换。最后使用高频示波器来测试跳频时间。
笔者进行的第一个实验是将一个寄存器的频点FCW设为00000000H(0MHz),另一个寄存器的频点FCW设为20000000H(125MHz)。测试结果为:从0MHz跳频到125MHz所用的时间为17.6ns。
第二个实验是将一个寄存器的频点FCW设为19999999H(100MHz),另一寄存器的频点FCW设为20000000H(125MHz)。测试结果为:从100MHz跳频到125MHz所用的时间为33.6ns。
5 结论
从两次测试的结果来看利用AD9858内部寄存器来实现快速跳频是完全可行的。由于测试过程中存在数据传输延迟,PS0和PS1控制电平的上升沿,所以测试存在一定的误差,实际跳频时间应比测试结果更短一些。
由于AD9858内部只有四个频率寄存器,所以跳频的点有限。在跳频点不需要很多、跳频时间要求很短时,此方法优越性十分明显。