LTE系统中解调与解扰在FPGA中的实现设计详解

可编程逻辑

1340人已加入

描述

LTE系统将最大系统带宽从5 MHz扩展到20 MHz,能够在20 MHz带宽内实现50 Mb/s上行瞬间峰值速率和100 Mb/s下行瞬间峰值速率 。

为了提高数据的传输速率和系统的吞吐量,采用正交振幅调制技术 ,在LTE系统中主要有QPSK、16QAM、64QAM三种调制方案。在解调与解扰模块之后要进行解信道交织,从而得到数据信息、ACK信息、RI信息和CQI信息 。之后就要对各个信息进行译码。为了保证译码的可靠行,在解调时使用软解调的方式,采用一种低复杂度的max-log-map算法进行解调。最后再进行解扰,从而能够满足LTE系统对译码性能的要求,使译码的数据更加可靠。

FPGA芯片内部有丰富的LUT资源和大量的固核资源,其处理过程是并行的,在使用FPGA进行解调与解扰时能够充分发挥其内在的优势。在Virtex-6芯片进行板级验证,对结果进行分析可知,在FPGA中对解调与解扰的处理速度更快,可靠性更高。

FPGA

FPGA

2 解调与解扰在FPGA中的实现

由于解调与解扰的数据来自于解传输预编码之后的数据,所以在实现时,解完预编码之后才能进行解调和解扰。在PUSCH信道中一个子帧含有14个OFDM符号,其中本地参考信号要占用2个OFDM符号,由于本地参考信号不参与解调与解扰过程,所以对一个子帧只需要做12次解调与解扰。解预编码模块以后要给解调模块一个标志位,作为解调模块的开始;同样,对于解调模块在做完解调以后也要给解扰模块一个标志位,作为解扰模块的开始。这样,各个模块才能协调统一地完成解调与解扰过程。同时,也能够体现FPGA的并行处理的过程,上面的流程看似是顺序的过程,实际上是并行处理的过程,因为要做12个OFDM符号,在每次处理解扰的过程中,都可以同时处理下一个OFDM符号的解调过程。因此基于FPGA实现时速度能够得到极大的提高,更能够满足TD_LTE系统性能的要求。

本文针对上行共享信道QPSK的解调进行分析,对16QAM以及64QAM的处理过程相类似。使用软解调的方式,采用max-lop-map算法,由于在FPGA中处理的数据都是经过量化的,所以预编码的输出都是32 bit的数据,其中高16位为数据的实部,低16位为数据的虚部。QPSK的max-log-map表达式如式(5)所示。其中在解调模块中d要进行Q15的量化。然后分别对数据的实部和虚部同时乘以4d,在做乘法时使用FPGA内部的固核DSP48乘法器,同时对于进入乘法器的两路数据和输入数据都要缓存一个时钟周期,从而使数据的可靠性和稳定性得到保证。在FPGA中实现乘以-1是把DSP48输出的数据进行取反加一。对每个数据的实部和虚部都是同时进行乘法,这样做处理速度也能够提高。处理完以后把实部和虚部分开存储在一个深度为2 400、位宽为16 bit的双端口RAM中。等到一个OFDM符号处理完成以后就给解扰模块一个标志位,作为解扰模块的开始。

解扰模块也是针对上行共享信道进行分析,其他信道的解扰过程相类似。在解扰模块实现中,首先产生伪随机序列,根据高层配置的子帧号、小区ID等信息,再由上面的递推公式(8)和(9),一直递推到x1(1 600),x2(1 600),从而可以求得c(0);再依次递推,求得c(0),c(1),…,c(28 799)。把这些伪随机序列数据存储在一个深度为28 800、位宽为1 bit的RAM中,在递推算法中每次都能够递推出32个伪随机数。这样随机序列产生的速度也很快,从而保证了解扰的处理速度。每次要做解扰时都可以从这个RAM中取出数据。同时,在收到解调模块的标志位时就开始进行解扰过程,其本质也就是根据伪随机序列再进行一次加扰,在c(i)为1时就对解调模块的数据进行取反加一,在c(i)为0时使解扰的数据保持不变。在整个解调与解扰设计过程中每个OFDM符号都要进行解扰,所以每次做完解调与解扰后的数据都放在一个RAM中,从而使设计更加模块化,且更加灵活,对于代码的维护和不同芯片之间的移植也更加方便。图1为解调解扰模块设计总体框架图。

3 FPGA仿真与实现结果分析

图2、图3分别是解调模块Modelsim仿真图和基于Virtex-6板级实现的Chipscope截图。在实现时,芯片外部提供的时钟是200 MHz的差分时钟,这个时钟连接到FPGA的数字时钟管理模块(DCM)并倍频到300 MHz,以保证时钟的稳定性和可靠性。其中flag_from_idft来自解预编码模块,其为高电平时表明预编码模块处理完成,可以进行计算解调模块了。这时解调模块就通过addr_to_idft地址信号发送给解预编码模块,此时存储在RAM中的预编码数据通过data_to_demodulation数据线传给解调模块。之后解调模块按照上面的分析过程进行计算,在处理完数据时拉高wea_modulate和web_modulate信号存储数据,在做完解调模块时拉高flag_to_scrable,在解扰模块收到这个标志位时就可以进行解扰模块的处理了。

图4、图5分别是解扰模块Modelsim仿真图和基于Virtex-6板级实现的Chipscope截图。在解扰模块中,收到flag_from_demodulate信号为高电平时就进行解扰过程的处理。其中data_from_demodulate是来自以上解调模块处理完的数据,data_from_random是来自伪随机序列产生模块产生的数据。根据产生的随机序列进行解扰处理,最后把处理后的数据dina_scramble也存储在一个双端口的RAM中,这样使得各个模块之间的独立性更强,也便于给需要此数据的不同模块提供数据。从FPGA的仿真图和实现图中可以看出,实现过程和仿真过程完全一致,从而保证了代码的可靠行。

FPGA

4 结论及分析

解调与解扰算法的Verliog程序已通过Xilinx ISE13.4的编译、仿真验证及板级验证。其结果和理论值一致,其精确度可以满足TD_LTE射频一致性测试仪表项目的要求。在FPGA中速度和面积总是相矛盾,在追求速度的同时,也要考虑芯片资源的问题。在资源充足的情况下,可以采用多级流水线的结构和并行运算来提高速度。本文采用此方法极大地提高了处理速度,三种调制与解扰处理的周期数如表1所示。可以看到,在FPGA(Virtex-6芯片)中的处理速度非常快,为后面译码工作节省了更多时间,更能够满足项目上的要求,故该方案已应用于国家重大科技专项“TD-LTE射频一致性测试仪表”的开发中。

FPGA

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分