>
首页 » 技术文章 » 3GPP Turbo解码器解交织矩阵的硬件实现

3GPP Turbo解码器解交织矩阵的硬件实现

作者:重庆邮电学院 移动通信工程研究中心    朱志辉  游敏惠  时间:2006-05-31 15:05  来源:本站原创

摘要:本文介绍了一种数字通信中的交织、解交织器方案,并着重介绍了3GPP建议标准用于TD-SCDMA系统的Turbo解码器解交织矩阵的高效低功耗硬件实现。

引言

交织器的主要作用是将原始数据序列打散,使交织前后数据序列的相关性减弱,可以通过纠随机差错的信道码来纠突发差错,作用是尽可能地分散突发错误,使进入解码器的错误基本上是随机的,这样就大大降低了数据突发错误的影响。在第三代移动通信系统中,3GPP建议其数据业务信道编解码使用Turbo码,而Turbo编解码器中多处使用交织和解交织,交织和解交织性能的好坏是影响Turbo编解码效果最重要的因素之一。本文主要介绍TD-SCDMA系统中Turbo解码器解交织矩阵的实现。

典型交织器设计

交织器可以分为规则交织器和伪随机交织器,规则交织器又可分为分组交织器、循环移位交织器、分组螺旋交织器和二次算术交织器。分组交织器是最简单的一类交织器。它的交织映射过程可以描述为:将数据序列按行的顺序写入m×n矩阵,然后按列的顺序读出,即完成交织。其实现过程类似于乘积码的编码过程。相应的解交织过程就是将交织后的数据序列按列的顺序写入,然后按行的顺序读出即可。交织过程如图1所示。

3GPP Turbo解码器解交织矩阵的硬件实现

3GPP Turbo交织器建议算法

Turbo码内部交织器的算法包括:将输入比特流填充到一矩阵中;进行行内和行间交织得到新的矩阵;新矩阵经剪切后得到输出比特流。


图1 分组交织映射示意图

将输入比特流填充到矩阵中

⑴ 决定矩阵的行数R。

矩阵的行序号从上至下为0,1,…,R-1。
⑵ 决定用于行内交织的质数p和矩阵的列数C。
如果481≤K≤530,则p=53,且C=p;否则就采用满足下列条件的p:,并由此决定:

矩阵的列序号从左至右为0,1,…,C-1。

⑶ 将输入比特流x1、x2、x3、K、xk从y1逐行写入R×C矩阵。
其中,yk=xk(k = 1, 2, …, K );如果R×C>K ,余下未填充的比特yk=0或1(k=K+1, K + 2, …, R×C )。在行内和行间交织后,这些后来被填充的虚拟比特将会从矩阵的输出中剪除。

进行行内和行间交织

得到新的矩阵
⑴ 查表得到v。
⑵ 构造行内交织基本序列:

,j=1,2,…,(p-2),且s(0)=1。
⑶ 令q0 = 1,选择满足下列条件的最小质数序列(i = 1,2,…,R-1)。
g.c.d(qi, p - 1) = 1,g.c.d表示最大公约数;
qi > 6;
qi > q(i - 1)。
⑷ 对改序可得到序列:rT(i)=qi(i=0, 1, …, R-1)。
⑸ 对第i行(i = 0,1, …, R - 1)进行行内交织。
① 如果C=p,

j=0,1,...,p-2且Ui(p-1)=0;
② 如果C=p+1,

且Ui(p-1)=0, Ui(p)=p
③如果C=p-1,

j=0,1,...,p-2且U1(p-1)=0,Ui(p)=p
其中,Ui(j)是行内交织模式序列,它表示第i行的第j个被改序位的原始位置。
⑹ 先按照Ui(j)进行行内交织,再按照T(i)进行行间交织后,可得到交织后的新矩阵。
新矩阵经剪切后得到输出比特流
从上面的新矩阵中逐列读出(y’1,…,y’C×R),然后剪切掉交织前被填充的虚拟位,即对应于k>K的位yk的位y’k。经过交织后得到的输出位记为:
x’1,x’2,…,x’k,须被剪切掉的位数为:l=C×R-K。


图2 解交织矩阵的硬件实现框图

3GPP Turbo解交织器硬件实现

