基于单片机和AD9858的4频点快速跳频设计
#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内部只有四个频率寄存器,所以跳频的点有限。在跳频点不需要很多、跳频时间要求很短时,此方法优越性十分明显。
- 基于51单片机和AD9858的4频点快速跳频设计(12-29)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)