随机存取多向cdma2000turbo编码交织器的制作方法

文档序号:7504613阅读:264来源:国知局
专利名称:随机存取多向cdma2000 turbo编码交织器的制作方法
背景I.领域本发明一般涉及通信系统,尤其涉及为数字通信系统中turbo编码方案使用的交织器。
II.背景数字数据的传输本来就易受到干扰,这会把误差引入已发射数据。已经提出差错检测方案来尽可能可靠地确定误差是否被引入已发射数据。例如,通常以分组发射数据并对每个分组加入一个循环冗余校验(CRC)字段,例如长度为16比特的字段,它携带分组数据的校验和。当接收机接收数据时,接收机计算已接收数据上的同一校验和并校验计算结果是否与CRC字段内的校验和相同。
当被发射的数据不作在线使用时,当检测到误差时可能请求重发出错的数据。然而,当进行在线传输时,譬如,在电话线、蜂窝电话、远程视频系统等等当中,不可能请求重发。
已经引入卷积码,使数字数据的接收机即使在传输期间可能发生差错时也能正确地确定已发射数据。卷积码把冗余引入被发射数据并且把被发射数据打包成分组,其中每比特的值都取决于序列中前面的比特。这样,当发生差错时,接收机仍能通过追溯接收数据中的可能序列而推断出原始数据。
为了进一步改进传输信道的性能,某些编码方案包括交织器,它在编码期间混合分组中比特的顺序。这样,当干扰在传输期间破坏某些邻近比特时,干扰的效应会被分散到整个原始分组并能更容易地由解码过程克服。其它改进可能包括多分量编码,它以并行或串行方式对分组进行多于一次的编码,并行或串行。例如,本领域已知,采用纠错方法使用至少两个并行的卷积编码器。这种并行编码通常被称为turbo编码。
对于多分量编码而言,最佳解码通常是很复杂的任务,并且可能需要对于在线解码通常不能提供的大时间周期。已经研发了迭代解码技术来克服这个问题。接收机在表示比特为1的概率的多级尺度上为每个比特分配一个值,而不是立即确定接收到的比特是0还是1。常用的尺度称为对数似然比(LLR)概率,它用某范围、如{-32,31}内的整数来表示每个比特。值31表示已发射比特为0的概率很大,而值-32表示已发射比特为1的概率很大。值零表示逻辑比特值是不确定的。
多级尺度上表示的数据被称为“软数据”,且迭代解码通常是软入/软出,即,解码过程接收与比特值概率相对应的输入序列,并且考虑到编码限制而提供为输出校正的概率。一般而言,执行迭代解码的解码器用来自前面迭代的软数据来对由接收机读取的软数据进行解码。在多分量编码的迭代解码期间,解码器用一个编码的解码结果来改进第二个编码的解码。当使用并行编码器时,如在turbo编码中,可以为此而方便地并行使用两个相应的解码器。这种迭代解码为多次迭代而被实现,直到相信软数据接近地表示已发射数据为止。具有表示它们更接近于1的概率的那些比特(例如,上述尺度0和31之间)被分配到二进制0,剩下的比特被分配到二进制1。
“Turbo编码”表示前向纠错(FEC)领域的重要进步。有许多种turbo编码,但大多数turbo编码类型通过结合迭代解码使用由交织步骤分开多重编码步骤。这种结合提供了通信系统中关于噪声容差的先前不能提供的性能。即,turbo编码允许以使用现有前向纠错技术时以前是不可接受的每噪声功率谱密度的每比特能量(Eb/No)的级别上进行通信。
许多通信系统使用前向纠错技术并因此会受益于turbo编码的使用。例如,turbo码会改进无线卫星链路的性能,其中卫星的有限下行发射功率需要能工作在低Eb/No电平的接收机系统。
数字无线电信系统,譬如数字蜂窝和PCS电话系统,也用于前向纠错。例如,电信工业联盟已经公布了空中接口标准TIA/EIA临时标准95及其派生物,譬如IS-95B(这里总称为IS-95),它定义了使用卷积编码提供编码增益来增加系统容量的数字无线通信系统。美国专利号5103459中描述了大致按照IS-95标准的用于处理射频(RF)信号的系统和方法,该专利被转让给本发明的受让人并且完全通过引用被结合于此。
通信工业中不断驱使以持续地改进编码增益。在常规数字无线通信系统中,已经发现可以用同余的随机序列有利地实现用于turbo编码的串行交织器。本领域已知可以通过使用线性同余的递归算法来产生均匀的随机序列。如,参见2D.Knuth编著的The Art of Computer Programming(1969)(描述了用线性同余的递归产生伪随机数)。还已经发现采用二维交织器(即,被组织为包括多行和多列的矩形数据数组的交织器)的并行turbo编码器就编码增益而言一般胜过具有一维交织器(即,其中数据被组织为单独、线性数组的交织器)的并行turbo编码器。
最好进一步加强turbo编码器的性能。此外,由于turbo编码器的实现远比卷积编码器复杂,因此期望提供具有减少了的复杂度的turbo编码器实现。这样,需要一种复杂度减少的、二维交织器,它使用多个线性同余序列。
蜂窝电信系统的特征在于多个移动收发器,譬如移动电话,它们与一个或多个基站进行通信。每个收发器包括一个发射机和一个接收机。
在典型的收发器中,模拟射频(RF)信号由天线接收,并由RF部分下变频至中频(IF)。信号处理电路执行噪声滤波并且通过模拟自动增益控制(AGC)电路调节信号的幅度。然后,IF部分把信号混合成基带,并把模拟信号转换成数字信号。然后,数字信号被输入基带处理器用于进一步的信号处理以输出话音或数据。
同样,发射机从基带处理器接收数字输入,并把输入转换成模拟信号。然后,该信号被滤波并由IF级上变频至中频。发射信号的增益被调节,IF信号被上变频至RF,用于准备无线电传输。
发射机和接收机间的链路是信道。增加基站和相关移动站间信道的信息承载容量的一种方法是提高信号对干扰比(SIR)。SIR通常被表示为接收到的每信息比特能量对接收信号干扰密度的比值。为了增加系统容量,移动站和基站内的接收机必须有效地工作在较低信号对干扰比(SIR)下,或者必须增加信道的SIR。为了增加SIR,通常要增加发射信号的功率,这是代价昂贵的,它增加了对其它移动站的干扰,并因此在许多应用中不切实际。或者,为了减少所需的SIR通常采用特别的编码方案。
通信信号的编码涉及把冗余信息加入信号。通过战略上把冗余加入噪声环境中发送的通信信号中,由噪声信道引入的差错被减少为期望水平。如香农在1948年所示,如果通信信号的信息速率低于信道容量,则可以达到期望的噪声水平而无须减少信息速率。如果噪声环境中未采用冗余,则难以或者不可能获得无差错的性能。
设计了许多编码和解码系统来控制在通信系统中信息传输期间发生的与噪声和干扰有关的误差。在设计高度可靠的现代数字通信系统时,编码是重要的考虑。
在噪声或衰落环境中高效工作的能力在码分多址(CDMA)无线通信系统中特别重要,其中瑞利衰落的信号环境和来自其它用户的同信道干扰是常见的。瑞利衰落由移动站位移引起的接收信号中的多普勒频偏移造成。同信道干扰在CDMA通信系统保持多个系统用户时发生,每个附加用户额外地助长了同信道干扰。同信道干扰一般比其它形式的信道噪声大,譬如,附加的白高斯噪声(AWGN)。
在瑞利衰落的信号环境中,已发射通信信号的功率电平按照瑞利分布波动。功率一般在10dB到50dB的动态范围内波动。衰落的持续时间是如蜂窝电话这样的移动站的速度、为该移动站分配的频率信道、以及总信号环境的函数。随着移动单元的速度增加,衰落持续时间减少,导致较短的突发差错。随着移动单元速度的减少,衰落持续时间增加,导致较长的突发差错。
为了改进噪声和瑞利衰落环境中无线通信系统的性能,通常采用跟随信号编码器的交织器。交织器扩展来自编码器的码字输出,使得给定码字的单独比特彼此分开并在不同时间被发送。结果,给定编码的单独比特遭受独立的衰落,其中受到突发差错影响的比特属于几个码字。在接收机处,接收到的信号采样在解码前被去交织。这样,突发差错的效应散布于报文,从而能用原始的纠错码恢复数据。存在几种类型的交织器,包括对角线、卷积、块间和块交织器。
Turbo码是两个或多个组成码的串行串接或并行串接,由一个或多个编码交织器分开。通常采用Turbo编码器和解码器来改进差错控制并减少所需的SIR。Turbo码通常用相对有效的迭代算法来解码,从而在接近香农限制的信噪比(SNR)处达到低差错率。作为Turbo码的基本部分,必须在组成代码的编码器和解码器之间分别插入代码交织器和去交织器。Turbo码的性能取决于代码交织器的长度和结构。过去用具有伪随机结构的交织器已经达到了良好的turbo编码性能。
美国专利申请号09/205511、由D.Rowitch等人于1998年12月4日提交的、题为“TURBO CODE INTERLEAVER USING LINEAR CONGRUENTIAL SEQUENCES”(代理案卷号QCPA720)中揭示并要求了特别有利的交织器设计,该专利发明的原理通过引用被结合于此。Rowitch等人的交织器根据个人电脑上允许的仿真提供了许多优点。然而,需要用硬件(即,蜂窝电话)有效地实现该交织器。
因此,本领域中需要一种用硬件实现Rowitch等人主张的原理的系统和方法,使得该原理可以被结合在蜂窝电话中使用的集成电路或芯片中。
概述本发明的交织器针对本领域中的需求。发明的交织器包括第一计算单元,用于接收输入地址并且对其响应而在第一时钟周期期间计算第一顺序交织的地址。包括第二计算单元,用于接收输入地址并且对其响应而在第一时钟周期期间计算第二顺序交织的地址。发明的交织器还包括比较器,用于确定第一还是第二顺序交织的地址无效并对其响应而产生信号。比较器的输出把控制信号提供给开关,后者选择第一或第二顺序交织的地址作为第一时钟周期的输出交织地址。
在说明性实施例中,第一和第二计算单元实现下列表达式A=bitrev(row)·2c+{(col+l)·c(i)modC,其中A是经交织的地址,“行”是5LSB,“列”是输入线性地址的cMSB,c是列数,而c(i)是查找表的输出,其中“i”是当前行数。
交织器被设计成响应方向控制信号而控制所述交织器关于所述输入地址在正向或反向上移动。包括了一种机制,用于提供关于输入地址的地址偏置。图中所示的地址偏置存储器86以及加载计数器84的能力使交织器能在交织器序列中的任意期望点开始。从Rowitch等人的专利中的算法中可知,从开始到结束都需要运行交织器--没有用于在序列中随机点处开始的指定方法。通过预先存储交织器序列中期望点的地址偏置,交织器序列可以在那些期望点处开始,或在正向或在反向运行。
发明的交织器提供了由CDMA2000标准使用的LCS turbo交织器算法的唯一实现。
附图简述

图1是并行串接的turbo编码器的框图。
图2是可以在图1的并行串接的turbo编码器内使用的交织器框图。
图3是可以结合图2的交织器使用的组成编码器的框图。
图4是turbo编码器的顶层框图,它带有两个卷积编码器和按照本原理构造的交织器。
图5是示出图4交织器细节的简化框图。
图6是结合当前公开的实施例原理的turbo解码器的说明性实现框图。
详细说明按照一个实施例,如图1所述,并行串接的turbo编码器10,即turbo编码器10包括第一和第二编码器12、14、交织器16、以及多路复用器18。第一编码器12和交织器16用于接收编码器输入数据20,它一般是用户信息或者控制数据。第一编码器12输出系统码元22,它一般是原始输入比特20的复制品,以及一致校验码元24。第二编码器14用于接收交织器16经交织的输出26,并用于输出第二组一致校验码元28。由第二编码器14产生的系统码元(未示出)被抑制,且第一和第二编码器12、14剩下的相应输出22、24、28由多路复用器18多路复用成输出数据流30。
可以并联加入附加的编码器和交织器以减少编码率,从而提供提高了的前向纠错。或者,可以截去某些系统码元22和/或奇偶校验码元24以增加编码率并提供改进了的频谱效率。
第一和第二编码器12、14可以是本领域已知的各类编码器,包括分组编码器和卷积编码器。Bernard Sklar所著的Digital Communications 245-380(1988)中描述了示例性分组编码器和卷积编码器,该文通过引用被结合于此。第一和第二编码器12、14最好是具有相对小约束长度K的卷积编码器,譬如K=4,从而由于低约束长度减少了相应解码器(未示出)的复杂度,因此提供减少了的复杂度。第一和第二编码器12、14还最好是递归的系统卷积(RSC)编码器,如本领域已知。如下所述,交织器16最好是二维交织器。
一般而言,第一和第二编码器12、14为每个接收到的比特20输出两个奇偶校验码元24、28,为每个编码器12、14产生编码率R=1/2。然而,由于来自第二编码器14的系统比特被截去,因此turbo编码器10的总编码率为R=1/3。
如图2所示,按照一个实施例的二维(2-D)、线性同余序列(LCS)交织器100包括四张查找表(LUT)102、104、106、108、七个二输入多路复用器(MUX)110、112、114、116、118、120、122,一个R-输入MUX 124、一个行计数器126、第一和第二比特倒置逻辑块128、130、一个地址验证模块132、多个(R个)列下标或行下标寄存器134、136、138、140(为了简化被示出为四个寄存器),用于标记列下标复位的寄存器142、第一和第二k位乘法器144、146、以及四个k位加法器148、150、152、154。LCS递归发生器156由虚线包围部分描述。交织器100可以用于图1的并行串接turbo编码器中,或者,交织器100可用于串行串接turbo编码器内,其中交织器100中放有外部和内部组成码,这能由本领域的技术人员理解。
交织器100的大小为N,它小于或等于2m并且大于2m-1。行数R乘以列数C等于2m。列数C等于2k,即k=log2C。行数R等于2r,即r=log2R。
地址确认模块132最好用被配置为移位寄存器和加法器的离散门逻辑来实现。地址确认模块132用来检查X输入是否小于列数C和Y输入(行下标)的乘积,与Z输入(列下标)相加,执行如移位和加法功能。地址确认模块132用来产生一个标志,表示该地址是否无效,即,该地址是否包含应被丢弃的超出2次幂的比特(即,交织器大小是否在2的连续幂之间)。
如下所述,LCS递归发生器156通过在四个LUT 102、104、106、108的输入处接收行数值下标并且产生列下标(地址确认模块132的Z输入),从而伪随机地重排、或搅乱交织器100的每行内包含的比特值。本领域的技术人员可以理解,在如图1所述的并行串接turbo编码器中,最好防止数据元素的物理重排,有利地使用关于由第二编码器定址的读取而伪随机产生的LCS。如下所述并且如本领域已知,第一和第二比特倒置逻辑块128、130用来按照预定义的比特倒置规则重排或搅乱交织器100内的行。
LUT 102、104、106、108可以用本领域已知的任何存储媒体来实现。第一LUT102用于存储系数c的值。第二LUT 104用于存储系数a的值。第三LUT 106用于存储系数a对系数b的幂的值。第四LUT 108用于存储x(-1)的值。每个LUT 102、104、106、108的大小为r×k个比特。交织器100的总存储器要求为4r×k个比特加上寄存器134、136、138、140的r×k个寄存器比特。
寄存器143接收表示行数的比特值,它最初被设为R-1。在每个处理周期中,寄存器142输出表示列数的比特值,它最初被设为不等于零。寄存器142从而用来每当行数周期经过所有行就复位列下标。
在每个处理周期中,输入MUX 110产生或为1或为-1的值,这取决于是否设定了向后运行(RunBackwards)标志。该值被提供给加法器148,它把该值加入标为下一行(NextRow)的比特值。产生的和被提供给行计数器126的数据输入。值1被提供给行计数器126的第二输入。行计数器126产生一个行值(最初被存储为寄存器142内的R-1),它被提供给第二比特倒置逻辑块130。该行值还被提供给LUT 102、104、106、108的每一个。该行值还被提供给加法器150,它把该行值加入值1,并把产生的和提供给第一比特倒置逻辑块128。该产生的和还被提供给MUX 112的第一输入。
在每个处理周期内,第一比特倒置逻辑块128把一个值提供给MUX 114的第一输入。第二比特倒置逻辑块130把行下标值提供给MUX 114的第二输入,还提供给地址确认模块132的Y输入。地址确认模块132接收X输入处的值N。地址确认模块132根据Z输入处存储的系数接收一个值。LCS地址确认模块132计算C和Y输入值的乘积,把该乘积加入Z输入值,并检查结果是否大于或等于X输入值N。如果经计算的值大于或等于N,则地址确认模块132输出值1。否则,输出值为0。输出值是标为Addr_GT_N的标志,它在被设为1时表示交织器大小处在2的连续幂之间,使得超出2的较低次幂的比特应被丢弃。
Addr_GT_N值作为选择器输入被提供给MUX 112、114、120和122。如果Addr_GT_N值被设为1,则MUX 112选择其第一输入。作为MUX 112输出的所选输入是经交织的NextRow值。如果Addr_GT_N值被设为1,则MUX 114选择其第一输入。作为MUX 114输出的所选输入表示最后一行的下标值。
LCS递归发生如下进行。在每个处理周期内,表示系数c的k位值从第一LUT102被发送至数据通路k位加法器152。值a从第二LUT 104被发送至MUX 116的第一输入。表示a的b次幂的值从第三LUT 106被发送至MUX 116的第二输入。MUX116接收选择器输入处的RunBackwards标志。如果RunBackwards标志为1,则MUX116选择其第二输入并把所选值,一个k位值,提供给乘法器144。否则,MUX 116把它的第一输入,一个k位值,提供给乘法器144。值x(-1)从第四LUT 108被发送至MUX 118的第一输入。MUX 118在第二输入处接收从MUX 124输出的k位值。MUX 118在选择器下标处接收列下标值。列下标值最初被设为不等于零。如果列下标值为1,则MUX 118选择其第二输入。否则,MUX 118选择其第一输入。所选输入值,一个k位值,被提供给乘法器144。从乘法器144产生的乘积被提供给k位加法器152。数据通路k位加法器152最好是可编程加法器/减法器,如本领域已知。当交织器100向后运行时,加法器152减去值c。
k位加法器152在每个处理周期内把一个输出值提供给地址确认模块132的Z输入。加法器152的输出还被提供给MUX 120的第一输入并被提供给第一到第(R-1)个行寄存器136、138、140的每一个。加法器152的输出还作为k位输入值被提供给MUX 122的第一输入。
MUX 120从k位加法器154接收第二输入值。如果MUX 120的选择器输入被设为1,则MUX 120选择其第一输入。否则,MUX 120选择其第二输入。所选输入被提供给第零个行寄存器134。每个行寄存器134、136、138、140把一个输出值提供给MUX 124的相应输出。此外,第零个行寄存器134的输出值被提供给乘法器146。MUX 124接收选择器输入处的行值(行计数器126的输出)。由MUX 124选择的行寄存器输入取决于选择器输入处行值的值。这样,当行值等于相应的行寄存器号时,每个行寄存器134、136、138、140被更新,而当标志Addr_GT_N等于零时,也启用第零个行寄存器134。
R=0的k位初始输入值b被提供给乘法器146。乘法器146还接收从第零个行寄存器134输出的值。乘法器146把两个接收到的值相乘并把乘积提供给k位加法器154。数据通路k位加法器154还接收R=0的初始值c。数据通路k位加法器154最好是可编程加法器/减法器,如本领域已知。当交织器100向后运行时,加法器154减去初始值c。加法器154把两个接收到的值相加(或,按照已编程那样,相减)。产生的和,一个k位值,被提供给MUX 122的第二输入。
如果MUX 122的选择器输入被设为1,它就选择其第一输入。否则,MUX 122选择其第二输入。MUX 122把所选的输入作为最后一列的下标值输出。下一比特值的地址是R和来自MUX 122的最后一行下标值的乘积,与来自MUX 114的最后一列下标值输出相加。
在一个实施例中,按照下列恒等式产生周期为M的LCSx(n+1)=(ax(n)+c)mod M整数a、c和M满足下列三个条件(1)c与M互质。(2)a-1一定是p的倍数,其中p是除尽M的任一质数。当M为4的倍数时,a-1一定是4的倍数。(3)x(0)是种子值,它可以是任意整数。为了简化实现,M最好被选为2的幂数。这样,a的形式为4p+1,而c可以是任意奇数。注意到上面的x(0)用来表示初始条件,而x(-1)用于表示结合图2所述的实施例中的初始条件。对于所使用的不同数字不加权。
按照一个实施例的2-D、LCS交织器如下指定令交织大小为K=2N,交织器被规定为R行C列的矩形矩阵,其中R和C都是2的幂数。要被交织的数据逐行地被写入矩阵。数据行首先按照任何常规交织规则被交换(即,被交织)。数据行最好按照行下标所用的比特倒置规则被交换。在每一行内,列(即,数据元素,因为每行中每列仅有一个数据元素)按照由相关LCS指定的规则而被交换。与两个相异行相关的LCS最好是不同的,但或者也可以是相同的。在所有行的交换后,数据逐列地被读出来产生经交织的序列。本领域的技术人员可以理解,可以通过从长度为2N的交织器中删除无效地址而产生长度小于2N大于2N-1的交织器。
在一个实施例中,2-D、LCS交织器包括下列规格交织器大小为32(即,N=5)数据组被定义为{d(0),d(1),d(2),...d(31)}。交织器组织成为具有四行、每行八个元素的数组。以下列方式逐行填入数据元素d(0)d(1)d(2)d(3)d(4)d(5)d(6)d(7)d(8)d(9)d(10)d(11)d(12)d(13)d(14)d(15)d(16)d(17)d(18)d(19)d(20)d(21)d(22)d(23)d(24)d(25)d(26)d(27)d(28)d(29)d(30)d(31)]]>以二进制(00,01,10,11)表示的行下标最好是比特倒置的(即,00,10,01,11),且行被交换,得到d(0)d(1)d(2)d(3)d(4)d(5)d(6)d(7)d(16)d(17)d(18)d(19)d(20)d(21)d(22)d(23)d(8)d(9)d(10)d(11)d(12)d(13)d(14)d(15)d(24)d(25)d(26)d(27)d(28)d(29)d(30)d(31)]]>比特倒置用来按照预定义的比特倒置算法来搅乱交织器的行。比特倒置算法的应用提供了交织器行之间期望的时间分离。然而,比特倒置对于交织器的实现并非必须。
在特定实施例中,按照下列方程产生交换LCSx1(n+1)=(5x1(n)+7)mod 8,其中x1(0)=3,x2(n+1)=(x2(n)+5)mod 8,其中x2(0)=0,x3(n+1)=(5x3(n)+3)mod 8,其中x3(0)=4,以及
x4(n+1)=(x4(n)+3)mod 8,其中x4(0)=3。
对于四行分别由{3,6,5,0,7,2,1,4)、{0,5,2,7,4,1,6,3)、{4,7,6,1,0,3,2,5}和{7,2,5,0,3,6,1,4}给出交换模式。因此,在应用了列交换之后,第一行成为(d(3) d(6)d(5)d(0)d(7)d(2)d(1)d(4)),第二行成为(d(16)d(21)d(18)d(23)d(20)d(17)d(22)d(19)),第三行成为{d(12)d(15)d(14)d(9)d(8)d(11)d(10)d(13)},而第四行成为{d(31)d(26)d(29)d(24)d(27)d(30)d(25)d(28)}。
在所有列在它们相应的行内被交换后,经交织的数据矩阵型式如下d(3)d(6)d(5)d(0)d(7)d(2)d(1)d(4)d(16)d(21)d(18)d(23)d(20)d(17)d(22)d(19)d(12)d(15)d(14)d(9)d(8)d(11)d(10)d(13)d(31)d(26)d(29)d(24)d(27)d(30)d(25)d(28)]]>交织后矩阵内的数据逐列被读出,产生下列经交织的序列{d(3),d(16),d(12),d(31),d(6),d(21),d(15),d(26),d(5),d(18),d(14),…,d(11),d(30),d(1),d(22),d(10),d(25),d(4),d(19),d(13),d(28)}。如果期望长度为30的交织器,则可以通过删除数据元素d(30)和d(31)而缩短如上产生的交织器,产生下面经交织的序列{d(3),d(16),d(12), d(6),d(21),d(15),d(26),d(5),d(18),d(14),…,d(11), d(1),d(22),d(10),d(25),d(4),d(19),d(13),d(28)}。
交织器结构内采用的LCS根据期望或在正向或在反向中产生,为了turbo解码中与MAP解码器的最优使用。在一个实施例中,倒置序列发生由下列方程给出x(n)=(αβx(n+1)-c)mod M其中β=(M/2)-1应该注意的是,上述方程中使用的项β代表结合图2实施例描述的系数b。
这样,LCS的产生要求用3R个参数唯一地定义每个交织器,其中R是行数。需要相对短的log2(C)×log2(C)乘法器。由于模数操作,因此不必要产生超出比特单元log2(C)的比特。需要一组R个寄存器来保持R个同余序列的中间结果。
由于每行的参数x(0)、a和b不同,因此交换序列有许多不同的可能。期望进行搜索来优化与特定turbo码一起使用的交织器参数。
在图3中,为了CDMA数字无线通信系统中所用的特定turbo码优化按照一个实施例的组成编码器200。编码器200包括七个模2加法器202、204、206、208、210、212、214和三个比特单元216、218、220。比特单元216、218、220可以用一个三位寄存器来实现,或者用三个一位寄存器来实现。模2加法器202、204、206、208、210、212、214以精确的方式与比特单元216、218、220耦合,以便产生一组期望点反馈抽头。这样,加法器202用于接收输入比特。加法器202还把比特单元216耦合至加法器204和206。比特单元216与比特单元218耦合,并且与加法器204和206耦合。比特单元218与比特单元220耦合,并且与加法器208和210耦合。加法器210与加法器202耦合。加法器204与加法器212耦合。加法器206与加法器208耦合。加法器208与加法器214耦合。比特单元220与加法器210、214和212耦合。加法器212、214分别用于输出第一和第二码元。
本领域已知,误差性能可以用组成解码器(未示出)内误差事件的输入和输出权重来表征。参见如S.Benedetto和G.Montorsi所著的Unveiling Turbo CodesSome Results on Parallel Concatenated Coding Schemes,登载在42 IEEE Trans.Info.Theory 409-28(1996年3月)上。误差事件的输入权重是比特误差数,而误差事件的输出权重是编码码元误差的数目。输入权重1的误差事件会清楚地与全零态分开出来并且不再重新合并(1会在移位寄存器内无限循环,顺次积累越来越多的输出权重)。这由编码器的递归、或反馈部分引起。由于该结构,已经示出高信噪比(SNR)下turbo码的性能由输入权重为2的输出误差事件来支配。参见同前。可以用所谓有效自由距离渐近线来精确地预测turbo码误差下限。有效自由距离是输入权重为2的所有误差事件的最小输出权重。长度短的输入权重2误差事件一般会引起最小距离误差事件。对于图3的编码器200而言,反馈多项式为,1+D2+D3,而所有可能的输入权重2误差事件的形式为Dk(1+D7j),其中j=1,2,K,而k是范围在O,K,K-7j范围内的任意移位(假定K为交织器大小)。本领域的技术人员可以理解,这可以通过检查组成编码器200的网格而容易地验证。
应该注意到,图3实施例的交织器大小被标为K,而图2实施例的交织器大小被标为N。技术人员可以理解,使用了不同字母不会造成特别大的区别。
例如,假定误差型式Dk(1+D7)引起第一解码器的最小距离误差事件输出。Turbo交织器会把两个误差(Dk,Dk+7)映射到两个位置(Dn,Dm)。如果|m-n|=7或7的某个倍数,则很可能得到第二解码器的低距离误差事件输出。Turbo交织器的基本目的是防止发生这种映射。即,交织器应该最好把易于第一维中的低权重误差事件的比特集合映射为产生第二维内大量输出权重的比特。因此,设计交织器的期望方法是试图防止位于下标(k,k+7j)的比特对映射为位于下标(s,S+7t)的比特对,特别强调j和t的较小值。这种输入误差事件在下表1中列出。对于每个事件而言,用速率1/2、1/3和1/4的正向链路turbo码的适当的截短模式列出第一组成码的输出一致校验权重,如IS-95中所规定的。
表1输入权重2误差事件
如果给定交织器包含形式为Dk1(1+D7)→Dk2(1+D7)的输入权重2→2映射,则所产生的误差事件的组成输出权重对于速率1/2turbo码而言将为2+3+3=8。在前面的计算中,系统比特的权重(2)与来自两个组成编码器的相应一致校验权重(3和3)相加。同样,如果交织器包含形式为Dk1(1+D7)→Dk2(1+D14)的输入权重2→2映射,则所产生的误差事件的组成输出权重对于速率1/2turbo码而言将为2+3+6=11,或者对于速率-/3 turbo码而言为2+6+10=18。
此外,低组成输出权重的输入权重4误差事件可能映射为第二维中低输出权重的两个输入权重2误差事件。这种映射用4→{2,2}来表示。虽然输入权重4的组成误差事件没有封闭型解决方式,然而下表包含了组成编码器200的某些低输出权重误差事件,其中在使用从IS-95得到的空中接口的CDMA数字无线通信系统中,组成编码器200被用作正向链路turbo码的第一组成编码器。
表2输入权重4误差事件
表2(续)输入权重4误差事件
例如,如果交织器包含形式为Dk1(1+D3+D4+D5)→{Dk2(1+D7)Dk3(1+D7)}的输入权重4→{2,2}映射,则所产生的误差事件的复合输出权重对于速率1/2turbo码而言将为4+2+3+3=12。该复合误差事件不比由映射Dk1(1+D7)→Dk2(1+D14)引起的误差事件差很多,后者的复合输出权重为11。因此,主要的设计目标是优化交织器的参数,以便避免上述坏映射类型,或至少使其最小。理想中,具有最低复合输出权重的坏映射是对避免和/或最小化最重要的映射。在设计特定大小(如,1530)的交织器时,可以优化交织器参数,以便使两类映射(即,权重2→2和权重4→{2,2})最小。该方法产生该特定大小的最佳交织器。应该指出,在设计中,大小为2N的交织器可以被稳健地截短为大于2N-1的任意大小(被成为“友好截短”的交织器),对权重4→{2,2}映射的优化可能更难以实现。
为了从按照图3实施例的2D、LCS交织器中获得大小为2N的友好截短的交织器,进行一项搜索。下表3包含搜索的初始结果。对于每个交织器大小而言,所使用的行数和所使用的列数与x(0)、a和c系数一起被指定。为了实现的简洁和效率,为所有交织器使用了32行。
表32-D LCS交织器系数
表3(续)2-D LCS交织器系数
在替代实施例中,系数a可能被设为等于1,进行新的搜索,从而从2-D、LCS交织器中获得大小为2N的友好截短的交织器。正向和反向LCS递归方程分别简化为如下x(n+1)=(x(n)+c)mod M,以及x(n)=(x(n+1)-c)mod M。
下表4包含搜索的初始结果。为了实现的简洁和效率,为所有交织器使用了32行。本领域的技术人员可以从表4所示的结果中得知,在所有LCS递归中设a等于1不会引起多个所产生的交织器中质量的恶化。此外,从设a等于1的简化中实现的复杂度增益是实质上的。例如,不需要图2实施例所述的第二和第三LUT(用于存储值a和ab的LUT)。图2实施例中所述的k位乘法器也是不必要的。从下表4可见,只需要为交织器的每一行指定初始条件x(-1)和加性常数c。表中未包括较大交织器的系数,表中仅指定了初始搜索结果,这是因为较大交织器的系数在提交本申请时仍不可用。
表42-D LCS交织器系数
表4(续)2-D LCS交织器系数
按照一个实施例,输入比特的连续流被送入两个编码器,无变化地进入一个,通过交织器进入另一个。在两个编码器的输出处,一致校验码元根据数据速率较高的某些编码速率的某些因素下被一起多路复用成另一个输出连续流。如果两个编码器的编码速率均为_,是指对于到来的每个码元而言,输出两个码元,输出速率会是输入速率的三倍,这是因为每个编码器会发出一个额外的一致校验码元加上信息系统输出。由于从每个编码器输出的信息码元相同,因此丢弃一个码元。
图4是turbo编码器310的顶层框图,它带有按照本发明原理的两个组成卷积编码器320和340以及一个交织器360。(本领域的技术人员可以理解,为了实现本发明,编码器不需要相同。)每个组成编码器320和340包括第一异或(XOR)门322。异或门322为每个编码器320和340提供输入终端。异或门322是每个编码器内作为单个一比特加法器实现的几个相同2∶1异或门中的第一个。第一异或322的输出被输入第一个一位移位寄存器324,并被分别转送入第二和第三异或门326和328。第一个一位寄存器324是每个编码器内实现的几个一位寄存器中之一。
第二和第三异或门326和328的第二输入由第一移位寄存器324的输出提供。第一移位寄存器324的输出还被提供给第二移位寄存器330。第三异或门328和第二移位寄存器330为第四异或门334提供第一和第二输入。第二移位寄存器330还输出到第三移位寄存器332和第五异或门336。第二异或门326和第三移位寄存器332为第六异或门338提供第一和第二输入。第四异或门334和第三移位寄存器332为第七异或门342提供第一和第二输入。
本领域的技术人员可以理解,在说明中,编码器320和340为K=4速率的1/3卷积编码器,其前馈发生器多项式为15octal和17octal。反馈发生器多项式为13octal。在说明中,turbo解码器的编码多项式按1998年末首先发布的编码多项式硬连线。
在操作中,信息比特的输入流xk由第一编码器320的第一异或门322接收,并由交织器360接收。交织器360以下面详述的方式交换输入流,并为第二编码器340的第一异或门322提供一个输入。信息比特的输入流xk通过编码器被直接馈送,并且作为输出和一致校验比特yk0,0和yk0.1一起被提供给第一编码器320,与yk1,0和yk1,1一起被提供给第二编码器340。(本领域的技术人员可以理解,编码器320是“系统”编码器,由于输入流xk不经改变而通过其中。)这五个输出信号被多路复用成一个连续流,并被继续传递至发射机内的下一个元件(未示出)。
图5是详细示出图4交织器的简化框图。由于图4的编码器320和340的输入关于彼此而被交换,因此检错要求交换编码器(如,320)的输出以匹配其它解码器(340)的输入流。同样,必须去交织第二解码器(340)的输出以匹配第一编码器(320)的输入流。
困扰仿真交织器的实际实现的问题与产生适当交织器地址的要求有关,因为否则数据地址在交织过程期间会变得混乱。这些功能由交织器360实现,它在交织过程期间提取适当的地址。
按照本发明的原理,交织器360把线性地址序列映射为经交换的地址序列。经交换的地址序列的产生方式与产生比特倒置块交织器的方式相似,除了块的给定行中的地址用线性同余序列(LCS)进一步被交换之外。为了产生经交织的地址序列,从最顶行开始用线性地址序列填充R×C矩阵,从左至右填充。行数为R=32=25,矩阵中的列数为C=2C。在这个特定交织器中,行数固定为32,因此R等于25。“C”等于列数。例如,如果交织器单元的数目为128,则会有四列和32行,C会等于四。然后,每行内的地址按照行特定的LCS被搅乱。于是,矩阵的行按照行下标所用的比特倒置规则被搅乱。最后,从最左列开始从矩阵中读取地址,从上至下读取,并且进行到右边。每行所用的LCS的形式为xi(n+1)=xi(n)+c(i)[1]其中i是行下标,c(i)是奇数常数模C。对于cdma2000 turbo交织器360而言,每行的初始状态由xi(0)=c(i)给出,因此可以计算上述方程而无须存储前面的值。这样,xi(n)=c(i)·(n+1) [2]因此,假定线性序列0,...,K-1中的任意地址(A),则可以如下计算相应的经交织的地址A=bitrev(row)·2c+{(col+1)·c(i)}modC,[3]其中A是经交织的地址,“row”是输入线性地址的5个最低有效位(LSB),“col”是输入线性地址的c个最高有效位(MSB),C是列数,c(i)是查找表的输出,其中“i”是当前行号。c(i)系数用查找表(LUT)来实现。交织器360为每个所支持的C值包括一个单独的查找表。为了为大小属于2k-1<K<=2k的交织器产生经交织的地址序列,相应于C=2k-5而选择c(i)LUT,并通过方程(3)产生地址。任何大于K-1的地址都被丢弃。由于交织器按列而非按行被“读出”,因此决不会有两个或多个连续的坏地址。在线性数组中,值会按列被读出,意指在开始行2之前会读出行1的所有元素。本交织器按列被读取。这通过把行符号放置在交织器地址的较高部分中而在交织器方程中被指定。cdma2000标准中可以找到大小为512,1024,...,32768的交织器的查找表。
对于非2次幂的交织器长度必须截短LCS交织器。为了随机访问交织器,访问点前的截短数量必须已知,并且能被加载到交织器函数内。为了实现高解码速率,期望产生每时钟周期一个有效的交织器地址。如上所述,(方程3)的交织器算法不能产生两个连续的无效地址。本发明利用了这个属性。如图5中所述,交织器360用双计算单元362和364来实现,其中每一个都用来实现方程3。各计算单元362和364分别包括比特倒置单元366、370以及系数查找表368和372。数据计算通路按照上述CDMA2000表中来实现。即,各计算单元用于实现上面方程3的算法。
第一计算单元362计算了当前被交织的地址,而第二计算单元364计算了下一个交织器地址。因此,交织器360总是每时钟周期产生一个有效的经交织的地址。
如果,在第一计算单元362的输出处值n+m<N,其中n是列地址、m是行地址,N是交织器长度,则由阈值检测器374检测坏地址并且输出“坏地址”信号。由阈值检测器374输出的坏地址信号控制交织器选择多路复用器376。多路复用器376根据坏地址信号把第一计算单元62的输出或者第二计算单元362的输出选作为交织器360的输出。
每个所产生的无效地址还使地址偏置计数器384递增。地址偏置计数器384与外部控制器382和地址偏置寄存器386一起被包括在地址偏置电路380内,它可以用随机存取存储器(RAM)来实现。地址偏置电路380操纵输入线性地址来通过第一加法器378补偿被截短的地址。随机访问的支持通过使用可加载的地址偏置计数器384来实现。在随机访问交织器数组中的线性地址之前把地址偏置寄存器386设为截断数量交织器360从地址数组中的任何单元处开始。
实现turbo解码器的常用方法是通过为组成解码器使用对数MAP的解码器。对数MAP解码器要求通过编码网格进行正向和反向迭代,它一般又要求turbo交织器既工作在反向又工作在正向。正向被定义为从线性地址0到最大要求的地址操作交织器。相反地,反向被定义为从最高线性地址到线性地址0运行交织器。可能以仅要求正向交织器操作的方式来实现基于对数MAP的turbo解码器,然而考虑到就附加临时存储来说这将是极其代价昂贵的。为了减少对数MAP解码器的状态度量存储,对数MAP解码器通常用滑动窗来实现。交织器便于滑动窗的使用,它不仅向后运行,而且能随机访问交织器数组。为此,本发明的交织器60被设计成既能正向运行又能反向运行。
为了在反向运行而使交织器算法不变,但双计算单元的输入被改变。与分别工作在input_address+address_offset(输入地址+地址偏置)和input_address+address_offset+1(输入地址+地址偏置+1)上的计算单元不同,双计算单元工作分别工作在 input_address+address_offset和input_address+address_offset-1上。这可由图6解码器400提供的正向反向信号的命令下,用第二加法器388和第二多路复用器90来实现,这在下面详细描述。该信号来自解码器的控制逻辑。即,解码器会通过它当前执行的操作性质确定它应该在正向还是在反向操作交织器。
此外,为了保持正确的截短计数(或地址偏置),由控制器382驱使地址偏置计数器34充当向下计数器,而非正向中的向上计数器。
简言之,本发明原理提供了由CDMA2000标准使用的LCS turbo交织器算法的唯一实现。Turbo交织器算法利用了CDMA2000交织器算法的巧妙特性来产生强有力的设计。
图6是结合了本发明原理的turbo解码器的说明性实现框图。Turbo解码器400是常规设计,除了按照本发明原理实现的交织器和去交织器之外。Turbo解码器400接收由编码器输出的五个信号(一般在信道上)并且实现带反馈的迭代过程,第一软输入软输出(SISO)解码器410借此接收数据流以及非交织的一致校验比特,并输出到交织器420。
在图6中,x0...xK-1是信息码元向量,y00...yK-10是来自第一编码器320的一致校验码元向量,而y01...yK-11是来自图4的turbo编码器310的第二编码器340的一致校验码元向量。此外,z0...zK-1是来自每个SISO解码器的先验信息向量,L0...LK-1是对数似然比向量,最后,u0...uK-1是已解码的数据比特向量。
接收到的经交织信号以及本地交织器420的输出为第二SISO解码器430的输入,后者具有通过硬判决单元450输出到第一去交织器440的输出及至第二去交织器460的输出。本地去交织器420、去交织器440和去交织器460的实现与turbo编码器310内所用的交织器360的实现相同。
Turbo解码器400每次解码一个编码器(320或340)的输出。SISO解码器410和430传递彼此间加权的误差以提供给下一个解码器先验指示,表示解码硬判决比特应该是什么。本质上,该过程是迭代的,因为每个步骤都为下一个解码器提供增涨的更多权重,从而帮助所执行的解码过程。因此,每个解码器410和430的工作在下一个解码步骤中被影响。
硬判决单元450用来把软输出码元转换成硬输出比特,这可由本领域的技术人员所理解并能用本领域常用的比较器来实现。硬判决单元450的输出被去交织,以提供解码器400的已解码数据比特向量输出。
这样,描述了一种新颖并改进了的turbo码交织器。本领域的技术人员可以理解,虽然这里公开的实施例用蜂窝电话系统的上下文来描述,然而本发明的特征也提供给任何形式的通信系统,包括,如卫星通信系统。本领域的技术人员还可以理解,这里描述的实施例可用于或编码数据或编码话音通信。还可以理解,上述说明中可能涉及的数据、指令、命令、信息、信号、比特、码元和码片最好由电压、电路、电磁波、磁场或其粒子、光场或其粒子、或它们的任意组合来表示。
本领域的技术人员可以理解,结合这里所描述的实施例来描述的各种说明性的逻辑块、模块和算法步骤的实现或执行可以用数字信号处理器(DSP)、专用集成电路(ASIC)、离散门或晶体管逻辑、诸如寄存器和FIFO之类的离散硬件组件、执行一组固件指令的处理器、或者任意常规的可编程软件模块和处理器。处理器最好是微处理器,然而或者,处理器可以是任何常规的处理器、控制器、微控制器或状态机。软件模块可以驻留于RAM存储器、快闪(flash)存储器、寄存器、硬盘、或本领域中已知的任何其它形式的存储媒体中。
上述优选实施例的描述使本领域的技术人员能制造或使用本发明。这些实施例的各种修改对于本领域的技术人员来说是显而易见的,这里定义的一般原理可以被应用于其它实施例中而不使用创造能力。因此,本发明并不限于这里示出的实施例,而要符合与这里揭示的原理和新颖特征一致的最宽泛的范围。
权利要求
1.一种交织器,其特征在于包括第一装置,用于接收输入地址并且对其响应而在第一时钟周期期间计算第一顺序交织的地址;第二装置,用于接收输入地址并且对其响应而在所述第一时钟周期期间计算第二顺序交织的地址;第三装置,用于确定所述第一还是所述第二顺序交织的地址为无效并且对其响应而产生信号;以及响应所述信号的第四装置,用于把所述第一或所述第二顺序交织的地址选择为所述第一时钟周期的输出交织地址。
2.如权利要求1所述的发明,其特征在于,所述第一装置包括用于实现下列表达式的装置A=bitrev(row)·2c+{(col+1)·c(i)}modC,其中A是经交织的地址,“行”是输入线性地址的5个LSB,“列”是c个MSB,c是列数,而c(i)是查找表的输出,其中“i”是当前行数。
3.如权利要求2所述的发明,其特征在于,所述第二装置包括用于实现下列表达式的装置A=bitrev(row)·2c+{(col+1·c(i)}modC,其中A是经交织的地址,“行”是5个LSB,“列”是输入线性地址的c个MSB,c是列数,而c(i)是查找表的输出,其中“i”是当前行数。
4.如权利要求1所述的发明,其特征在于,所述第三装置是阈值检测器。
5.如权利要求4所述的发明,其特征在于,所述阈值检测器包括比较器。
6.如权利要求1所述的发明,其特征在于,所述第四装置是多路复用器。
7.如权利要求6所述的发明,其特征在于,所述第一装置的输出为所述多路复用器提供第一输入,所述第二装置的输出为所述多路复用器提供第二输入,而所述第三装置的输出为所述多路复用器提供控制输入。
8.如权利要求1所述的发明,其特征在于还包括第五装置,用于响应方向控制信号而控制所述交织器关于所述输入地址在正向或反向上移动。
9.如权利要求1所述的发明,其特征在于还包括用于提供关于所述输入地址的地址偏置的装置。
10.一种交织器,其特征在于包括第一装置,用于接收输入地址并且对其响应而在第一时钟周期期间计算第一顺序交织的地址;第二装置,用于接收输入地址并且对其响应而在所述第一时钟周期期间计算第二顺序交织的地址;第三装置,用于确定所述第一还是所述第二顺序交织的地址为无效并且对其响应而产生信号;响应所述信号的第四装置,用于把所述第一或所述第二顺序交织的地址选择为所述第一时钟周期的输出交织地址;第五装置,用于响应方向控制信号而控制所述交织器关于所述输入地址在正向或反向上移动;以及第六装置,用于提供关于所述输入地址的地址偏置。
11.如权利要求10所述的发明,其特征在于,所述第一装置包括用于实现下列表达式的装置A=bitrev(row)·2c+{(col+1)·c(i)}modC,其中A是经交织的地址,“行”是5个LSB,“列”是输入线性地址的c个MSB,c是列数,而c(i)是查找表的输出,其中“i”是当前行数。
12.如权利要求11所述的发明,其特征在于,所述第二装置包括用于实现下列表达式的装置A=bitrev(row)·2c+{(col+1)·c(i)}modC其中A是经交织的地址,“行”是5个LSB,“列”是输入线性地址的c个MSB,c是列数,而c(i)是查找表的输出,其中“i”是当前行数。
13.如权利要求10所述的发明,其特征在于,所述第三装置是阈值检测器。
14.如权利要求13所述的发明,其特征在于,所述阈值检测器包括比较器。
15.如权利要求10所述的发明,其特征在于,所述第四装置是多路复用器。
16.如权利要求15所述的发明,其特征在于,所述第一装置的输出为所述多路复用器提供第一输入,所述第二装置的输出为所述多路复用器提供第二输入,而所述第三装置的输出为所述多路复用器提供控制输入。
17.一种用于交织或去交织的方法,其特征在于包括下列步骤接收输入地址并且对其响应而在第一时钟周期期间计算第一顺序交织的地址;接收输入地址并且对其响应而在所述第一时钟周期期间计算第二顺序交织的地址;确定所述第一还是所述第二顺序交织的地址为无效并且对其响应而产生信号;以及响应所述信号而把所述第一或所述第二顺序交织的地址选择为所述第一时钟周期的输出交织地址。
全文摘要
描述了实现由CDMA2000标准使用的LCS turbo交织器算法的交织器。交织器包括第一计算单元,用于接收输入地址并且对其响应而在第一时钟周期期间计算第一顺序交织的地址。包括第二计算单元,用于计算输入地址并且对其响应而在第一时钟周期期间计算第二顺序交织的地址。交织器还包括比较器,用于确定第一还是第二顺序交织的地址无效并对其响应而产生信号。比较器的输出把控制信号提供给开关,后者选择第一或第二顺序交织的地址作为第一时钟周期的输出交织地址。交织器还被设计成在正向或反向移动。
文档编号H03M13/29GK1502168SQ02805479
公开日2004年6月2日 申请日期2002年2月22日 优先权日2001年2月23日
发明者S·J·霍尔特, S J 霍尔特 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1