基于Viterbi译码的多路并行循环块回溯技术的制作方法

文档序号:7589297阅读:340来源:国知局
专利名称:基于Viterbi译码的多路并行循环块回溯技术的制作方法
技术领域
一种卷积纠错编码的Viterbi译码方案——多路并行循环块回溯算法,涉及通信芯片中的信号处理,,属于无线通信领域,尤其涉及面向芯片设计做面积和功耗的优化。
背景技术
积码作为一种前向纠错编码技术,在无线通信、移动通信、深太空通信、磁盘存储纠错等方面应用十分广泛。但是卷积码的译码比较困难,已知的两种方法是代数译码和概率译码。代数译码是根据卷积码的本身编码结构进行译码,译码时不考虑信道的统计特性。概率译码在计算时要考虑信道的统计特性。典型的算法如最大似然译码、Viterbi译码、序列译码等。Viterbi译码算法是由Viterbi于1967年提出的一种最大似然译码方法,它通过计算累积码距,在相应的卷积码格状图上寻找唯一的最大似然路径,再根据这条路径所通过的延时寄存器的状态,来重构发送的数据。Viterbi译码又分为硬判决和软判决两种。在硬判决译码过程中信号之间的差别用汉明距离来表示,而在软判决中用欧氏距离来表示。由于软判决充分利用了接收信号的信息,因而可比硬判决得到更多的好处,当然实现的难度也增加了不少。
Viterbi算法的译码过程又有寄存器交换算法和回溯算法,无论哪种方法,译码器的前端需要一个基2、基4甚至基8的ACS(Add-Compare-Select)网络,完成译码输入的分支度量、路径度量操作。寄存器交换算法面积的占用和功耗巨大,除了对码率要求特别高的场合下,一般不采用。
回溯算法技术应用广泛,但回溯算法技术的译码输出延时要大于寄存器交换算法技术,针对回溯算法前人提出了各种各样硬件结构的实现方案,通常是对电路面积、功耗和速度进行各种优化。以(2,1,2)码为例,其篱笆图如图1所示,该卷积码的编码器具有2个寄存器,则有s0,s1,s2,s3共4个状态,图中实线箭头表示编码输入为“1”,虚线箭头表示编码输入为“0”。箭头旁边的码字代表编码输出,由此便构成了卷积码的篱笆图。
在接收端译码时也使用这样的篱笆图,在每个时刻,将接收码字与图中的编码码字比较得出二者之间的差值距离(汉明距离或欧几里得距离),即分支度量,图中每个时刻到达每个状态都有两个转移路径,只能取其中具有较小的分支度量的分支作为幸存路径,每个时刻每个状态的分支度量与这条路径上前面所有的分支度量累加,以得到路径度量值。在经过一定时间的这样的操作之后,便可得到一条度量值最小的路径,称为幸存路径,在这条路径上可以找到相应的编码输入,即可得到译码输出值,这个过程称为回溯译码,回溯的时间长度称为回溯深度。
Viterbi译码器参数的选取十分重要,回溯深度,回溯块的大小将直接影响译码器的性能,设卷积编码器的约束长度为K,那么理论上需要回溯的深度为(5~10)*K,保证译码格形图上幸存路径已经收敛,可以回溯了。回溯块大小的选取需要根据实际情况判断,如各类通信信道的特征等,有时需要根据实际的仿真结果确定。

