南京林业大学信息科学技术学院(南京210037)赵明忠
1引言
DSP技术已成为现代无线通信系统的核心技术之一,数字信号处理器(DSP)是短波数字通信系统中的灵魂和核心所在。本文详细讨论了一种实用的短波数字通信系统中数字AGC功能的DSP实现。AGC即自动增益控制,是短波数字接收机的重要组成部分,其性能好坏直接影响着接收机是否能高质量稳定接收。AGC的基本功能是随着接收机所收到的输入信号的强弱自动调整放大器的增益,使输入信号强弱变化时,输出信号基本不变。模拟接收机的AGC设计有一套相对成熟的方案,而数字化接收机的数字AGC设计有不少问题值得探讨。
2外部数字AGC及DSP实现
对数字式接收机来说,当输入信号在接收机的AGC动态范围内变动时,其AGC可以使输出信号维持稳定,我们称其为内部AGC;但当输入信号大于允许输入的最大ADC信号电平时,射频前端放大级会出现饱和及过载失真,内部AGC往往难于调节,这时必须从后至前对射频前端逐渐增大衰减,我们称之为外部AGC。内部和外部AGC过程都是动态的。内部AGC是小环,主要控制音频级的信号,外部AGC是大环,主要控制射频级的信号,外部AGC一般都受内部AGC的控制。
在外部AGC的设计中,从后往前共设6档:-6dB、-12dB、-18dB、-24dB、-30dB、-36dB。之所以设6dB一档,是为了便于在数字信号处理级进行补偿,即外部衰减了6dB,内部应补偿6dB(相当于一倍)。
2.1不带硬件过载检测电路的情况
此时,在DSP芯片进行处理时,需检测输入信号的电平,当输入信号电平大于某一值时,作相应的衰减。但是,在其增加衰减的临界状态,由于电平检测的波动性和滞后性,使得即使输入信号的电平没有发生较大的变化,其估计值也会时常在衰减门槛左右震荡。这样,就会出现射频衰减一时加上一时撤去的现象,使输出电平不稳。为避免这样的现象发生,应该使加上衰减与撤去衰减的门限不同,即加上衰减的门限低而撤去衰减的门限高。可称为宽进严出。

用DSP实现不带硬件过载检测电路的外部AGC的程序框图如图1所示。
下面是图1的必要解释。
dBNow指的是当前时刻估测到的信号电平dB数;
dBLast是指上一时刻估测到的信号电平dB数;
dBChgStart是指信号电平开始变化时的信号电平dB数;
NumChg是指信号电平持续向一个方向变化(上升或下降)的样点数;
Trend是上一时刻信号电平所处的趋势(下降、波动或上升);
DecCode是在信号电平处于下降趋势时调用的子程序;
IncCode是在信号电平处于上升趋势时调用的子程序。
其中,Trend变量体现了门限设置时宽进严出的思想。由图中我们看到,当信号处于下降或上升趋势时调用的子程序不同,IncCode的门限低而DecCode的门限高。
2.2带硬件过载检测电路的情况
此时,射频前端过载时,会向后面的DSP芯片发出过载信号。DSP检测它们,以决定是加大衰减或减轻衰减。但有一个问题必须考虑,即检测电路也是有反应时间的。检测电路通过信号对检测电容的冲放电来得到信号电平,然后把此信号电平送入比较器以决定信号是否过载。这个反应时间即为电容的冲电时间。由于反应时间的存在,连续两个或多个样点测得的过载信息便不可靠。因此对过载线检测的时间间隔应至少大于检测电容的反应时间。有了这一点作保证,我们便认为DSP查询到的过载信息是真实可靠的。

前面笼统地谈了过载信号线的情况。由于衰减的台阶有6阶,那么设几根过载线呢?相应的撤线又要几根呢?过载线和撤线多了确实可以清楚地表达当前指标过载的情况和深度,但这样一来必定增加了检测电路的难度。本设计中使用一根过载线一根撤线的方案。过载线只表示当前信号处于过载状态,DSP检测此过载线,如过载,加大一级衰减,直至最大衰减为止;撤线在信号比过载电平低9dB的情况下有效,撤的时候也是一级一级撤,直至撤完为止。
用DSP实现带硬件过载检测电路的外部AGC的程序框图如图2所示。
对两种方案而言,都存在这样一个问题:前端突然衰减6dB时,后级的内部AGC会以为信号减小了,所以会处于保持状态,而实际上此时信号并没有真的减小。解决这个问题的办法有两个:一个是在突然加大衰减时,作一标记AGCHold(如图1所示),告诉内部AGC,此时不要保持,应正常放电;另一个是将信号乘以2。经过研究,采用乘以2的方法较适宜。
3内部数字AGC及DSP实现
在内部AGC中,对数字式接收机而言,一般有3个指标:捕捉时间(Attack Time),保持时间(HoldTime)和释放时间(Decay Time)。
捕捉时间是指信号电平突然上升时,AGC的值(称为AGCClamp)随之上升到实际信号电平90%的时间,此时放大倍数减小;保持时间是指当信号电平突然下降时,AGC的值应保持不变的时间,此时放大倍数不变;释放时间是指保持过后,AGC的值随之下降到实际信号电平10%的时间,此时放大倍数增大。之所以设置保持时间,主要是考虑说话人语顿时,不将噪声放大。模拟接收机一般没有保持时间。
在将上述指标转化为实际的DSP算法时,必须考虑两个问题。首先,当信号电平出现起伏时,AGC的电平估算应该尽快跟上(当然延时不可避免),但这会带来一个问题:信号电平的估计值会出现较大的波动,即使信号电平几乎没有发生变动。其次,当信号电平几乎没有发生变动时,AGCClamp(AGC内的电平值)应该保持相对稳定。
为解决这两个问题,为Trend变量设置了一个波动状态(0)。信号处在波动状态时,既不冲电也不放电,当信号上升或下降时,检测信号是否为连续上升或下降数个电,若不是,则将其清为波动状态,这样AGC
Clamp的值也就会基本保持稳定。这样一来就基本上解决了上述的两个问题。
用DSP实现内部AGC的程序框图如图3所示。图3的解释如下:
Power—Now指的是当前估测到的信号电平;
Power—Last是指上一时刻估测到的信号电平;
Power—Chgr—Start是指信号电平开始变化时的信号电平;

NumChg是指信号电平持续向一个方向变化(上升或下降)的记数值;
NumHold指的是保持期个数;
AGCClamp是AGC内的电平值,相当于模拟电路AGC中电容的电压;
Trend是表明当前信号电平处在下降、波动或上升趋势的标志;
Decay是放电子程序;Attack是冲电子程序;
AGCHold为可选量,当DSP不补偿外部大环AGC的衰减时,设置此量以在增加衰减时不保持。用TMS320C31实现内部AGC算法的程序清单如下:




rets
4结束语
本文介绍了短波数字通信系统中的数字AGC,着重探讨了基于DSP的外部AGC和内部AGC的实现方法。本设计方案在实际应用中取得了良好的效果。
本文摘自《电子工程师》