基于单片机的数字合成波形发生器

2019-06-24 02:44李键傑
视听 2019年6期
关键词:译码二进制阶梯

□ 李键傑

一、概述

信号发生器,也称信号源,就是能够产生并输出符合用户要求的电信号的装置或仪器。信号发生器的基本构成主要有频率产生单元、缓冲放大单元、调制单元、输出衰减和阻抗变换单元、指示及调节控制单元等。其核心和基础的部分,是频率或波形产生单元。

根据频率产生方式可分为谐振法和合成法两种。谐振法是传承传统技术的方法,即用具有频率选择性的谐振回路来产生正弦振荡,并获得所需频率。频率合成法是指由一个或多个频率稳定度和精确度很高的参考信号源通过频率域的线性运算,产生具有同样稳定度和精确度的大量离散频率的过程。

二、频率合成技术

频率合成可分为直接频率合成和间接频率合成。而时下大多数研讨的是直接频率合成模式,这其中又分为非相干直接合成和相干直接合成。而相干直接合成模式大致可概括为直接数字合成(DDS)和直接模拟合成(DAS),间接模拟合成(PLL)和数字合成(PLL)。

DDS是一种全数字化的频率合成器,由相位累加器、波形ROM、D/A转换器和低通滤波器构成,是一种从相位概念出发直接合成所需要波形的新的频率合成技术。DDS实质上是对一个(或少许几个)参考频率进行数字分频的技术,通过编程频率控制字来对系统时钟进行分频,从而获得所需要的频率。由于DDS工作在数字域,很方便得到任意周期以及非周期波形。

三、基于单片机的数字频率合成

本文论述的数字合成波形发生器是一个实验装置,主要通过实验加深对DDS的运行过程和技术特点的理解和掌握。

(一)电路构成

实现数字频率合成主要由单片机和数模转换器DAC构成,并没有采用专用的DDS模块,而是通过单片机来实现DDS的部分功能。

上图是一幅仿真示图,现在的单片机有很多都把数模转换器DAC集成到单片机里面去了。

对照DDS构成原理和流程:

Fc→地址计数器(÷N)→波形存储器→D/A→LPF→fo

以DAC模块为界分为前后两个部分,DAC及后面部分,就是一个PCM译码输出的过程。而DAC前面部分,主要是生成符合要求的PCM二进制码组,而这部分在本实验里将由单片机通过运行程序代码来实现。

(二)DAC译码转换过程

当DAC接收到一个二进制数经译码后输出一个与其基准电压VREF为参照的电压值,即量化样值,并保持直到DAC接收下了一个数才会改变。因此在连续输入一串二进制数组的过程中,DAC的输出将是一串阶梯波,如下图b,然后经低通滤波器滤除高频分量,便可得到模拟信号。显然译码输出阶梯波要比还原为PAM波形(如下图a),其高次谐波含量大为减少,从而也降低了对滤波器的要求。

图b是二进制码组经DAC译码还原为量化后的阶梯波序列,阶梯级数对应脉冲抽样次数。因此其实质为以阶梯波来逼近所要得到的模拟信号波形。

那么如果要输出的是周期信号,则其波形周期为:T=Tc×N。

Tc是阶梯的脉冲宽度(每一级等宽),N是阶梯级数。可见其实质就是实现了一种数字分频,Tc就是合成频率的基准信号参数,称谓参考时钟信号周期,T则是合成波形周期。改变输出信号周期,一是保持阶梯宽度Tc不变而改变阶梯级数N,二是保持阶梯级数值N不变而改变阶梯宽度Tc,三是同时改变Tc、N。本实验装置采取保持阶梯宽度Tc不变而改变阶梯级数N的形式来改变输出信号频率。

(三)PCM的编码要求

单片机应用中常用的DAC芯片仅适用于单极性处理方式,采用的是自然二进制编码的PCM。即二进制码最小值为全0,中间值则按自然二进制递增规律递增,最大值为全1,每一个二进制码对应一个量化电压值。

为了对应上述DAC模块对PCM编码的要求,需要采用自然二进制码,均匀抽样均匀量化,而完成把模拟信号变换为二进制码组。

(四)波形数据的生成

为了对应DAC特性,设想要得到的波形,首先是一个单极性的信号,最小值为0V,峰值小于5V(或者是小于DAC的参考电压VREF)。对其进行均匀抽样均匀量化及自然二进制码编码,从而取得PCM二进制码组的波形数据。

在波形切换或者改变频率时,需要重新计算并生成所需要的PCM二进制码组。这大大降低了对内存资源的要求,这里不强求切换速度。

(五)合成信号的参数

从存储器传送数据到外设DAC的快慢,决定了输出阶梯波的宽度Tc。

在CPU指令代码运行形式中,有两种方式。一是采用中断运行方式,这是通常做法。其优点是,很便利地降低参考时钟频率,也降低了N的资源占用度。而其缺点则是Tc无法取得更小,不利于提升合成频率。因为执行一句P0=waveArray[N]的C语言语句,大致需要14个机器周期,而执行中断最基本的现场保护与恢复指令,大致就要消耗24个机器周期,在只允许一个中断例程运行的条件下,中断间隔都需要在50个机器周期以上,如果一个机器周期为1uS,则Tc=50uS,Fc=1/Tc=20KHz。二是禁止一切中断运行,在设置好波形参数后就直接进入向DAC传送数据的死循环,只有通过复位CPU才能推出循环。如执行一句P0=waveArray[N]的语句,大致需要14个机器周期,那么Tc=14uS,Fc=1/Tc=72KHz。显然这种方式得到的时钟脉冲频率提高了很多。其中waveArray[N]表示储存有待输出波形的二进制数组,若是合成周期信号波形,那么就是一个周期的数据,共N个抽样量化的数据值。

上述讨论中,机器周期的长短也是限制时钟脉冲频率提高的一个因素,只是毕竟C51单片机的运算能力有限,通过选型来提升的空间也有限。

然而,进一步提高时钟脉冲频率的方法是采用DMA(直接内存存取)技术。现在性能好的单片机,都内含有DMA(直接内存存取)技术,由于数据从存储器到外设DAC的转移是通过硬件直接实现的,无须CPU的干预,其内存存取周期比CPU指令序列的运行周期快多了,大致得到Tc≤机器周期的传输速率,也不受CPU其他中断的影响。因此,在相似条件下,单片机利用内置的DMA设备可提高合成信号频率,在相对的低频段输出频率信号方面,则通过中断方式的运行。

由于本实验是工作在数字域,很方便得到任意周期以及非周期波形信号。

四、结语

本实验装置数字合成波形发生器,由单片机、数模转换器(DAC)、直接内存存取控制(DMA)构成,主要通过DMA来获得更高合成频率,通过单片机中断方式的运行来延展更低的合成频率。在分配到2KB的RAM的占用度时,就可获得很高的频率分辨率。另外,DAC的量化级数大于8位时,占用的RAM会成倍增加,而压缩到N的取值范围。总体上该装置可输出最高频率约50KHz,最低1Hz的合成正弦波,尤其是采用了STM32F系列中具备DAC、DMA的芯片时。因为是采用单片机,而非专业的DDS模块,所以在输出波形的频率上限值和频带范围会有一定的限制。

猜你喜欢
译码二进制阶梯
基于扩大候选码元范围的非二元LDPC加权迭代硬可靠度译码算法
用二进制解一道高中数学联赛数论题
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
有趣的进度
二进制在竞赛题中的应用
良师·阶梯·加油站
时光阶梯
艺术创意阶梯
二进制宽带毫米波合成器设计与分析