1、 引 言
大多数接纳机有必要处理动态规模很大的信号,这需求进行增益调整,以避免过载或某级发生互调,调整解调器的作业以优化作业。在现代无线电接纳设备中。可变增益扩大器是电控的,而且当接纳机中运用衰减器时,他们一般都是由可变电压操控的接连衰减器。操控应该是滑润的而且与输入的信号能量一般成对数联系(线性分贝)。在大多数情况下,因为式微,AGC 一般用来丈量输入解调器的信号电平,而且通过反应操控电路把信号电平操控在要求的范同内。
2 、体系总体规划
在本规划中,前端 TD_SCDMA 的射频信号 RF 输入后,通过 MAX2392 零中频下变频解调后进行增益处理。VGA 输出的信号通过 ADC 改换后就成为数字中频信号,经 RSP(接纳信号处理器)处理输出为 IF 数字信号。IF 信号能够通过 AGC 操控算法处理后操控 VGA 的增益。AGC 增益操控算法在数字部分来完成,在本规划中,AGC 电路能够有用进步链路的动态规模(+25~-105 dBm),进步 ADC 输出的 SNR,以使 DSP 能更容易地完成 Dw-PTS 同步。AGC 在体系中的方位如图 1 虚线框所示:
3 、AGC 体系的 FPGA 完成
根据 AGC 所完成的功用,在 FPGA 中将 AGC 模块分为如下几个部分来完成:
3.1 数据千路模块
从 RSP 接口来 10 位二进制补码数据 I1 和 Q1,与求指数模块传送来的预扩大增益 GAIN2 相乘后所得出的数据(仍取 10 位二进制补码数据)即将传送到 CIC 均匀模块,一起要别离与求指数模块传送来的扩大增益 GAIN3 相乘,然后采纳截短处理,取 8 位二进制补码数据,I1′,Q1′,输出到 DSP 中。
3.2 核算下行同步码功率(SYNC_DL)模块
核算下行同步码功率(SYNC_DL)模块对应于图 2 中的判别部分,是 AGC 中最为重要算法核算。TD_SCD-MA 每个帧有 6 400 个码片,在其一帧 5 ms 的时刻上是不接连的,因而只能求出下行同步码(SYNC_DL)的功率值,以此为根据操控 VGA 的电压值。
由图 3 的 TD_SCDMA 的帧结构知道,下行同步码(SYNC_DL)在下行导频时隙(DwPTS)发射,SYNC_DL 的长为 64 个码片,在其左面和右边各有 32 和 96 个码片的维护时隙(GP)。为此,在 FPGA 中共用了 3 种不同的办法核算其功率值。
办法一 在 FPGA 内根据检波法的原理核算下行同步码 64 个码片的功率(AGC 模块图 2 中的 dcmt 部分)。考虑 TD 的帧结构,维护时隙 GP 的功率很小,故从接纳功率的时刻散布上来看,与 GP 比较 SYNC_DL 段的功率较大。当用 SYNC_DL 段的 64 码片之和除以 SYNC_DL 前后个 32 个码片相加之和,成果大于 3 时,就能够判别出 SYNC_DL 的大致方位。因而,根据这种办法,FPGA 在 5 ms 的周期中遍取 6 400 个码片,每 64 个码片做积分,顺次向前翻滚核算,一起做除法运算,最终即可核算出 SYNC_DL 在一帧 6 400 个码片中的方位和能量,以此操控 VGA 的电压和后续的核算。不过这种办法只要在信号质量很好,信号强度比较大的时分才核算准确。
办法二 由 DSP 方根据传过来的数据,通过相干检测法检测出 SYNC_DL 的准确方位,并把这个方位参数传送给 FPGA。FPGA 收到这一点的方位后,立既停止运用其本身检波法求出的功率值,根据 DSP 传过来的 SYNC_DL 的方位,核算出这一点之后的 64 个码片的积分值,作为 SYNC_DL 的总功率,并以此操控 VGA 的电压(AGC 模块图 2 中的 dwpts 部分)。这时求出来的总能量比较准确(DSP 供给的方位比 FPGA 本身检波法求出来的准确),可是速度比较慢。
办法三 当信号的强度变得很弱,信号或许淹没在了噪声傍边。这时无论是由 FPGA 的检波法仍是 DSP 的相干法都核算不出 SYNC_DL 的方位和能量。在这种情况下,以为在 5 ms 时域上信号接连,能量均衡,FPGA 求 5ms 帧的均匀值,以此作为 SYNC_DL 的功率,并操控 VGA(AGC 模块图 2 中的 CIC 部分)。
3.3 求对数运算模块
在本模块,将上面得到的功率值进行求对数运算,以削减数据的运算量。用 FPGA 完成求对数运算时,能够先将数据归一化在 1~2 之间,然后通过将数据平方后推导出最高位的办法逐位求出所求数据的二进制数值。假定自变量 X 归一化在区间[1,2]内,用二进制数据可表明为 1.X1X2…Xn,则所求的对数值在区间[0,1]内,用二进制数据可表明为 0.Y1Y2…Ym,因而可用数学办法表明为 20.Y1Y2…Ym=1.X1X2…Xn,问题归结为求 Y1Y2…Ym。将上式左右两头一起平方, 能够得出 2Y1Y2…Ym=(1.X11X21…Xn1)2,由此可推倒出 Y1 来。(X 为已知,若等式右边数据小于 2,则 Y1=0;反之,若大于或等于 2,则 Y1=1)求出 Y1 后能够导出 20.Y2Y3…Ym=1.X11X21…Xn1,同理可推倒出 Y2。依此类推,可求出对数值的各位。
进行 FPGA 设计时,能够规划出一个平方比较单元顺次求出对数值,一起要注意需求消耗的体系资源。
3.4 求指数运算模块
通过求对数模块后,一路数据传送到 IIR 中,另一路数据则要传送到 DSP 中进行算法运算,因而,需求添加一个求指数模块,将对数模块运算后的成果还原成本来的数据送到 DSP 中。指数换底公式可知:2x=ex1n2,由双曲函数界说及特性可知:ex=sinh(x)+cosh(x),而当自变量 x 在[-π/4,7c/4]规模内时,能够选用 FPGA 的 IP CORE(CORDIC 算法)完成双曲正弦函数和双曲余弦函数,因而在 FPGA 内部求以 2 为底的指数函数时,能够先将自变量归一化在[0,1]内,然后将自变量乘以常系数 1n 2,因为 ln 2《π/4,故能够新乘得的数据作为新的自变量,使用 IPCORE 求出其双曲正弦函数和双曲余弦函数后将其相加,即可得到所需求的指数函数值。
3.5 IIR 反应模块
IIR 反应模块包含 3 部分:IIR 滤波单元、饱满反应单元和 VGA 操控单元,其间 IIR 滤波单元担任将求对数模块得出的数值与参阅数值比较后得出的差错数据 Uerr 作 IIR 滤波核算得出 Ufilter,然后根据相关算法核算出 Urssi。饱满反应单元担任将 Urssi 与饱满限幅数据比较后得出差错电压 Uerr2,然后按照相关算法求出 U2 送到求指数模块,然后能够操控差错反应增益 Gain2。VGA 操控单元担任将 Urssi 进行饱满限幅后得到输出操控电压 Uda,量化后通过数模改换然后操控 VGA。
3.6 CIC 均匀模块
当 AGC 用于 WCDMA 体系时,能够将图 2 中的判别部分悉数去掉,参加这个 CIC 均匀模块。CIC 均匀模块担任将预扩大模块求出的 I1 和 Q1 作为自变量,通过功率算法 P1′=I1*I1+Q1*Q1 求出 P1′,然后将 6 400 个作业频率为 1.28 MHz 的 P1′均匀,得出作业频率为 1.28 MHz 的 P1。相同得出 P2 后再求出 P1+P2。
在 FPGA 中关于相加运算,包含 CIC 完成部分的纯整数相加算法和其他部分的小数相加算法。其间 CIC 运算部分的运算数据是二进制 10 位有符号数;关于相乘运算,包含 CIC 完成部分的纯整数平方算法、CIC 完成部分的常系数小数相乘算法。
4、 结 语
以上介绍的在 FPGA 中完成 AGC 的算法,通过项目的验证测验,作用比较好,DA 选用 ADS 的 5621,VGA 电压调理规模在 0.3~1.8 V 之间,共 45 个 dB 的调理规模,因而 AGC 在+10~-35 之间起调理作用,信号低于 -45 dBm 时,VGA 电压坚持 1.8 V 最大值;高于+10 dBm 时,VGA 电压坚持在最小 0.3 V。通过测验,FPGA 可在+25~-105 dBm 规模内查找到 SYNC_DL 的方位。
此种 AGC 算法,核算相对简略,运算速度快,不只可用于 TD_SCDMA 信号,在核算下行同步码能量时稍加改动,只做 CIC 均匀运算,即可应用于 WCDMA 信号。
责任编辑:pj