APP下载

窄带调频式调频广播调制装置

2020-12-16成,焦

电声技术 2020年7期
关键词:窄带数组调频

何 成,焦 杰

(1.葫芦岛广播电视监测台,辽宁 葫芦岛 125000;2.吉林省广播电视研究所,吉林 长春 130041)

在设计数字电子系统时,通常采用高频时钟分频的方法产生指定频率信号。例如,用单片机中的定时器对频率为F的系统时钟N分频,可生成频率F1=F/N;若进行N+1 分频,则生成频率F2=F/(N+1)。然而,这种方法无法产生介于F1与F2之间的频率,只能用F1或F2近似替代。随着输出频率的升高,分频数值N相应减小,导致F1与F2两个频率之间的步进间隔增大。也就是说,频率越高,分辨度越差,精度越低。本文以一种多路调频广播调制器的应用为例,介绍窄带调频(Narrow Band Frequency Modulation,NBFM)方法来解决这个问题。用单片机的DMA 去高速调频定时器,输出信号不但频率精度较高,而且频率变更迅速,可以满足广播节目调制应用的需要。

1 精密频率应用

我国调频广播标准GB/T 4311—2000 规定,调频广播采用频率调制,100%调制度下的频偏为±75 kHz[1]。传统调制方式采取把数字化的声音电压数据经过D/A 变换成为模拟量后,送给压控振荡器产生调频信号。这种方式不仅电路元件较多,而且失真和噪声较大。当多个模拟调制电路靠近安装在一起时,因为存在频率占据[2]现象,还会导致不同节目之间串音。本文用单片机把多套节目同时分别调制到几个较低的中频信号上[3],再用后级电路进行二次调制发射[4]。不仅电路元件少,调制节目多,而且电路免调试,各通道之间无串扰。

调频广播声音信号的每一个电压值对应一个频率,是线性V/F 变换。因此,设计目标是用单片机输出方波,不同的声音数据对应输出不同的频率。采用型号为STM32F407 的单片机进行设计,通过设置定时器的重装载寄存器ARR 就能对系统时钟分频输出。然而,在传统分频方案中,分频的频率步进间隔太大,无法满足调频广播节目对频率分辨度的要求。例如,定时器在翻转模式下分频168 MHz 主时钟,进行42 分频时可输出2 MHz频率方波,而在41 分频时输出方波频率却是2.048 MHz。即使对于8 位声音信号调制应用,要求的频率分辨度也必须优于0.586 kHz,这比传统分频的指标高出近百倍。

1.1 窄带调频原理

用一个角频率为Ω 的调制信号对另一个角频率为ω的载波信号进行调频,当调频指数为m时,输出调频信号为:

由此可见,窄带调频信号V由载波信号和上下两个边带信号组成,边带信号的振幅正比于调频指数。若调频指数m非常小接近零,则窄带调频信号V≈cosωt。

通常由调频所引起的最大瞬时相位偏移小于30°时,可作为窄带调频[5]。

1.2 调频载波

实际电路中,多套节目声音信号从网络接口输入,分别调制成中心频率为1~2 MHz 的几个调频中频信号。系统结构如图1 所示。

图1 中,虚线内的部分是这种调制装置的核心部分,主要由网络接口芯片和单片机芯片组成。输出的中频信号按照参考文献[3]中的方式二次调制到调频广播频率上,电路原理如图2 所示。

单片机芯片U1与网络芯片U12用RMII 接口连接,从而通过网络收到需要调制的广播节目声音数据。在单片机内部用DMA 驱动定时器实现窄带调频,然后将信号从定时器的输出引脚送出单片机。若采用型号为STM32F407 的单片机,则最多可同时调制产生FRQ1~FRQ6共计6 个独立信号。

采取与小数分频[6]相似的设计思路,单片机的定时器分别用N和N+1 两个分频数值交替分频,只要N>6,即可满足窄带分频条件。利用单片机中的DMA 控制器,在定时器每次计数溢出前设置下一次的计数溢出门限为N或N+1,能动态改变定时器的周期,使输出的等效频率等于设计值。图3描述了这种频率合成的载波频率计算方法。

图3 中先产生X个频率F1的信号,再产生Y个频率F2的信号,共产生X+Y个周期,合成信号的等效频率f为:

也就是说,这两种信号恰好共经过L个T周期合成了等效频率为f的信号。这需要在单片机中用长度为M=X+Y的缓存区保存定时器的M个分频值,形成了一个分频缓存区。

