背景技术
通信的目的是把对方不知道的消息及时可靠的传送给对方,因此,要求一个通信系统传输消息必须可靠与快速。在数字通信系统中可靠与快速往往是一对矛盾。若要求快速,则必然使得每个数据码元所占的时间缩短,波形变窄,能量减少,从而在受到干扰后产生错误的可能性增加,传送消息的可靠性减低。若要求可靠,则使得传送消息的速率变慢。因此,如何较合理的解决可靠性与速度这一对矛盾,是正确设计一个通信系统的关键问题之一。纠错码正是在解决这一对矛盾中不断发展起来的。
在《纠错码——原理与方法》一书(王新梅,肖国镇著,西安电子科技大学出版社,1991年第一版)中对纠错码作了详尽的阐述。目前数字通信系统中,利用纠错码或检错码进行差错控制的方式大致有以下几类:
重传反馈方式(ARQ)
即发送端发出能够发现错误的码,接收端收到通过信道传来的码后,在译码器根据该码的编码规则,判决收到的码序列中有无错误产生,并通过反馈信道把判决结果用判决信号告诉发送端。发端根据这些判决信号,把接收端认为有错的消息再次传送,直到接收端认为正确为止。
前向纠错方式(FEC)
即发送端发送能够被纠错的码,接收端收到这些码后,通过纠错译码器不仅能自动发现错误,而且能自动纠正接收码字传输中的错误。这种方式的优点是不需要反馈信道,能进行一个用户对多个用户的同播通信,译码实时性好,控制电路比ARQ简单。为了要获得比较低的误码率,往往必须以最坏的信道条件来设计纠错码,故所需的多余度码元比检错码要多得多,从而使编码率很低。但由于这种方式能实现同播通信,特别适用于军用通信,且随着编码理论的发展和编译码设备所需的大规模集成电路成本的不断降低,译码设备有可能做得越来越简单,成本也越来越低,因而在实际的通信中逐渐得到广泛应用。
混合纠错方式(HEC)
这种方式是发送端发送的码不仅能够被检测出错误,而且还有一定的纠错能力。接收端收到码序列后,首先检验错误情况,如果在纠错码的纠错能力以内,则自动进行纠错,如果错误很多,超过了码的纠错能力,但能检测出来,则接收端通过反馈信道,要求发端重新传送有错的消息。这种方式在一定程度上避免了FEC方式要求用复杂的译码设备和ARQ方式信息连贯性差的缺点,并能达到较低的误码率,因此在实际中应用越来越广。
上述各种差错控制系统中所用到的码,都是能在译码器自动发现错误的检错码,或者能够纠正删除错误的纠删码,任何一类码按照译码方法不同,均可作为检错码,纠错码或纠删码来使用。交织是纠错码中非常重要的一类,既可以用来纠正随机错误又可以用来纠正突发错误,尤其适合于组合信道的纠错系统。
以下就用第三代通信系统中的具体实例介绍如何实现交织与解交织的过程。根据3rd Generation Partnership Project(3GPP)1999年12月3G TS 25.212v3.1.1文档描述,频分复用(FDD)模式下的下行链路信道编码、复用和交织流程由如下几部分组成:给每一传输块添加CRC、传输块级联/编码块分段、信道编码、速率匹配、DTX标识插入、第一次交织(帧间交织)、无线帧划分、传输信道复用、物理信道分段、第二次交织(帧内交织)和物理信道映射。
3GPP的3G TS 25.212 v3.1.1规定第一次交织构成如下:第一次交织是列间置换,设输入数据长是X
i,将需要交织的比特顺序标为x
i1,x
i2,x
i3,…,
i是传输信道编号,X
i是比特的总数目。
表1第一次交织表
交织深度 |
列数C1 |
列间交换模式 |
10ms |
1 |
{0} |
20ms |
2 |
{0,1} |
40ms |
4 |
{0,2,1,3} |
80ms |
8 |
{0,4,2,6,1,5,3,7} |
以80ms交织深度为例说明实现交织的过程,可分为以下两步:
第一步:(1)按第一次交织表选择列数,对于80m的Transmission Time Interval(TTI,传输时间间隔),按3GPP规定确定列数为8列,行数为X
i/8,(2)输入序列逐行写入X
i/8×8矩形矩阵
第二步:(1)查第一次交织表中的交换模式可知,通过列间交换的模式为{0,4,2,6,1,5,3,7}做列间交换,(2)逐列读出列间交换后的另一个Xi/8×8矩阵,即可完成第一次交织过程。
由于交织是对数据块矩阵的行或列置换,再按逐行或逐列读取,现有技术通常是采用硬件交织器,较为复杂。而如果采用模拟硬件的程序方法实现,利用第二步(1)中的列间交换模式得到一个8×8的单位置换矩阵与原始Xi/8×8矩阵相乘得到最终结果的,即采用图1所示的常规的程序实现方法的流程中,可以看到程序的循环结构比较复杂,导致循环多重嵌套,且每次提出一个输入字节后要按相应位置将每个比特提出并重新组和,耗费时间,在实时系统中运算效率极低,资源消耗也很大。
比如在以下美国专利中:
6,014,761 Convolutional interleaving/de-interleaving method using pointerincrementing across predetermined distances and apparatus for data transmission
5,995,080 Method and apparatus for interleaving and de-interleaving YUVpixel data;
5,991,857 Interleaving and de-interleaving of data in telecommunications;
5,978,883 Block interleaving and deinterleaving method and device therefor;
均对交织提供了相关的方法。而在现代数字通信系统特别是第三代通信系统中更多的是强调满足实时快速而且尽可能避免软硬件过多的混合使用的情况。所以以上的这些方法都不适合,甚至无法做到在DSP中采用软件来实时快速计算来满足现代数字通信系统尤其是第三代通信系统的设计要求。
发明内容
本发明的目的是在运算时间要求苛刻,计算量有严格限制的系统中用尽可能少的时间来完成交织过程,从而使得交织运算变得快速和简单。
本发明结合了计算机的寄存器的特点,提出了一种从矩阵的向量乘法的角度实现交织的方法,
其特征是:
第一步
1)把输入数据存放在数据区中;
存入数据时,若交织为列间置换则分别逐行写入由交织确定的列数个比特,若交织为行间置换则分别逐列写入由交织确定的行数个比特;
上述每一行或列存放的位置是在数据区中分别定义了的地址空间;
2)将生成交织的单位置换矩阵保存在一组寄存器中;
生成交织的单位置换矩阵,若交织为列间置换则为交织确定的列间交换模式对单位矩阵进行相应列置换后生成的矩阵,若交织为行间置换则为交织确定的行间交换模式对单位矩阵进行相应行置换后生成的矩阵;
生成交织的单位置换矩阵,若交织为列间置换则将其逐列保存在一组寄存器中,列数为交织确定的列数,若交织为行间置换则将其逐行保存在一组寄存器中,行数为交织确定的行数;
第二步
1)从数据区中取数,将其存入另一个寄存器中;
若交织为列间置换则按输入数据行数从低到高的顺序进行取数,若交织为行间置换则按输入数据列数从低到高的顺序进行取数;
2)将寄存器中的数据与保存置换矩阵的寄存器中的数据分别相与,并判断每次相与的结果是否为0,如为0则将0、如为1则将1存放在不同的保存结果的地址下;
3)重复第二步的1),2)的取数、寄存、相与、判断、保存结果的过程,直到输入数据块全部运算结束;
第三步
将这不同的保存结果的地址下的数据读出就是交织的结果。
本发明从置换矩阵的角度出发提出了一种新的交织方法,解决了理论上产生一个点需用矩阵向量的一次点积操作,例如对80ms交织即8对元素相乘再求和,共8次乘法7次加法,而带来的实现上复杂的运算困难,很好结合了寄存器和置换向量的特点后,使得这8次乘法7次加法被用一个与运算完全替代,由此在计算上实现了一次与运算产生出一个交织点的突破,并使得程序的代码量大大缩减。而且这种方法也适用各类交织模式,有很强的通用性。
具体实施方式以下结合附图,并通过实施例具体介绍如何用置换矩阵法在DSP中实现交织:
图1常规方法实现交织的流程在背景技术中已作了介绍。下面以图2来详细描述用置换矩阵法实现80ms交织的过程:
对于80ms的TTI,按3GPP规定确定列数为8列,行数为X
i/8,列间交换的模式为{0,4,2,6,1,5,3,7},从x
i,1开始将X
i个比特按行顺序写入X
i/8×8矩阵A
首先,将输入的数据块A的所有X
i/8行标为行向量A(1),A(2),…,A(X
i/8-1),A(X
i/8),并将每行按字节顺序存放在数据区中地址空间ADDR_1到ADDR_X
i/8上,总长度为X
i/8个字节,每字节8个行比特;A(k):
xi,(8k+1) |
xi,(8k+2) |
xi,(8k+3) |
xi,(8k+4) |
xi,(5k+5) |
xi,(8k+6) |
xi,(8k+7) |
xi,(8k+8) |
K=0,1,…,X
i/8-1
又由矩阵论基本知识可以知道将8×8的单位矩阵E
r相应的列按{0,4,2,6,1,5,3,7}对调后得到置换矩阵E
r’
将E
r’的每列标为列向量E
r’(I,1),E
r’(I,2),…,E
r’(I,8),其中I=1,2,…,8表示每列的8个比特元素。E
r’(I,1),I=1,2,…,8:
E
r’(I,2),I=1,2,…,8:
E
r’(I,3),I=1,2,…,8:
E
r’(I,4),I=1,2,…,8:
E
r’(I,5),I=1,2,…,8:
E
r’(I,6),I=1,2,…,8:
E
r’(I,7),I=1,2,…,8:
E
r’(I,8),I=1,2,…,8:
分别按顺序放入寄存器E1到E8中,总长度为8个字节,每字节8个列比特;第二步:(1)从数据区地址空间为ADDR_n中提取A(n)n=1,并将其放入寄存器A;(2)将A和E1相与操作,相与结果放入寄存器COND,判断COND为0否,为0则输出第一列的第n行的结果0,不为0则输出第一列的第n行的结果1;(3)将A和E2相与操作,相与结果放入寄存器COND,判断COND为0否,为0则输出第二列的第n行的结果0,不为0则输出第二列的第n行的结果1;(4)重复8次,直到将A和E8相与操作,相与结果放入寄存器COND,判断COND为0否,为0则输出第八列的第n行的结果0,不为0则输出第八列的第n行的结果1为止;(5)从数据区的地址空间为ADDR_n中按n从2到X
i/8的顺序提取A(2)…A(Xi/8)放入寄存器A后,重复步骤(2)到步骤(4);第三步:将第二步处理的输出结果逐列的读出,即为交织后的矩阵。
所有交织是都对数据块矩阵进行行或列置换,再按逐行或逐列读取。用本方法实现交织没有这种局限性,进行行置换时只是将输入数据以及置换矩阵存放的方式不同和读取数据的方式不同而已,所以本发明的方法具有相当的通用性,属于交织的通用方法。对于10,20,40ms的数据交织均可以直接应用。本方法完全适用GSM、CDMA等数字通信系统要求的数据交织,这对所有需要在DSP中进行实时高速交织的系统具有非常重大的意义。
可以看出,采用本文所提出的新方法来实现信道的交织,完全不同于以往的直接采用硬件或采用软件模拟硬件的方法,完全是一种新的概念基础上的应用,它使得在数字通信系统中对所有信道所必需的交织运算大大提高了性能,在DSP实时处理时使得占用了部分主要的系统资源的交织此时仅占用了非常微量甚至可以忽略不计的系统资源,特别能够满足具有苛刻的实时性要求的数字系统。