在Turbo解码中,一般要进行3次以上迭代,所以,使用解交织矩阵是非常频繁的,如果对每组数据都进行交织/解交织计算,将十分耗时,因此,可以先求出交织及解交织矩阵,放在存储区内,直接进行交织/解交织。本设计方案是产生一个解交织矩阵表,每次需要进行解交织时,只需要顺序读取要进行解交织的数据,写到解交织矩阵表对应的目的地址,就完成了解交织。而对于交织,因为解交织和交织是互逆的过程,所以只需按照解交织矩阵表读取相应地址数据,顺序写到目的存储器,那么目的存储器得到的就是原数据的交织结果了。

本设计的实现思想为:计算所有交织参数,然后根据这些参数产生一个目的写地址,把1,2,…,K这K个顺序数写到目的寄存器即可。解交织矩阵的硬件实现如图2所示。

1. 参数计算单元
首先计算对应K值的各个解交织矩阵的参数:R和C,然后从素数p及原根v对应关系表中查找出p0、v0,并可以确定对应的行间交织的样式T(i)。T(i)是一个几组行间交织样式的常数表,存储在ROM中,所以只需确定其起始位置,使用时从起始位置读出即可。

2.RTi的查找单元
令q0=1,而qi(i=1,2,…,R-1)从素数p及原根v对应关系表中查找,素数p只要不是p0-1的公约数即可,找出其中从小开始的R-2个即是对应序列的值,这就是一个查找表的过程。这里并不用做rT(i)=qi的变换,因为后面还有一次ri=qT(i)的变换,又变换回原序列。

3.S(j)的迭代计算单元
行内交织基序列S(j)的计算是一个带有模运算的迭代求解的过程。
S(0)=1;
s(j)=(v×s(j-1))mod p0, j = 1,2,…,(P0-2)

4.解交织写地址产生单元与交织矩阵顺序数产生单元
产生解交织矩阵的写地址包含最复杂的控制和计算逻辑。因为这个单元包括了行内和行间交织以及行写列读过程。确定每个顺序数据写的位置后,就确定了其行列交换的位置,并按行读列写的位置进行相应的操作。
ADDR:=C*T(i)+Ui(j), i=0,1,…, R-1,j=1,2…,p0-2
其中, Ui(j)是第i行、第j个需要交换位的原始位置。
DAT:=k, k=1,2,…,K-1

性能分析

本设计的指导思想是尽可能减少存储器的使用,而通过标准单元来控制:顺序产生的0~K-1的常数分别写到存储器的相应位置,即可得到Turbo解码的交织矩阵。

该设计采用了Artisan的memory IP和SMIC 0.13mm工艺,在此前提下做性能分析对比,从面积上分析,只需要用到存储s(j)的存储器,本设计采用复用Turbo解码器,其他模块的存储器作为s(j)的存储器,所以并不额外增加存储器,每块DPRAM IP核的面积为0.87124mm2,省去2块就是1.74248mm2,因控制模块增加的标准单元的面积可以忽略不计。从功耗上分析,常温下每个端口的平均功耗为:读为0.031mW/MHz,写为0.042 mW/MHz,因为只需写1次,存储器操作即可完成,可以减少3次对存储器的读和写,这就大大降低了功耗。从执行效率上来看,耗时大概是原来的1/3,最大K值为5114的情况下,也能在6000个时钟周期之内完成解交织矩阵,即除了迭代计算参数序列s(j)的产生外,基本上就是写目标存储器的时间,在Synopsys公司的Design Compile下综合后能够在125MHz运行。

结语

本设计通过传递过来的K值计算全部参数后,直接产生顺序数据并写到解交织存储器的对应位置中,生成解交织矩阵。该设计可用于TD-SCDMA系统中基带处理专用芯片,较好地解决了资源、功耗和解交织效率等问题。■

相关推荐

中国TD强芯之旅:从无芯到强芯的飞跃

TD  4G  2014-01-17

4G时代国产芯片“使命必达”

4G  TD-LTE  2014-01-07

“芯实力”引4G未来 中兴“芯”未雨绸缪

中兴  TD-LTE  2013-12-23

调查高通 或意在促TD-LTE产业良性发展

高通  TD-LTE  2013-11-28

中国电子报:TD-LTE使TDD技术更有生命力

TD-LTE  TDD  2013-11-21

四核当道 国产芯片瞄准TD-SCDMA新商机

TD-SCDMA  四核  2013-08-20
在线研讨会
焦点