摘要:本文介绍了一种数字通信中的交织、解交织器方案,并着重介绍了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’