发明内容
本发明的目的是提出一种可实现高数据译码率的Viterbi回溯技术,并且使实现该技术的硬件体系结构具有较低的功耗需求和芯片面积需求。
本发明的总体思路是根据Viterbi译码理论,首先选择合适的译码状态编码方案,最大限度地简化回溯单元逻辑;其次,根据Viterbi译码参数回溯深度T和回溯块S的大小决定选取单口RAM还是双口RAM,RAM分块数是2×(T/S),如果T/S非整数,用大于T/S的最小整数代替,这些RAM存储幸存路径分支信息,回溯时有多路回溯同时读取多块RAM中的数据,而每条回溯路径在回溯到第一块RAM时开始循环读取最后一块RAM中的数据,回溯产生的译码状态值在连续的RAM块之间切换。而RAM中幸存路径信息的写入由第一块RAM开始,到最后一块RAM结束,然后循环到第一块RAM,回溯时再配以适当的选通网络即可完成译码器的回溯过程。
本发明的特征依次包含以下步骤1.基于Viterbi译码的多路并行循环块回溯算法,其Viterbi译码的分支度量和路径度量采用公知的基2蝶形ACS网络,设所需译码的卷积码约束长度为K,则卷积码编码器有K-1个寄存器,相当于K-1位二进制数,对应2K-1个状态,与编码输入端最近的寄存器设为寄存器的最低位,与编码输出端最近的寄存器设为寄存器的最高位,编码寄存器的二进制值就对应回溯的状态值,例如“00…001”可以转换到下一个状态“00…010”和“00…011”(省略号代表同样的二进制位),是一个左移过程,假设当前状态值是“00…001”,那么它可以回溯到下一个译码状态“00…000”或者“10…000”,于是,回溯时就可以简化为对当前回溯状态值的右移操作,并把最高位设置为当前的幸存路径分支信息。
2.对卷积码的Viterbi译码参数设置为回溯深度T,回溯的块大小S,且T/S恰好是整数,大小最适宜的值是2到6之间,有T/S路同时循环回溯。由于T和S正好成整数比,恰好不存在对幸存路径信息存储的RAM的同时读写操作,故使用单口RAM即可,RAM大小为S×2K-1bit,一共有M=2*(T/S)块。每一块RAM对应一个当前状态寄存器。
(1)回溯时幸存路径信息依次写入M块RAM中,当写入第T/S块RAM的最后一个字时,回溯过程启动,最小路径度量值对应的译码状态选通到第T/S块RAM对应的当前状态寄存器中,以它为始点进行回溯,再过长为S的写时钟周期,将在第(T/S)+1块RAM处启动第2条回溯路径,此后回溯过程同前。如果第M块RAM的幸存路径信息写入操作完成,将重新启动第1条回溯路径。随后,从第1重块RAM复回溯。
(2)正常回溯时从某一块RAM读取的幸存路径信息,由当前状态值控制通过2K-1选1的MUX选取一位幸存路径分支信息,当前状态值和幸存路径分支信息输入到回溯单元进行右移操作产生下一个回溯的译码状态值。该状态值需要再通过两级2选1延迟的MUX(2K-2线输入K-1线输出),第一级该状态值与最小路径度量值对应的状态值送入MUX,第二级是前一级的输出和后一个回溯单元第一级的输出作为MUX的输入。第二级的输出连接当前状态寄存器。
(3)如果回溯到RAM的第一个2K-1位字,下一周期将回溯到前一块RAM的最后一个2K-1位字对应的幸存路径信息,两块RAM之间存在当前状态值的切换,即当前RAM对应回溯单元的输出经选通器传给前一块RAM的当前状态寄存器,一个2选1延迟MUX即可完成当前译码状态的连续切换。对每一条回溯路径需要连续切换的次数是T/S-1。
(4)译码输出阶段,当某一条回溯路径已经回溯了T-S个时钟周期时就开始记录译码结果了,在随后的S-K+1个时钟周期里,该回溯路径对应的当前状态寄存器最低二进制位经M选1MUX左移输入S bit的移位寄存器中,在第S-K+2个时钟周期,当前状态寄存器值直接输入到S bit移位寄存器的最高K-1bit即可。此时移位寄存器中的S bit译码结果可以并行输出了。
(5)RAM的使用。在多路径并行回溯时,共有T/S+1个RAM处于读写状态,其余T/S-1个RAM可以通过片选使能信号禁止它们工作,降低系统功耗。M块RAM的工作情况有规律可寻,可以通过对M块RAM的片选使能信号进行简单的编码处理来完成。
3.如果T与S不成整数比,就需要选用双口RAM,将会增大Viterbi译码器的实现面积,此时需要RAM块数是大于T/S的最小整数N的2倍,选2N是为了尽量减少RAM的块数,使得每块RAM字数不致于太少,所需RAM的总字数仍是2T,此时如果T/2N非整数,实际参数选取中可以适当调整T为2N的整倍数,最好能达到T/S构成整数,这样只需要单口RAM,译码回溯速率仍等于卷积码编码的速率,无需倍频。
此时的多路并行循环块回溯操作同步骤2,只是回溯单元所对应的回溯网络中MUX选通变量的产生较复杂,同时通过片选信号禁止暂时不需要工作的RAM,情况比较复杂,不易实现。但是,通过细致的编码推演,也能顺利完成这部分逻辑。


