基于单片机的直接数字频率合成器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的直接数字频率合成器的设计
丁小汀
【摘要】直接数字频率合成具有一系列优点,如频率切换速度快、频率分辨力高、频率和相位易于控制等.DDFS可以产生各种所需要的波形.根据直接数字频率合成的原理,利用80C51单片机、数/模转换器DAC0832以及一些外围电路设计了一种正弦波发生器.该系统电路设计简单、频率控制灵活,具有良好的实用性和可扩展性,不仅可用于正弦波的发生,还可根据存储器中存放的不同波形数据,输出其他波形.【期刊名称】《现代电子技术》
【年(卷),期】2007(030)013
【总页数】3页(P55-57)
【关键词】直接数字频率合成;单片机;正弦信号;频率控制
【作者】丁小汀
【作者单位】北京交通大学,电子信息工程学院,北京,100044
【正文语种】中文
【中图分类】TN742.1
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位二进制数表示,分成2A个间隔点,则最小相位间隔应是:
(1)
算出相应相位点的单位正弦函数值,并用D位二进制数表示,写入有A位地址线、D 位数据线的ROM中,构成一个所谓正弦表。
合成频率的过程是控制改变相位增量(即相位跳过的最小相位间隔θmin的数目),由于相位增量不同,在一个正弦周期内
的取样点就不同,而取样是在系统时钟控制下进行的,即取样周期是一定的,这样,根据相位增量的累加和所对应的点(代表相位值)从ROM中读出相应的函数值所形成的量化正弦波的周期也随相位增量的改变而改变,从而达到合成所需频率的目的。
图1 基本DDFS功能方框图
在图1中,相位累加器根据频率码锁存器中的频率码k每个时钟累加一次,其输出一方面(N位)回到加法器的另一个输入端作为下一次累加的被加数,另一方面(A位)作为ROM的地址码对ROM寻址,读出相应的正弦函数值(二进制代码),经过数据缓
冲器稳定之后送到D/A变换器,得到一个幅值对应于PA输出相位点的正弦函数值。
下一个时钟到来,累加器再增加一个k值,ROM同样读出累加器输出的A位地址码
所对应的正弦值,再送至D/A变换器。
如此下去,相位累加器输出值是一个阶梯式的,相应地,D/A的输出是一个以正弦为包络的阶梯波。
相位累加器的溢出正好对应着
阶梯正弦波的一个周期结束,再开始下一个周期。
经低通滤波器的平滑滤波得到频
率为f0的正弦波。
由于时钟周期Tc=(1/fc)是定值,而且是高稳定的,所以输出频率
亦很稳定。
频率分辨率为:
(2)
输出频率为:
(3)
式中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正弦表
ROM正弦表用单片机80C51内部的程序存储器来实现。
由于相位累加器输出的地址A是10位,而每个正弦函数值用8位二进制数来表示,所以正弦表的容量是1 kB。
80C51的片内程序存储器容量为4 kB,完全足够,因此不用再扩充片外程序存储器了。
用80C51的P3.1,P3.0以及P1.7~P1.0作为10位地址的输入口,用查表程序根据地址读出相应的函数值,再由P0口输出,送至D/A转换。
所谓查表法,就是预先将满足一定精度要求的表示变量与函数值之间关系的一张表求出,然后把这张表存于单片机的程序存储器中。
这时自变量为单元地址,相应的函数值为该地址单元中的内容。
在微机应用系统中,一般使用的表均为线性表,他是一种最常用的数据结构,是n个数据元素a1,a2,…,an的集合,各元素之间具有线性的位置关系。
每次查表时,首先将P3.1,P3.0以及P1.7~P1.0,输入的10位地址存放在20H,21H两个单元中(高字节在20H),他将作为查表时的地址偏移量(函数值存放在程序存储器的实际地址=表首地址+偏移量)。
图2 频率码锁存器、相位累加器的构成
3.3 数/模转换器(D/A)
数/模转换器DAC0832输入数字量是8位,参考电压Vref的工作范围是-10~+10 V,通过他将外加高精度电压源与内部的电阻网络相连接。
芯片内有一个8位输入寄存器和一个8位DAC寄存器,形成两级缓冲结构。
这样可使DAC转换输出前一个数据的同时,将下一个数据传送到8位输入寄存器,以提高数/模转换的速度。
DAC0832与80C51的接口电路如图3所示,80C51的P0口直接与DAC0832的数字输入DI7~DI0相接,80C51的与DAC0832的相接,P2.7与片选端连接,芯片采用的是单缓冲方式。
这时芯片的地址为7FFFH。
图3 80C51和DAC0832的接口电路
3.4 系统时钟的产生
系统时钟可利用80C51的定时/计数器产生。
时钟频率要根据最高输出频率确定,一般fc≥4f0max,而低通滤波器的截止频率为最高输出频率。
本设计中时钟频率要求为50 kHz,则要用定时器输出周期为20 μs方波。
选用定时/计数器T0,工作于方式0,输出为P2.0引脚。
20 μs的方波可由间隔10 μs的高低电平相间而成,因而只要每隔10 μs对P2.0取反一次。
由于实验用80C51的时钟频率为12 MHz,因此计数初值:
X=8 192-(10 μs×12 MHz/12)=8 192-10=8 182
4 软件设计
4.1 ROM查表程序
ORG 0100H
LTB: MOV 20H,P3
;将输入的10位地址存放在20H,21H两个单元
MOV 21H,P1
ANL 20H,#02H
;屏蔽20H的高6位
MOV DPTR,#TAB
;表首地址送DPTR
MOV A,21H
;(21H)左移一位
CLR C
RLC A
MOV 21H,A
MOV A,20H;
(20H)左移一位
RLC A
MOV 20H,A
MOV A,21H
;表首地址+偏移量
ADD A,DPL
MOV DPL,A
MOV A,20H
ADDC A,DPH
MOV DPH,A
CLR A
MOVC A,@A+DPTR
;查表得函数值
MOV DPTR,#7FFFH
;将DAC0832芯片的地址送DPTR MOVX @DPTR,A
;将函数值输出到DAC0832 LJMP LTB
RET
TAB: ……
;函数表
4.2 用定时器产生系统时钟的程序ORG 000BH
;定时器T0中断入口
AJMP BRT0
;转中断服务程序
ORG 0E00H
;主程序起始地址
START: MOV TH0,#0FFH
;装入计数初值
MOV TL0,#15H
MOV TMOD,#00H
;写控制字
SETB EA
SETB ET0
SETB TR0
;启动计数
LOOP: SJMP LOOP
;等待中断
BRT0: MOV TH0,#0FFH
;重新装入计数初值
MOV TL0,#15H
CPL P2.0
;对P2.0取反
RETI
5 结语
经过示波器观察可以看到清晰的正弦波形,通过计算机改变频率码k,可以得到不同频率的波形 ,且输出频率随频率控制字的增大而增大。
但输出频率超过13 kHz时,
输出波形明显失真,这主要由D/A转换、低通滤波等部分产生的杂散所致。
由于DDFS采用全数字结构,不可避免地引入了杂散。
其来源主要有3个:相位累加器
相位舍位误差造成的杂散,幅度量化误差(由存储器有限字长引起)造成的杂散和DAC非理想特性造成的杂散。
本文的设计是以产生正弦波为例,实际上只要在DDFS的波形存储器存放不同的波
形数据,就可以实现各种波形输出,如三角波、锯齿波和矩形波,甚至是任意波形。
另外只要在DDFS内部加上相应控制,如调频控制FM、调相控制PM和调幅控制AM,即可以方便灵活地实现调频、调相和调幅功能,产生FSK,PSK,ASK和MSK等
信号。
在通信、雷达、电子对抗、导航、广播电视、遥控遥测、仪器仪表等领域具有广泛的应用前景。
参考文献
[1] 张俊谟.单片机中级教程[M].北京:北京航空航天大学出版社,1999.
[2] Liu Zhaohui,Lu Gengsheng.DDS(Direct Digital Synthe- sizer) Technique and Its Implementation in Homing System Test Equipment[Z].Signal Processing Proceedings,2000.WCCC-ICSP 2000.5th International Conference.2000,3:1 984-1 986.
[3] 姜田华.实现直接数字频率合成器的三种技术方案[J].电子技术应用,2004,30(3):1-3.
[4] 王宝库.基于单片机、EDA技术的波形发生器的设计[J].微计算机信
息,2005,(35):111-112.
[5] 冯建雨.单片机控制的函数发生器设计与实现[J].机床电器,2005,32(5):45-49.。