并行滑动窗最大后验概率算法及其高速Turbo码译码器的制作方法

文档序号:7631689阅读:419来源:国知局
专利名称:并行滑动窗最大后验概率算法及其高速Turbo码译码器的制作方法
技术领域
本发明涉及通信系统,具体涉及宽带移动通信中的高速Turbo码译码算法及基于该算法的硬件实现方法和装置。
为了实现ITU-2000规范提出的宽带移动通信目标,第三代移动通信系统标准化组织(3rd Generation Partnership Project(3GPP))提出了宽带码分多址(WCDMA)无线传输技术(RTT)方案。与其他3G系统标准提案类似,该方案主要采用两种前向信道纠错编码方式卷积码和Turbo码,其中,较高数据速率(比如≥32kbps)及较低误码率(Pe<10-6)的业务数据均采用Turbo码。
Turbo码是由法国学者C.Berrou等人在93年国际通信会议(InternationalCommunication Conference 1993——ICC’93)上首次提出的新型信道编译码技术,它那独特的并行级联(Parallel Concatenated Code——PCC)型的编码器结构和类似汽车发动机引擎工作原理的迭代译码机制给人以深刻印象,并因此得名为“Turbo码”,其显著特点是在加性高斯白噪声信道(Additive Gaussian White Noise——AGWN)中,迭代译码后的数据误比特性能(BER~Eb/No)十分接近香农极限(大约只有0.35-0.7dB的差距)。他们为这一发明申请了国际专利。
C.Berrou等人提出的并行级联卷积码(PCCC),即Turbo码是这样构造的(1)信息比特一方面直接送给一个递归系统卷积编码器(RecursiveSystem Convolutional Code—RSCC)进行卷积编码,产生相应的校验比特,一般编码率为1/2,编码约束度不是太大(比如k=3~5);(2)同样的信息比特经过一个随机交织器置乱后也送一个RSCC编码器进行卷积编码,产生新的校验比特,RSCC编码器可以与(1)中相同,也可以不同;(3)信息序列以一个交织器交织深度为单位,每一信息比特穿插两个RSCC产生的校验位交替输出,形成Turbo码码流;(4)根据需要,可以增加交织器和RSCC编码器,形成更低编码效率的Turbo码数据,也可以有规律地删除部分校验比特,形成较高编码率的Turbo码码流。
C.Berrou等人提出的Turbo译码器结构及其译码算法具有以下特点(1)先将接收机解调输出转换成能反映接收编码序列可信度的比特对数似然比,作为译码器输入;(2)接收的编码序列按照信息比特有无交织分别译码,所采用的软输入软输出(Soft-in-soft-out—SISO)译码算法是基于后验误符号(比特)概率最小的最大似然软判决算法,由此产生关于信息比特的软判输出;(3)输出软信息减去输入的软信息形成反映信息比特可信度变化的附加信息作为另一级(信息比特经交织或不交织的)译码器输入比特信息的先验概率,与原有软信息相迭加,如此反复迭代译码。
传统的SISO算法通常称之为BJCR(以发明人字首命名)算法或MAP(Max A Posterior)算法,为了减少复杂性,工程上实际普遍采用log-MAP算法,它是MAP算法的改进型。log-MAP算法可以用以下递归公式表示λk=Em=0M-1αkm+δk0,m+βk+1f(0,m)-Em=0M-1αkm+δk1,m+βk+1f(j,m)---(1)]]>αkm=Ej=01αk-1b(j,m)+δk-1j,b(j,m)---(2)]]>βkm=Ej=01βk+1f(j,m)+δkj,m---(3)]]>δk1,m=K-(zk+Axk)i-Aykc(i,m)---(4)]]>k为信息样值点下标,m为当前状态,M为编码状态数。λk为第k个输入比特的输出对数似然比,αki,m、βkm为k时刻m状态的前向和反向状态度量,δki,m为k时刻m状态下输入i时的分支度量。f(j,m)为当前状态m下输入j∈{0,1}后到达的下一状态,b(j,m)为输入j∈{0,1}后可到达当前状态m的前一状态,K为归一化常数A=(2/σ2)logεe,σ2AWGN信道噪声方差,zk为先验概率(AprP).xk、yk分别为接收到的第k个信息比特样值和校验比特样值,i、c′为信息比特和相应的在m状态下的编码比特。其中算子E定义为aEb=-1n(e-a+e-b)。
由于交织/解交织、后向状态度量计算等处理的存在,基于log-MAP算法的Turbo码译码器需要收到完整的编码分组才可以进行一次迭代计算,交织延时和处理延时随交织深度和RSC码状态数增加而增加,从而影响业务数据传输实时性和译码器可支持的最大业务数据速率。就第三代移动通信系统而言,要达到ITU-2000提出的数据速率高达384kbps~2Mbps,如果采用上述传统的编译码方式,很难用单片现场可编程门阵列或复合可编程逻辑器件(FPGA/CPLD或DSP)芯片实现3GPP提出的各种解决方案中(比如WCDMA、CDMA2000和TD-SCDMA等)所规定Turbo码实时译码处理。
本发明的目的就是针对上述现有技术的不足,提出一种能大大提高软输入软输出(SISO)译码处理速度的并行滑动窗log-MAP算法,并给出基于该算法的单片FPGA/CPLD硬件实现解决方案。
本发明的特点是软输入软输出(SISO)译码运算和多滑动窗双重并行,既可以大大减少单位比特平均译码处理时间,即大幅度提高Turbo译码器的实时处理能力,有可以适当地控制内存需求量在一个期望的数量级内,使之不随编码分组长度增加而不断膨胀。所谓双重并行,就是一方面以编码器最大状态数为单位并行完成分支度量计算、前/后向状态度量计算、比特对数似然比计算等译码处理并用流水线(pipe-line)方式实现;另一方面,采用两个或两个以上滑动窗并行展开并行log-MAP运算,这样,可以通过调节滑动窗数量,求得译码处理速度和内存需求量的某种平衡,便于采用某些单片可编程逻辑器件(比如FPGA或CPLD)实现高速Turbo译码。
本发明所提出的并行滑动窗log-MAP算法及基于该算法的高速Turbo码译码器硬件实现技术方案如下以下描述并行滑动窗Log-MAP算法(PSW-Log-MAP)将Turbo码应用于移动通信系统需要解决两个主要问题降低译码复杂性和减少译码延时。近些年来,相继出现了一些低复杂度、次优化后验概率算法,如SOVA、log-MAP,Max-log-MAP等,但这些算法都必须在接收完一帧数据后才开始后向递归度量计算,因而对于长数据帧需要较多的状态存储和较长的译码延时。S.Benedetto等人提出了一种具有固定译码延时的连续译码算法,称为滑窗log-MAP算法(SW-log-MAP)[2],滑窗log-MAP算法将一帧译码数据分为若干长度为l的子帧,以子帧为单位译码,译码算法仍采用log-MAP算法,不同之处在于每个子帧尾部多处理p个译码数据用以对后向状态度量进行初始化。采用这种滑动窗结构的译码算法所需的状态存储空间和译码延时可减少到传统MAP算法的l/N。然而计算和仿真表明,直接采用滑动窗log-MAP算法的Turbo译码器,要达到3GPP规定的384k~2Mbps的译码速率还有相当大的困难。为此,本发明对滑动窗log-MAP算法进行了改进,使其可以同时处理两个以上的长度为l的子帧,我们把这种算法称为并行滑动窗log-MAP算法(PSW-log-MAP)。后面的分析表明,在不牺牲译码性能的情况下,只要适当选择滑动窗参数l和p,并行滑动窗log-MAP算法可以以较小的实现规模和存储容量代价换取译码速度的成倍提高,特别适合于单片FPGA/CPLD实现高速Turbo译码器。
为简单起见,这里以二级并行为例,说明并行滑动窗log-MAP算法的原理,如图1所示。把长度为N的数据帧分为(T+1)个子帧,其中 ( 表示不大于a的整数),图中阴影部分表示用于初始化各个子帧后向状态度量的译码数据。算法工作流程如下(1)设置t=1。(2)后向状态度量β计算a)如果2t≤T,设置滑动窗长度w=l+p。同时计算SW(2t-1)和SW(2t)的后向状态度量,其中对SW(2t-1)初始化ββ(2t-1)l+pm=0m,利用等式(3),计算βkκ从(2t-1)l+p-1到2(t-1)l,同时存储βkk从(2t-1)l-1到2(t-1)l。
对SW(2t)初始化ββ2tl+pm=0m,利用等式(3),计算βkk从2tl+p-1到(2t-1)l,同时存储βkk从2tl到(2t-1)l。
b)如果2t>T。
若T为奇数,设置滑动窗长度为w=l+p。同时计算SW(T+1)和SW(T)的后向状态度量,其中对SW(T)操作t≤T情况下的SW(2t-1);对SW(T+1)初始化ββNm=0m(假设每帧末尾均附有迫零比特),利用等式(3),计算并存储βkk从N到(2t-1)l。
若T为偶数,只计算SW(T+1)的后向状态度量初始化ββNm=0m(假设每帧均末尾均附有迫零比特),利用等式(3),计算并存储βkk从N到2(t-1)l。(3)前向状态度量α和对数似然比LLR计算a)如果2t≤T,设置滑动窗长度w=l+p。同时计算SW(2t-1)和SW(2t)的前向状态度量和LLR,其中对8W(2t-1)初始化α若t=1 若t≠0α2(t-1)lm由前一个滑动窗计算得到利用等式(3),计算αkk从2(t-1)l+1 to k=(2t-1)l,同时用等式(4)计算λkk从k=2(t-1)l to k=(2t-1)l-1.
对SW(2t)初始化αα(2t-1)l-pm=0m,利用等式(3),计算αkk从(2t-1)l-p+1到2tl,同时用等式(4)计算λkk从k=(2t-1)l到k=2tl-1.
令t=t+1,返回步骤2)开始下一滑动窗的计算。
b)如果2t>T,若T为奇数。同时计算SW(T+1)和SW(T)的前向状态度量和LLR,操作同2t≤T时相似,只不过对SW(T+1),计算αkk从(2t-1)l-p+1到N,同时计算λkk从(2t-1)l到N.算法结束。
若T为偶数,只计算SW(T+1)的前向状态度量αkk从2(t-1)l+1 to N,同时计算λkk从2(t-1)l to N。算法结束。
本发明的特点是软输入软输出(SISO)译码运算和多滑动窗双重并行,既可以大大减少单位比特平均译码处理时间,即大幅度提高Turbo译码器的实时处理能力,有可以适当地控制内存需求量在一个期望的数量级内,使之不随编码分组长度增加而不断膨胀。所谓双重并行,就是一方面以编码器最大状态数为单位并行完成分支度量计算、前/后向状态度量计算、比特对数似然比计算等译码处理并用流水线(pipe-line)方式实现;另一方面,采用两个或两个以上滑动窗并行展开并行log-MAP运算,这样,可以通过调节滑动窗数量,求得译码处理速度和内存需求量的某种平衡,便于采用某些单片可编程逻辑器件(比如FPGA或CPLD)实现高速Turbo译码。
本发明有益效果1.大大减少单位处理时间,即大幅度提Turbo译码器的实时处理能力。
2.可适当地控制内存需求量在一个期望的数量级内,使之不随编码分组长度增加而不断膨胀。
3.便于采用某些单片可编程逻辑器件(比如FPGA或CPLD)实现高速Turbo译码。