图1(2,1,2)码的篱笆2回溯过程图示图3卷积码(133,171)8的多路并行循环块回溯算法电路结构图。
具体实施例方式
基于Viterbi译码的多路并行循环块回溯算法的实施实例。IEEE802.11a无线局域网物理层协议规定数据发送端信源需通过卷积码(133,171)8编码,数据接收端采用本Viterbi回溯算法进行译码,译码结构图参见附图1,Viterbi译码器的参数设定为回溯深度T=96,回溯块大小S=32bit,其译码性能达到了实用化需求。下面给出具体实施步骤1.基于Viterbi译码的多路并行循环块回溯算法,其Viterbi译码的分支度量和路径度量采用公知的基2蝶形ACS网络,卷积码(133,171)8的约束长度为7,则卷积码编码器有6个寄存器,相当于6位二进制数,对应64个状态,与编码输入端最近的寄存器设为寄存器的最低位,与编码输出端最近的寄存器设为寄存器的最高位,编码寄存器的二进制值就对应回溯的状态值,如此编写回溯状态值可以在回溯结束时节省6个时钟周期的回溯操作,因为倒数第6个回溯操作的当前状态值就等于译码结果的低6位。
2.因为Viterbi译码器的T/S恰好是整数3,即有3路同时循环回溯。RAM使用单口RAM即可,RAM大小为32X64bit,一共有6块。每一块RAM对应一个当前状态寄存器。
(1)回溯时幸存路径信息依次写入6块RAM中,当写入第3块RAM的最后一个字时,回溯过程启动,最小路径度量值对应的译码状态选通到第3块RAM对应的当前状态寄存器中,以它为始点进行回溯,再过长为32的写时钟周期,将在第4块RAM处启动第2条回溯路径,此后回溯过程同前。如果第6块RAM的幸存路径信息写入操作完成,将重新启动第1条回溯路径。随后,从第1块RAM重复回溯。
(2)正常回溯时从某一块RAM读取的幸存路径信息,由当前状态值控制通过64选1的MUX选取一位幸存路径分支信息,当前状态值和幸存路径分支信息输入到回溯单元进行右移操作产生下一个回溯的译码状态值。该状态值需要再通过两级2选1延迟的MUX(12线输入6线输出),第一级该状态值与最小路径度量值对应的状态值送入MUX,第二级是前一级的输出和后一个回溯单元第一级的输出作为MUX的输入。第二级的输出连接当前状态寄存器。
(3)如果回溯到RAM的第一个64位字,下一周期将回溯到前一块RAM的最后一个64位字对应的幸存路径信息,两块RAM之间存在当前状态值的切换,即当前RAM对应回溯单元的输出经选通器传给前一块RAM的当前状态寄存器,一个2选1延迟MUX即可完成当前译码状态的连续切换。对每一条回溯路径需要连续切换的次数是2。
(4)译码输出阶段,当某一条回溯路径已经回溯了64个时钟周期时就开始记录译码结果了,在随后的26个时钟周期里,该回溯路径对应的当前状态寄存器最低二进制位经6选1MUX左移输入32bit的移位寄存器中,在第27个时钟周期,当前状态寄存器值直接输入到32bit移位寄存器的最高6bit即可。此时移位寄存器中的6bit译码结果可以并行输出了。
(5)RAM的使用。在多路径并行回溯时,共有4个RAM处于读写状态,其余2块RAM可以通过片选使能信号禁止它们工作,降低系统功耗。6块RAM的工作情况有规律可寻,可以通过对6块RAM的片选使能信号进行简单的编码处理来完成。
最后,为了直观说明该译码器的性能,附图2给出了此Viterbi译码的BER曲线,译码器的输入采用3bit量化,软判决方式。信元以随机的方式产生,数量是105bit量级,添加高斯白噪声。
本发明的创新点和技术先进处在于1.在寄存器设置上,编码输入端最近的寄存器设为寄存器的最低位,与编码输出端最近的寄存器设为寄存器的最高位,编码寄存器的二进制值就对应回溯的状态值;如此编写回溯状态值可以在回溯结束时节省K-1个时钟周期的回溯操作,因为倒数第K-1个回溯操作的当前状态值就等于译码结果的低K-1位。此外还可以简化回溯单元,因为编码时二进制表示的状态值,例如“00…001”可以转换到下一个状态“00…010”和“00…011”(省略号代表同样的二进制位),是一个左移过程,假设当前状态值是“00…001”,那么它可以回溯到下一个译码状态“00…000”或者“10…000”,于是,回溯时就可以简化为对当前回溯状态值的右移操作,并把最高位设置为当前的幸存路径分支信息,这样的编码达到简化电路结构的目的。
2.如此编写回溯状态值可以在回溯结束时节省K-1个时钟周期的回溯操作,因为倒数第K-1个回溯操作的当前状态值就等于译码结果的低K-1位,可以达到提高译码速度的效果。
3.多路径并行回溯时,其回溯工作频率与输入信号频率保持一致,而通常基于回溯算法Viterbi译码电路其回溯工作频率是输入信号的2-3倍,频率的降低使得系统功耗得以降低,且共有T/S+1个RAM处于读写状态,其余RAM可以通过片选使能信号禁止它们工作,这样也可以达到降低系统功耗的目的。
权利要求
1.一种基于Viterbi译码的循环多路并行回溯电路,其特征在于基于Viterbi译码的循环多路并行回溯电路的工作步骤包括,首先需要选取一定数量的RAM块,用来存储幸存路径分支信息;再将其分为几个分块,回溯时电路同时、循环地在几个分块组成的回溯长度的RAM中读取数据,并得出各个回溯长度的RAM对应的译码,将各个分块的译码值连接起来,完成译码过程。
2.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于其Viterbi译码的分支度量和路径度量采用公知的基2蝶形网络,若所需译码的卷积码约束长度为K(整数),则卷积码编码器有K-1个寄存器对应2K-1个状态,与编码输入端最近的寄存器设为寄存器的最低位与编码输出端最近的寄存器设为寄存器的最高位,编码寄存器的二进制值就对应回溯的状态值,
3.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于卷积码的Viterbi译码参数设置为回溯深度T,回溯的块大小S,RAM大小为S×2K-1bit,一共有M=2*(T/S)块。每一块RAM对应一个当前状态寄存器。
4.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于当回溯深度T,回溯的块大小S,T/S恰好是整数,大小最适宜的值是2到6之间有T/S路同时循环回溯。由于T和S正好成整数比,恰好不存在对幸存路径信息存储的RAM的同时读写操作使用单口RAM。
5.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于回溯时幸存路径信息依次写入M块RAM中,当写入第T/S块RAM的最后一个字时,回溯过程启动,最小路径度量值对应的译码状态选通到第T/S块RAM对应的当前状态寄存器中,以它为始点进行回溯。
6.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于Viterbi译码的循环多路并行回溯电路再经过长为S的写时钟周期后,将在第(T/S)+1块RAM处启动第2条回溯路径,此后回溯过程同前。如果第M块RAM的幸存路径信息写入操作完成,将重新启动第1条回溯路径。随后,从第1块RAM重复回溯。
7.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于正常回溯时从某一块RAM读取的幸存路径信息,由当前状态值控制通过2K-1选1的MUX选取一位幸存路径分支信息,当前状态值和幸存路径分支信息输入到回溯单元进行右移操作产生下一个回溯的译码状态值。
8.根据权利要求6所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于如果回溯到RAM的第一个2K-1位字,下一周期将回溯到前一块RAM的最后一个2K-1位字对应的幸存路径信息,两块RAM之间存在当前状态值的切换;即当前RAM对应回溯单元的输出经选通器传给前一块RAM的当前状态寄存器,一个2选1MUX即可完成当前译码状态的连续切换。
9.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于译码输出阶段,某条回溯路径回溯到T-S个时钟周期时就开始记录译码结果,在随后的S-K+1个时钟周期里,该回溯路径对应的当前状态寄存器最低二进制位经M选1MUX左移输入Sbit的移位寄存器,在第S-K+2个时钟周期,当前状态寄存器值直接输入到Sbit移位寄存器的最高K-1bit。此时移位寄存器中的Sbit译码结果可以并行输出。
10.根据权利要求1所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于当回溯深度T,回溯的块大小S之比不为整数时,需要选用双口RAM,此时RAM块数选择大于T/S的最小整数N的2倍。
11.根据权利要求10所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于T/S的最小整数为N,如果T/2N非整数,实际参数选取中可以适当调整T为2N的整数倍,使T/S构成整数,则仍选用单口RAM,译码回溯速率仍等于卷积码编码的速率,无需倍频。
12.根据权利要求3所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于在多路径并行回溯时,共有T/S+1个RAM处于读写状态,其余RAM可以通过片选使能信号禁止它们工作,以此降低系统功耗。
13.根据权利要求12所述的一种基于Viterbi译码的循环多路并行回溯电路,其特征在于K块RAM的工作情况有规律可寻,可以通过对RAM的片选使能信号进行简单的编码处理来完成。
全文摘要
一种基于Viterbi译码的多路并行循环块回溯算法是根据Viterbi译码原理,其过程包括提出一种仅需采用卷积码编码回溯的译码算法,回溯算法对Viterbi译码幸存路径信息的存储视情况可采用单口RAM或者双口RAM,RAM单元数的大小恒为回溯深度T的2倍与卷积码状态总数的乘积。RAM要分多块使用,分块多少由回溯深度和回溯块的大小决定。每块RAM都对应一个回溯单元和一套回溯选通网络,回溯时只有一部分RAM需要读写操作,同时有效的并行回溯路径数是回溯深度与回溯块大小的比值。回溯过程中,始点是路径度量的最小值对应的状态值作为当前回溯状态,随后,由当前回溯状态结合选出的当前幸存路径,回溯到下一个译码状态值,并且需要对多块RAM连续访问,回溯的当前状态值也在两块RAM之间实现连续切换,最后,回溯结果是反序排列的,寄存后以正常顺序输出译码结果。
文档编号H04L1/00GK1671058SQ20041000860
公开日2005年9月21日 申请日期2004年3月16日 优先权日2004年3月16日
发明者周斌, 程东旭 申请人:北京中电华大电子设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1