基于单片机的直接数字频率合成器的设计
发布时间:2008/5/27 0:00:00 访问次数:580
1 引 言
频率合成技术迄今已经历了三代:直接频率合成技术、锁相环频率合成技术、直接数字式频率合成技术。直接数字式频率合成(direct digital frequency synthesis,ddfs或dds)是第三代频率合成技术的标志,他的主要特点是计算机参与频率合成,既可以用软件来实现,也可以用硬件来实现,或二者结合。直接数字式频率合成器的最大优点就是频率切换的速度极快(可达几微秒),并且频率、相位和幅度都可控,输出频率稳定度可达系统时钟的稳定度量级,易于集成化,更主要的是由于计算机参与频率合成,故可充分发挥软件的作用。虽然现有的专用ddfs芯片的功能也比较多,但控制方式却是固定的,因此不一定是我们所需要的。本文利用80c51单片机、d/a转换器以及一些外围寄存器设计的直接数字频率合成器,电路设计简单、频率控制灵活,具有良好的实用性,信号精度误差也在允许范围之内。 2 ddfs的基本原理和总体框图 ddfs基本上由5部分组成,频率码锁存器(fr)、相位累加器(pa)、rom(正弦表)、数/模变换器(d/a)、低通滤波器(lpf),他们在时钟的统调下工作。 首先,把一个单位幅度的正弦函数的相位在0~2π弧度内分成尽可能小的等间隔点,若用a位二进制数表示,分成2a个间隔点,则最小相位间隔应是: 算出相应相位点的单位正弦函数值,并用d位二进制数表示,写入有a位地址线、d位数据线的rom中,构成一个所谓正弦表。合成频率的过程是控制改变相位增量(即相位跳过的最小相位间隔θmin的数目),由于相位增量不同,在一个正弦周期内的取样点就不同,而取样是在系统时钟控制下进行的,即取样周期是一定的,这样,根据相位增量的累加和所对应的点(代表相位值)从rom中读出相应的函数值所形成的量化正弦波的周期也随相位增量的改变而改变,从而达到合成所需频率的目的。 相位累加器根据频率码锁存器中的频率码k每个时钟累加一次,其输出一方面(n位)回到加法器的另一个输入端作为下一次累加的被加数,另一方面(a位)作为rom的地址码对rom寻址,读出相应的正弦函数值(二进制代码),经过数据缓冲器稳定之后送到d/a变换器,得到一个幅值对应于pa输出相位点的正弦函数值。下一个时钟到来,累加器再增加一个k值,rom同样读出累加器输出的a位地址码所对应的正弦值,再送至d/a变换器。如此下去,相位累加器输出值是一个阶梯式的,相应地,d/a的输出是一个以正弦为包络的阶梯波。相位累加器的溢出正好对应着阶梯正弦波的一个周期结束,再开始下一个周期。经低通滤波器的平滑滤波得到频率为f0的正弦波。由于时钟周期tc=(1/fc)是定值,而且是高稳定的,所以输出频率亦很稳定。 输出频率为: 式中n为相位累加器的位数,愚为频率码。如果n=a,设定的k就是每个时钟pa所跳过的最小相位间隔数。n的增加意味着频率分辨率的提高,但是a的增加却意味着rom容量的增加,使设备复杂化,故一般n>a。本设计中的参数设置:n=12,a=10,d=8。 3 系统主要功能模块的具体实现 3.1 频率码锁存器(fr)、相位累加器(pa) 频率码锁存器由2片8位d型锁存器74ls373构成,第ⅱ片只使用d0~d3,形成12位的频率码。相位累加器由3片4位全加器74ls283构成,形成12位的加法器。加法器的输出经过2片寄存器74ls273后一方面(12位)反馈到全加器的输入端作为被加数,另一方面(10位,舍弃低2位)作为地址码对rom寻址,而频率码锁存器输出的频率码k作为加数。此处寄存器74ls273主要起数据缓冲的作用,他们都是在时钟上升沿工作。 3.2 rom正弦表 rom正弦表用单片机80c51内部的程序存储器来实现。由于相位累加器输出的地址a是10位,而每个正弦函数值用8位二进制数来表示,所以正弦表的容量是1 kb。80c51的片内程序存储器容量为4 kb,完全足够,因此不用再扩充片外程序存储器了。用80c51的p3.1,p3.0以及p1.7~p1.0作为10位地址的输人口,用查表程序根据地址读出相应的函数值,再由p0口输出,送至d/a转换。 所谓查表法,就是预先将满足一定精度要求的表示变量与函数值之间关系的一张表求出,然后把这 丁小汀
|