1.3 分频缓存区

为了减少内存占用,应尽可能减小分频缓存区长度M,主要有变长和定长两种设计方式。

1.3.1 变长缓存区

分频缓存区保存有分频值N及N+1 两种数值,若系统时钟频率为F,设计目标频率为f,则其中N值为:

若定时器用N分频时溢出周期为T1,用N+1分频时溢出周期为T2,则对于要输出周期为T的信号时,有比例关系:

式中,X为分频缓存区中N数值的个数,Y为N+1 数值的个数。计算X/Y的最简整数比后,可得到分频缓存区的长度M=X+Y。这种方式下,分频缓存区长度M随输出频率变化而改变,适用于单片机输出固定精密频率场合。

1.3.2 定长缓存区

对于单片机系统来说,为了快速频率切换需要频繁暂停DMA,因此会导致输出信号不连续,不适用于调频广播节目调制,需要采用分频缓存区长度固定的方法。

根据频率分辨度的设计需求,可计算分频缓存区长度M的最小值。如果用M个T1合成一个频率f1,相邻下一个频率f2使用M个T2合成,那么两种合成周期的步进差值Δf经过M次累计可以达到系统时钟的一个周期t:

因此,可计算缓存区长度M的最小极Mmin:

只要缓存区长度大于此极限值,就可以保证频率步进差值精度Δf。表1 举例了一些对系统时钟F=84 MHz 进行窄带调频广播节目所需要的Mmin。

表1 合成不同频率时分频缓存区长度

由表1 可见,随着合成频率的增加,所需的分频缓存区长度M急剧增大。

1.4 定时器选择

单片机STM32F407 的定时器有两组:一组有TIM1 和TIM8 两个定时器,输入为高频168 MHz系统时钟,并支持DMA;另一组输入低频84 MHz的系统时钟,支持DMA 的定时器有TIM2、TIM3、TIM4、TIM5。因此,这个芯片最多可以同时调制6套节目。

为了使输出方波的占空比尽可能接近50%以减少谐波,需要设置定时器输出比较功能的管脚工作在翻转模式下。因为每次定时器溢出时管脚电平只翻转一次,所以输出频率是定时器溢出频率的一半,相当于定时器输入的时钟频率降低一半。

2 DMA 调频

整体原理是在定时器每次溢出重装载前,用DMA 设置定时器的重装载寄存器ARR 中的数值为N或N+1,即用两个分频值交替分频实现调频。

2.1 定时器重装载

用定时器溢出事件触发DMA,再用DMA 修改定时器的重装载寄存器ARR;设置DMA 为循环工作模式,只需软件为合成频率一次性准备好数据,剩下的工作交给定时器和DMA 硬件;此后不再需要软件干预,即可能持续输出指定频率的信号,具有很高的运转效率。

因为定时器具备影子寄存器功能,所以对重装载寄存器的修改不会立即生效,需等到下次定时器溢出时才能生效。这个特性可以保证定时器输出的方波周期不会被意外打断,在任何时刻都可以由DMA 直接修改重装载寄存器ARR。

2.2 定时器触发DMA

当定时器溢出时,生成更新事件用于触发DMA。程序中必须注意,在设置DMA 与定时器中任何一个设备前,必须先把这两个硬件的时钟全部开启,否则可能导致两个硬件不能联动工作。以调用固件库函数设置DMA2 和TIM8 为例,其中的要点有:

2.3 精密频率

软件用一维数组定义分频缓存区,DMA 依次传送每个数据元素给定时器。广播节目的每个声音电压值都对应一个分频数组。只要把这个数组的起始地址和长度设置到DMA,硬件就可以自动输出指定的精密频率。在调频广播调制器中,若设计输出中心频率为2 MHz,分频缓存长度为96,则可以枚举所有声音电压值,计算出对应的一维数组,再把所有一维数组合并,保存成为一个二维数组。图4 举例介绍了产生这些中频信号的原理。

设计声音电压值127 与中心频率2 000 kHz对应。例如,声音电压值等于2 时,对应的频率是1 926.171 9 kHz。DMA 控制器在每次TIM8 溢出时,从这个电压值对应的数组行数据中依次取得一个分频数据更新ARR 寄存器,即可使TIM8 输出1 926.171 9 kHz 频率。每当声音电压发生变化时,只需设置DMA 更换传输对应的数组行,就能精确输出这个电压对应的频率信号。

