
2 AGC系统的FPGA实现
根据AGC所实现的功能
2.1 数据干路模块
从R 接口来10位二进制补码数据I1和Q1,与求指数模块传送来的预放大增益GAIN2相乘后所得出的数据(仍取10位二进制补码数据)将要传送到CIC平均模块,同时要分别与求指数模块传送来的放大增益GAIN3相乘,然后采取截短处理,取8位二进制补码数据,I1′,Q1′,输出到D 中。
2.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在5ms的周期中遍取6 400个码片,每64个码片做积分,依次向前滚动计算,同时做除法运算,最后即可计算出SYNC_DL在一帧6 400个码片中的位置和能量,以此控制VGA的电压和后续的计算。不过这种方法只有在信号质量很好,信号强度比较大的时候才计算准确。
方法二由D 方根据传过来的数据,通过相干检测法检测出SYNC_DL的精确位置,并把这个位置参数传送给FPGA。FPGA收到这一点的位置后,立既停止使用其自身检波法求出的功率值,根据D 传过来的SYNC_DL的位置,计算出这一点之后的64个码片的积分值,作为SYNC_DL的总功率,并以此控制 VGA的电压(AGC模块图2中的dwpts部分)。这时求出来的总能量比较精确(D 提供的位置比FPGA自身检波法求出来的精确),但是速度比较慢。
方法三当信号的强度变得很弱,信号可能淹没在了噪声当中。这时无论是由FPGA的检波法还是D 的相干法都计算不出SYNC_DL的位置和能量。在这种情况下,认为在5 ms时域上信号连续,能量均衡,FPGA求5ms帧的平均值,以此作为SYNC_DL的功率,并控制VGA(AGC模块图2中的CIC部分)。

2.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设计时,可以设计出一个平方比较单元依次求出对数值,同时要注意需要耗费的系统资源
0
顶一下0
踩一下独乐乐不如众乐乐!
好东西要与好朋友分享!
你有一个苹果我有一个苹果,互相交换,我们每人只有一个苹果;你有一种思想,我有一种思想,互相交换,我们每人有两种思想。