试论基于单片机的DDS算法的实现
2019-12-23◆罗昕易群
◆罗 昕 易 群
(江西交通职业技术学院 江西 330013)
直接数字频率合成信号发生器凭借其高分辨率、低相位噪声以及稳定的输出效率,逐渐成为最常见的信号发生器。信号发生器功能取决于DDS算法,结合单片机使用DDS算法可以优化单片机性能,让单片机服务质量提升,推动我国各个行业的发展。因此,研究单片机和DDS算法的结合具有重要意义,有助于推动单片机的广泛应用,让单片机性能更加优化。
1 单片机
单片机作为一种集成电路,使用大规模集成电路将CPU、RAM、ROM、定时器等设备集成为微型计算机系统。目前单片机逐渐被各个领域应用,渗透到人们的日常生活中,在飞机仪表、导航装置、数据传输、工业自动化、网络通信等方面,单片机都发挥着重要作用。单片机开发应用给各个行业带来了巨大帮助。例如利用单片机功耗低、体积小的优势,让很多精密测量仪器,如电压表、分析仪提供精准数据。
如今直接数字频率合成信号发生器由于具有信号稳定、频率以及噪声低的优势逐渐替代RC、LC振荡电路信号发生器,变成信号发生器主流发展方向。DDS信号发生器核心设计在于应用DDS算法,最常见的方法有两种。第一种是利用FPGA形成DDS算法,也就是通过HDL进行DDS算法设计,形成波形数字的序列,通过FPGA输出转换器,从而让信号输出得以实现。第二种是使用DDS芯片,对单片机改用DDS芯片寄存器,输出同等波形和频率的模拟信号,芯片的算法在出厂时已经完成设计,不需要另行设计。本文着重研究利用单片机替代专用芯片,借助于C语言的编程方法实现DDS算法,让单片机可以实现信号发生器设计。
2 DDS基本原理
DDS是一种直接数字合成技术,通过相位累积查表,实现合成波形,在波形存储器中保存波形幅值数据,对频率控制进行调节,使用相位累加器在波形存储器内对频率加以控制,经过D/A转换器以及滤波器,形成波形的输出。如AD9850 DDS芯片,其单电源工作使用3.3V或者5V,接口简单,可以允许八位并行口或者串行口实现频率和调制数据的装载。使用高性能转换器和比较器,可以让正弦波、方波得到输出。芯片的最高工作时钟为125MHz,在该时钟下频率控制字可以达到0.0291Hz的分辨率。调相控制字为5位,让相位调制功能得到实现,频率转换速度可以达到2.3*107次/s。该芯片的功率较低,在两种电源下分别只有155mW、380mW。该芯片应用了DDS技术,芯片内部包含32位相位累加器、10位DA转换器、1个高速比较器,使芯片性能达到了实际要求。
3 基于单片机的DDS算法的实现
(1)设计要点
目前信号发生器存在一定问题,主要体现在频率范围相对较小,且调整频率只能成倍调整,无法进行连续输出。按键输入系统不能输出任意信号。为了让频率得到增加,需要减少定时器时间,溢出时间不能过小,要注意中断函数代码时间,减少频率包含两种方法,第一种是将中断溢出时间加以延长,第二种是给DAC输出数据,将数据写入DAC中。若采取第一种方法,调整频率需要调整两个参数,也就是步进值以及中断值。使用这种方法并不能实现精确调整频率,还需要调整一个参数实现精准的输出。为方便于计算经常设定固定中断溢出时间,参数调整使用步进值step。一般情况下要减少频率,进而让步进值有所减小,最小设定为1。调整步进值需要用到DDS原理,假设时钟是2MHz,寄存器设定N Bit,受到时钟的驱动,累加器的输出结果反馈给累加器输入端,数据逐渐累加。时钟脉冲被反馈向B,循环累积。按照步进值进行时钟的累加,让N Bit数据得到循环累积,完成地址的循环。
(2)C语言设计DDS算法
由于DDS算法基于相位进行频率合成,实现信号的生成。在DDS中,主要包括相位累加器、数模转换器、时钟、滤波器、正弦波形存储器这五个部分。相位累加器也就是计数器,由于时钟脉冲影响,让相位增量逐渐累加。若累加器溢出,溢出位除外,累加器会保留数字位。将输出数据作为地址,对正弦查询表加以查询,将正弦数据转化为模拟信号。低通滤波器可以将模拟信号输出为正弦波的信号。使用DDS算法主要利用相位累加器实现相加,输出得到0~(232-1),将后八位当作查询表地址,同时将正弦波数据在正弦表中保存,使用八位转换器,可以使用256个点得到完整正弦波数据。频率控制字决定输出信号频率。受到单片机运行影响,选择10KHz时钟频率。得到频率控制字后,想要获得输出频率只需要时钟频率和频率控制字相乘即可。
根据DDS算法的本质,考虑到不同时钟脉冲Felk作用,累加器要加1,查找正弦表获得波形数据,依照C语言编程特征,使用定时中断替代DDS时钟脉冲方式,时钟作用可以使用定时中断来实现。首先利用定时器设置初始化程序,要求100μs的中断,在中断程序中DDS算法得以实现。Felk设定10KHz的数值。受到单片机速度极限的限制,周期设置不能过于短,避免造成输出信号频率受到影响。使用高速CPU,利用短定时周期,可以让输出信号频率得到提升。其次需要对相位累加器加以设置,先设置32位寄存器,使用加法进行运算,定时中断要将频率控制字和累加器进行相加,同时将结果储存在累加器中。最后设置正弦查询表,先对包含256数组的数据表进行储存,用于设定正弦数据表的存放。若出现定时中断,将累加器后八位当作索引,以方便读取数据。
(3)低通滤波器设计
为了避免输出频率受到外界环境的干扰,要使用低通滤波器进行过滤。常见滤波器使用频率响应有巴特沃斯型、椭圆型以及切比雪夫型三种。巴特沃斯型滤波器通带最为平整,没有纹波,在零频位置上,对于信号造成的衰减最不明显,但是由于过渡带并不陡峭,对于通带要求相对高,适用于去除和通带距离较远频率;切比雪夫滤波器在通带衰减上存在起伏变化,但过渡带较为陡峭;椭圆滤波器通带存在起伏,但是过渡带相对陡峭。因此通常选择椭圆滤波器进行设计。
(4)软件设计
应用系统中,软件设计建立在硬件电路基础上,依据系统功能满足系统多种需求,软件设计可以让微控制器得到充分发挥,让仪器精度以及便捷性得到优化。经过程序设定频率,有效控制频率,对用户键盘频率设定,判断频率是否处于范围之内,形成频率控制字,使用并行方式送进DDS,合成用户需要的频率。单片机具备中断功能,根据中断方式对键进行判断,消抖之后使用扫描方式确定闭合键,中断之后产生MSP430唤醒。定义按键为功能键或数字键,选择输出波形,正弦波用于扩充功能,使用数字键输入频率。
4 结论
本文研究了在51单片机基础上DDS算法的实现,在低频要求为满足敏感信号源的设计要求,使用程序实现DDS算法更具优势。通过利用DDS技术的优势,让单片机优化硬件和软件,让其更稳定的运行,提供高分辨率满足人们使用需求。