每当声音电压值变化时,理论上只需重设DMA 控制器的内存读取地址就可以合成相应的频率。然而,因为对DMA 的调整需要暂时打断DMA,所以这种方式会引入较大的相位噪声。为避免这一现象,采取DMA 缓存区固定而更新缓存区数据的方式,即DMA 控制器不停传输一个固定缓存区中数据给定时器,每当声音电压值改变时,由软件复制新的数组数据到这个缓存区。这种方式因不打扰DMA 可保证输出信号切换准确稳定。

3 分频数组

从窄带调频分析可见,减小调频指数可降低边频振幅。对于任何输出频率,频偏都已经被单片机时钟频率和分频数值N限定,因此提高调制频率可降低调频指数。也就是说,在分频数组中使N和N+1两种分频数值分布均匀,对降低相位噪声有利。因此,可编写一个函数,在自动计算出每个电压值对应每个频率所有分频值数据的同时,把它们均匀排列在数组中。

3.1 分频数据算法

设计函数输入参数有合成目标频率、定时器时钟频率以及分频计数缓存区长度3 个参数。输出这个频率对应的分频值数组,在其中均匀填充供每次DMA 传送给定时器的分频值。图5 是这个函数的流程图。

因为涉及的数值范围不太大,所以可用定点数计算来提高速度。为了减小定点计算误差,需要先算乘法再算除法,还需要检查数据防止乘法数值过大而溢出。

4 输出频率上限

受单片机中定时器和DMA 硬件性能的限制,实际测试STM32F407 单片机进行这种窄带调频的输出频率上限约为7 MHz。若设置输出频率过高,输出的信号会发生无规律的瞬时间断现象。也就是说,本方案中的单片机不受传统必须整数分频的限制,可以输出不高于7 MHz 的任意高精度频率。

4.1 边频杂波

在窄带调频输出信号中,主要杂波是上下两个边频信号。只要调频指数足够小,边频振幅就可以小到忽略不计。当N分频数量与N+1 分频所占比重相等时,边频振幅达到最大值时,调频指数m=1/(2N+1)。因此,当输出中心频率在2 MHz 附近的调频广播中频信号时,N值为42,可计算出最差情况是:存在比输出信号高或低24 kHz 的上、下两个边频信号,其振幅只有输出信号振幅的0.6%,在广播调制器应用中可忽略不计。

4.2 调制精度

模拟V/F 变换电路通常采用深负反馈的积分电路,所以精度较高[7],但是不容易分析一个实际电路的精度,而用单片机设计的变换精度可以直接计算。

在晶体时钟精度足够高时,数字V/F 变换输出的频率精度由频率分辨度确定。分频缓存区越长,频率分辨度越高。然而,用于2 MHz 中频的广播调制器时,因输入16 kHz 的声音采样电压信号,要求频率快速改变。相邻两个数据的时间间隔62.5 μs,可以容纳2 MHz 频率的125 个周期,因此分频缓存区长度超过125 将失去意义。实际系统设计分频缓存区长度为96,通过计算所有8位电压值对应的频率数据可以看到,在设计频率为2.030 469 MHz 时误差最大,实际合成频率为2.030 723 MHz,相对误差为0.012 5%。

4.3 响应速度

用单片机设计的V/F 变换器响应速度明显比模拟V/F 变换电路快,只要DMA 把分频数值送给了定时器,那么新频率在定时器溢出后即可生效。因此,最大延迟时间只有定时器的一个溢出周期。

5 结语

本文介绍的窄带调频方式可以在设置后无需软件参与,持续输出较高频率精度的信号,突破传统定时器分频的频率间隔限制。应用这种技术设计的多通道调频广播数字调制电路,因为没有模拟电路环节,所以具有电路简单、体积小和免调试的优点,节目之间隔离不会相互串音。经过实际试用,设备样机效果良好。

猜你喜欢

窄带数组调频
JAVA稀疏矩阵算法
考虑频率二次跌落抑制的风火联合一次调频控制
JAVA玩转数学之二维数组排序
LATE水平集图像分割模型的矩形窄带法①
直扩系统中的窄带干扰抑制
直扩系统中的窄带干扰抑制
异地调频主备发射自动切换的思考与实践
正弦调频Fourier-Bessel变换及其在微动目标特征提取中的应用
更高效用好 Excel的数组公式
寻找勾股数组的历程