软件无线电是一种实现无线通信的新的体系结构,是无线通信产业从模拟到数字、从固定到移动这两次革命后的第三次革命,是从硬件无线通信到软件无线通信的革命。
在从事使用软件无线实现GSM基站研究中,在深入研究GSM通信系统信道编码结构、交织方式的基础上,利用VHDL硬件描述语言完成GSM基站信道编码中使用的交织器的具体设计,为进一步研究软件无线技术在GSM基站系统中应用打下基础。
1 GSM的话音编码与信道编码
在GSM通信系统中,全速率话音编码算法为规则脉冲激励及长期预测算法(RPE-LTP)。模拟话音首先通过一个ADC以8 kHz采样频率进行采样,每个采样点用均匀13 b编码。话音编码器对每20 ms一段的话音进行压缩编码,编码结果为每20 ms产生260 b的数据块。这260 b的数据根据他们的重要性分成为3类:Ia类、Ib类和Ⅱ类。Ia类共50 b,为非常重要的数据。如果这些数据被修改,恢复的话音将发生很大的错误,甚至无法恢复正常的话音,因此这些数据需要严格保护。Ib类数据共132 b,是比较重要的数据,需要进行较好的保护。Ⅱ类数据共78 b,为一般重要的数据,发生一些差错也不会对恢复的话音有太大的影响,通常不对其进行保护。根据数据重要性的不同,决定信道编码中采用不同的保护方法。
GSM通信系统的信道编码首先对Ia类数据进行差错检测编码,产生3个循环冗余校验(CRC)比特,这些比特的产生使用多项式为G(x)=X3⊕X⊕1。3个CRC比特附在Ia类的50 b后面,再与Ib类数据组合在一起进行K=5,r=1/2的卷积编码,卷积编码器使用的2个多项式为P1(x)=X4⊕X3⊕1和P2(x)=X4⊕X3⊕X⊕1,卷积编码产生的结果是两个189 b的序列,将他们与不需要保护的Ⅱ类数据复合在一起,产生一个完整的经过信道编码的话音帧,共456 b。
2 交织编码器工作原理
信道编码中采用交织技术,可打乱码字比特之间的相关性,将信道中传输过程中的成群突发错误转换为随机错误,从而提高整个通信系统的可靠性。交织编码根据交织方式的不同,可分为线性交织、卷积交织和伪随机交织。其中线性交织编码是一种比较常见的形式。所谓线性交织编码器,是指把纠错编码器输出信号均匀分成m个码组,每个码组由n段数据构成,这样就构成一个n×m的矩阵。这里把这个矩阵称为交织矩阵。如图1所示,数据以a11,a12,…,a1n,a21,a22,…,a2n,…,aij,…,am1,am2,…,amn(i=1,2,…,m;j=1,2,…,n)的顺序进入交织矩阵,交织处理后以a11,n21,…,am1,a12,a22,…,am2,…,a1n,a2n,…,amn的顺序从交织矩阵中送出,这样就完成对数据的交织编码。还可以按照其他顺序从交织矩阵中读出数据,不管采用哪种方式,其最终目的都是把输入数据的次序打乱。如果aij只包含1个数据比特,称为按比特交织;如果aij包含多个数据比特,则称为按字交织。接收端的交织译码同交织编码过程相类似。
一般来说,如果有n个(m,k)码,排成,n×m矩阵,按列交织后存储或传送,读出或接收时恢复原来的排列,若(m,k)码能纠t个错误,那么交织后就可纠m个错误。对纠正信道传输过程中出现的突发错误效果明显。
GSM中使用这种比特交织器。其交织方式为将信道编码后的每20 ms的数据块m=456 b拆分到8组中,每组57 b,然后这每组57 b分配到不同的Burst中。
3 交织编码器的软件设计
GSM通信系统必须满足实时性的要求,因此,交织编码引入的延时应尽可能小。为了同时满足块内交织进行(57,8)矩阵转置变换和延时尽可能小的要求,该交织器利用2片双口RAM实现,记作RAM_和RAM_B。交织处理时,按地址从0~455将456 b输入数据全部写入RAM_A,待456 b数据全部送入RAM_A后,控制信号使RAM_A由写状态转换到读状态,同时,将输入的待交织数据写入RAM_B,RAM_B为写状态,交织器由RAM_A输出数据。经过456个时钟周期后,从RAM_A读出456 b数据的同时,RAM_B写入一个时隙的456 b数据。此时,改变RAM_A和RAM_B的读写状态,RAM_A开始写,从RAM_B中读取数据。如此反复完成数据的实时连续交织处理。
完成交织处理的核心问题是处理好读/写地址之间的关系,该交织器读/写地址的变换采用如下算法完成:
为减少FPGA运算量,可利用Matlab,C语言等实现读/写地址矩阵转置运算。这里采用Matlab完成读/写地址矩阵转置运算,具体程序为:x=0:1:455;reshape(x,57,8)。读/写地址的变换结果存储在address_ROM.mif文件中。利用VHDL语言描述该交织编码器完整代码如下:
4 仿真分析
利用Altera公司的QuartusⅡ工具软件,对该交织器仿真分析,得到的时序仿真波形如图2所示。从读地址(rd_addr_A)和写地址(wr_addr_A)以及(data_in)和(intlv_out)可以看出,该交织器完成既定的交织功能,延时相当小,该设计方法正确可行。
5 结语
本文提出基于FPGA实现交织器的方法,给出利用VHDL语言描述该交织器的全部代码。通过仿真分析验证该实现方案的正确性和可行性。为进一步研究GSM通信系统基站软件化打下了良好的基础。