图1为PSW-Log-MAP算法示意2为单片FPGA实现的Turbo译码器结构3为并行log-MAP译码器结构示意4为并行log-MAP算法计算流程图5为输出对数似然比计算的流水线结构以下说明高速Turbo译码器的单片FPGA实现实施例这里给出在一片Xilinx公司的Virtex 1000E FPGA上,采用二并行滑动窗log-MAP算法实现的WCDMA高速Turbo码译码器的开发实例。在二并行滑动窗结构下,单位比特平均处理时间只需1个时钟周期,若采用32MHz系统时钟驱动,按3次迭代计算,平均最高译码处理速率可达到5.3Mbps。如果提高PSW-Log-MAP算法的并行度(如采用多滑窗)可望把单位比特处理占用时间降到1个时钟周期以下,可进一步提高译码速度。
采用二并行滑动窗Log-MAP算法的高速Turbo译码器的单片FPGA实现结构如图2所示。它主要由算法实现单元和片内RAM单元组成,其中算法实现单元由译码输入/输出数据缓存读写控制、路径度量累加并行计算、状态度量并行计算、比特LLR并行计算等模块组成。片内RAM单元由L、D、P、Q数据缓存DPRAM阵列,交织表存储器(INLV-DPRAM),后向状态度量存储器(SM-SPRAM)组成。图中阴影部分代表属于第二个并行滑动窗的各个模块。由于两个滑动窗是并行的且处理方法完全相同,因此图中只画出了其中一个滑动窗模块之间的信号流动方式及格式。在片内RAM资源使用上,两个滑动窗除了有各自独立的后向状态度量存储器外,共享相同的数据缓存DPRAM阵列和交织表存储器。下面将结合前述算法对这种FPGA实现方法的主要结构特点作详细介绍。(1)并行log-MAP译码器结构一种8状态并行的log-MAP译码器结构如图3所示。首先是后向状态度量β的计算,根据输入的分支度量D和前面计算得到的后向状态度量,并行计算8个当前的后向状态度量值,并将它们暂存于一个64比特寄存器用于下一比特信息后向状态度量的计算,同时还将它们存贮到大小为Nu×64的片内状态度量存贮器中便于以后的LLR计算。如此循环直到完成整个滑动窗Nu比特的计算。然后译码器开始前向状态度量和比特对数似然比的计算。
由于采用滑动窗算法,前向状态度量的初始状态未知,因此需要一定长度Nt的训练数据序列以确定状态度量的初始值。前向状态度量α也是8状态并行计算的,其计算过程与后向状态度量的计算相似。只不过在网格图中的计算方向为由前向后,且不存储前向状态度量结果。每当路径度量累加模块计算出相应于信息比特“0”和“1”的8对汇合于8个状态节点的前向路径度量累加值deltaI0和deltaI1(I=0,...7),译码器从片内状态度量存储器中读取相应时刻的8个后向状态度量值β,然后调用比特LLR模块并行计算该时刻的信息比特对数似然值LLR。(2)计算流程与流水线(Pipeline)结构图4是输出比特对数似然比计算流程,计算流程的设计是利用卷积码的对称网格图结构,将复杂的比特对数似然比计算分解成四步完成,每步的计算复杂度大致相同。图4的分解方法使得译码器采用硬件实现时,每一步对器件的延时具有大致相同的要求,这些分解的步骤如同流水线上的一系列节拍,便于硬件流水线方案的设计。
图5是硬件流水线结构的具体实现方案。它是一个五级流水线结构方案。这种流水线结构方案是由Log-MAP算法的固有特点所决定的,因为Log-MAP算法是一种迭代算法,所以前向状态度量和后向状态度量的迭代运算速度确定了整个Log-MAP算法的最终译码速度。根据Log-MAP算法的特点,我们将输出似然值的复杂计算按状态度量计算的复杂度进行分解,最终将输出似然值的计算分成四步来计算,因此决定了硬件流水线的结构。采用五级流水线结构方案能使编码器获得最快的速度,Log-MAP算法的运算速度仅取决于状态度量的计算速度,比如,在每一特定的硬件中,如果每一信息位的前向状态度量和后向状态度量的计算均能在20ns内完成,采用我们的流水线设计力案,每一信息位采用Log-MAP算法译码仅需要40ns(3)双口RAM阵列结构充分利用Virtex-E系列FPGA提供的丰富的块RAM(BLOCKMEMORY)资源,将Turbo译码器所需的所有存储空间均做在了片内,同时采用了独特的RAM结构,解决了高速Turbo译码器在数据读写上的瓶颈问题。具体包括a.双口RAM阵列结构数据缓存区由一个双口RAM(DPRAM)阵列组成,它包含四种独立的DPRAM用于存储四种不同的度量值L-DPRAM,存储每次MAP输出的外部信息度量(Lin);D-DPRAM,存储信息位输入度量(Din);P-DPRAM,存储第一个译码器的校验位输入度量(Pin);Q-DPRAM,存储第二个译码器的校验位输入度量(Qin)。每个双口RAM均拥有两套独立的数据和地址总线,分别分配给两个并行滑动窗使用,这种结构保证了两个并行滑动窗在一个时钟周期内对四种输入/输出度量值的同时读取,突破了高速译码器在数据读写上的瓶颈。
b.双L-DPRAM结构采用两个L-DPRAM动态存储每次MAP输出的似然值(LLR),某一时刻,两个并行滑动窗log-MAP计算进程从第一个L-DPRAM中读取前次MAP运算输出的LLR,同时将本次MAP运算已算出的LLR存入第二个L-DPRAM,而下一次MAP运算时两个并行滑动窗对第二个L-DPRAM进行读操作,对第一个L-DPRAM进行写操作,这样一直交替下去。采用这种结构,后向状态度量和LLR计算可以在一个时钟周期内完成。
(4)算法的并行计算除了译码器在结构上两个滑动窗并行处理外,在执行log-MAP算法运算时,也大量采用了并行结构,主要有a.分支度量并行计算分析3GPP给出的WCDMA Turbo编码器的网格图不难看出,尽管相邻时刻8个状态间有多达16个转移分支,但只有4种不同的分支度量值,因此对于接收到的每一组编码数据,可在一个时钟周期内同时计算出这4种分支度量值,并输出给后面的路径度量累加模块进行状态度量更新。
b.路径度量累加并行计算路径度量累加和状态度量模块中采用了8×8即64位的总线结构,在暂存寄存器中取得前一时刻的8个8-bit状态度量值和4个7-bit分支度量值后,采用一级选择器和一级加法器可实现16个路径度量值的累加。对数域状态度量更新同样也采用了并行结构,对8个状态的8对分支同时求差值、最小值和指数求和操作。
c.对数似然比(LLR)并行计算从等式(1)可以看到,LLR的计算包含了大量的算子E的连续操作(E定义为aEb=-ln(e-a+e-b)),直接对算子E的硬件实现非常复杂,这里采用了一种对E的近似计算方法aEb=-ln(e-a+e-b)=min(a,b)-ln(1+e-|a-b|)其中第二项的对数操作可用简单的查表方法实现。当E算子操作数增加时,依次两两计算依然需要较多的时钟周期,如要算出一个LLR至少需要8次迭代。鉴于此,我们提高了E算子计算的并行度,即对8个前向和反向状态度量的累加和成对进行E操作,即aEbEcEdEeEfEgEh=(aEb)E(cEd)E(eEf)E(gEh)这样,只需3次迭代即可算出一个LLR,进一步采用流水线(Pipeline)结构可保证LLR的单时钟周期连续输出。
权利要求
1.并行滑动窗最大后验概率算法,其特征在于按以下步骤流程进行(1)设置t=1;(2)后向状态度量β计算a)如果2t≤T,设置滑动窗长度w=l+p,同时计算SW(2t-1)和SW(2t)的后向状态度量,b)如果2t>T,若T为奇数,设置滑动窗长度为w=l+p,同时计算SW(T+1)和SW(T)的后向状态度量;若T为偶数,只计算SW(T+1)的后向状态度量;(3)前向状态度量α和对数似然比LLR计算a)如果2t≤T,设置滑动窗长度w=l+p,同时计算SW(2t-1)和SW(2t)的前向状态度量和LLR,b)如果2t>T,若T为奇数,同时计算SW(T+1)和SW(T)的前向状态度量和LLR,若T为偶数,只计算SW(T+1)的前向状态度量αk;k从2(t-1)l+1to N,同时计算λkk从2(t-1)l to N。
2.并行滑动窗最大后验概率算法的高速Turbo码译码器其特征在于由算法实现单元和片内RAM单元组成,其中算法实现单元由译码输入/输出数据缓存读写控制、路径度量累加并行计算、状态度量并行计算、比特LLR并行计算等模块组成,片内RAM单元由L、D、P、Q数据缓存DPRAM阵列,交织表存储器(INLV-DPRAM),后向状态度量存储器(SM-SPRAM)组成。
3.根据权利要求2所述的并行滑动窗最大后验概率算法的高速Turbo码译码器其特征在于1)所述L、D、P、Q数据缓存DPRAM阵列,采用双口RAM阵列结构,它包含四种独立的DPRAM用于存储四种不同的度量值L-DPRAM,存储每次MAP输出的外部信息度量(Lin);D-DPRAM,存储信息位输入度量(Din);P-DPRAM,存储第一个译码器的校验位输入度量(Pin);Q-DPRAM,存储第二个译码器的校验位输入度量(Qin),每个双口RAM均拥有两套独立的数据和地址总线,分别分配给两个并行滑动窗使用;2)所述L、D、P、Q数据缓存DPRAM阵列,采用双L-DPRAM结构,即采用两个L-DPRAM动态存储每次MAP输出的似然值(LLR),某一时刻,两个并行滑动窗log-MAP计算进程从第一个L-DPRAM中读取前次MAP运算输出的LLR,同时将本次MAP运算已算出的LLR存入第二个L-DPRAM,而下一次MAP运算时两个并行滑动窗对第二个L-DPRAM进行读操作,对第一个L-DPRAM进行写操作,这样一直交替下去。
全文摘要
本发明将软输入软输出(SISO)译码运算和多滑动窗双重并行,既可以大大减少单位比特平均译码处理时间,即大幅度提高Turbo译码器的实时处理能力,又可以适当地控制内存需求量在一个期望的数量级内,使之不随编码分组长度增加而不断膨胀。所谓双重并行,就是一方面以编码器最大状态数为单位并行完成分支度量计算、前/后向状态度量计算、比特对数似然比计算等译码处理并用流水线(pipe-line)方式实现;另一方面,采用两个或两个以上滑动窗并行展开并行log-MAP运算,这样,可以通过调节滑动窗数量,求得译码处理速度和内存需求量的某种平衡,便于采用某些单片可编程逻辑器件(比如FPGA或CPLD)实现高速Turbo译码。
文档编号H04L1/00GK1328386SQ0112019
公开日2001年12月26日 申请日期2001年7月11日 优先权日2001年7月11日
发明者徐友云, 李烜, 宋文涛, 罗汉文 申请人:信息产业部电信传输研究所, 上海交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1