微波EDA网,见证研发工程师的成长!
首页 > 微波射频 > 微波器件设计 > 基于单片机的直接数字频率合成器的设计

基于单片机的直接数字频率合成器的设计

时间:11-14 来源:现代电子技术 点击:

作者:丁小汀
(北京交通大学电子信息工程学院北京100044)

摘要:直接数字频率合成具有一系列优点,如频率切换速度快、频率分辨力高、频率和相位易于控制等。DDFS可以产生各种所需要的波形。根据直接数字频率合成的原理,利用80C51单片机、数/模转换器DAC0832以及一些外围电路设计了一种正弦波发生器。该系统电路设计简单、频率控制灵活,具有良好的实用性和可扩展性,不仅可用于正弦波的发生,还可根据存储器中存放的不同波形数据,输出其他波形。

关键词:直接数字频率合成;单片机;正弦信号;频率控制

1

频率合成技术迄今已经历了三代:直接频率合成技术、锁相环频率合成技术、直接数字式频率合成技术。直接数字式频率合成(Direct Digital Frequency Synthesis,DDFS或DDS)是第三代频率合成技术的标志,他的主要特点是计算机参与频率合成,既可以用软件来实现,也可以用硬件来实现,或二者结合。直接数字式频率合成器的最大优点就是频率切换的速度极快(可达几微秒),并且频率、相位和幅度都可控,输出频率稳定度可达系统时钟的稳定度量级,易于集成化,更主要的是由于计算机参与频率合成,故可充分发挥软件的作用。虽然现有的专用DDFS芯片的功能也比较多,但控制方式却是固定的,因此不一定是我们所需要的。本文利用80C51单片机、D/A转换器以及一些外围寄存器设计的直接数字频率合成器,电路设计简单、频率控制灵活,具有良好的实用性,信号精度误差也在允许范围之内。

 

2 DDFS的基本原理和总体框图

DDFS基本上由5部分组成,如图1所示:频率码锁存器(FR)、相位累加器(PA)、ROM(正弦表)、数/模变换器(D/A)、低通滤波器(LPF),他们在时钟的统调下工作。首先,把一个单位幅度的正弦函数的相位在0~2 弧度内分成尽可能小的等间隔点,若用A位二进制数表示,分成2 个间隔点,则最小相位间隔应是:

\

算出相应相位点的单位正弦函数值,并用D位二进制数表示,写入有A位地址线、D位数据线的ROM 中,构成一个所谓正弦表。合成频率的过程是控制改变相位增量(即相位跳过的最小相位间隔的数目),由于相位增量不同,在一个正弦周期内的取样点就不同,而取样是在系统时钟控制下进行的,即取样周期是一定的,这样,根据相位增量的累加和所对应的点(代表相位值)从ROM 中读出相应的函数值所形成的量化正弦波的周期也随相位增量的改变而改变,从而达到合成所需频率的目的。

\

在图1中,相位累加器根据频率码锁存器中的频率码k每个时钟累加一次,其输出一方面(N位)回到加法器的另一个输入端作为下一次累加的被加数,另一方面(A位)作为ROM 的地址码对R0M 寻址,读出相应的正弦函数值(二进制代码),经过数据缓冲器稳定之后送到D/A变换器,得到一个幅值对应于PA输出相位点的正弦函数值。下一个时钟到来,累加器再增加一个k值,ROM 同样读出累加器输出的A位地址码所对应的正弦值,再送至D/A变换器。如此下去,相位累加器输出值是一个阶梯式的,相应地,D/A 的输出是一个以正弦为包络的阶梯波。相位累加器的溢出正好对应着阶梯正弦波的一个周期结束,再开始下一个周期。经低通滤波器的平滑滤波得到频率为,f0的正弦波。由于时钟周期Tc= (1/fc)是定值,而且是高稳定的,所以输出频率亦很稳定。
频率分辨率为:
 \  
输出频率为:

\

式中N为相位累加器的位数,k为频率码。如果N=A,设定的k就是每个时钟PA所跳过的最小相位间隔数。N 的增加意味着频率分辨率的提高,但是A的增加却意味着ROM 容量的增加,使设备复杂化,故一般N> A。本设计中的参数设置:N =12,A =10,D=8。

3 系统主要功能模块的具体实现

3.1 频率码锁存器(FR)、相位累加器(PA) 

如图2所示,频率码锁存器由2片8位D型锁存器74LS373构成,第Ⅱ片只使用D0~D3 ,形成12位的频率码。相位累加器由3片4位全加器74LS283构成,形成12位的加法器。加法器的输出经过2片寄存器74LS273后一方面(12位)反馈到全加器的输入端作为被加数,另一方面(10位,舍弃低2位)作为地址码对ROM 寻址,而频率码锁存器输出的频率码k作为加数。此处寄存器74LS273主要起数据缓冲的作用,他们都是在时钟上升沿作。

3.2 ROM 正弦表

R0M正弦表用单片机80C51内部的程序存储器来实现。由于相位累加器输出的地址A是10位,而每个正弦函数值用8位二进制数来表示,所以正弦表的容量是1 kB。80C51的片内程序存储器容量为4 kB,完全足够,因此不用再扩充片外程序存储器了。用80C51的P3.1,P3.0以及P1.7~P1.0作为10位地址的输入口,用查表程

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top