具体实施方式
针对WLAN MIMO-OFDM高吞吐率系统的低成本、低功耗及延时需求,本发明实施例提出了一种多相ACS前向回溯Viterbi译码器,能满足高吞吐率前提下,实现功耗、延时及硬件开销上整体平衡及优化。
图1是依照本发明Viterbi译码器的整体结构示意图。该Viterbi译码器基于IEEE 802.11n协议中约束长度为7的(2,1,7)卷积码,通过删余实现1/2、2/3、3/4和5/6码率,并采用基4算法实现该译码器。
该译码器包含分支度量单元(Branch Metric Unit,BMU),加比选单元(AddCompare Select,加比选),路径度量单元(Path Metric Unit,PMU)和幸存路径存储单元(Survivor-path Memory Unit,SMU)及辅助控制单元。4路并行接收矢量同时进入BMU单元得到16种分支度量值,从路径度量单元输出的路径度量值和分支度量值在加比选单元中进行基4加比选操作得到幸存路径及路径度量值。幸存路径存入前向回溯幸存路径存储单元进行译码处理,路径度量值存入路径度量单元中以便下次迭代处理。
该译码器具有以下特点:
首先提出一种多相ACS单元,多相ACS单元采用了多相ACS结构,能按网格图奇数状态和偶数状态分时进行加比选多相操作。
再次,前向回溯(Pre-Traceback,PTB)方法用于幸存路径存储单元,在三组存储器上进行写幸存路径、读幸存路径操作,将幸存路径以循环方式写入三组存储器中,在写同时状态交换单元根据输入的幸存路径对状态进行交换,经过设置好的回溯长度次交换得到译码起始状态,最后根据译码起始状态和读取存储器中先前存入的幸存路径得到译码比特。
多相ACS单元根据卷积码状态之间分支输出反对称特性,通过增加少量运算逻辑取代整个ACS单元。基2算法和基4算法有不同多相ACS结构,称为基2多相ACS单元和基4多相ACS单元。基2多相ACS单元采用2个加法器、1个比较器、1个选择器及实现多相处理功能的额外2个减法器及2个选择器。基4多相ACS单元采用4个加法器、3个比较器、3个选择器及实现多相处理功能的额外4个减法器及4个选择器。
PTB幸存路径存储单元通过3组存储器、写幸存路径(Write Survivor-Path,WR)单元,状态交换(State Exchange,SE)单元,读并译码处理(Read Decode,DC)单元、后进先出(Last Input First Output,LIFO)单元和相应控制单元来实现。3组存储器分别处于WR状态、DC状态和空闲(Idle)状态。当同步进行L次存储器读或写操作后,WR状态、DC状态和空闲(Idle)状态这三种状态循环移位为下一类状态对存储器进行相应处理。如三组存储器当前状态分别为WR状态、DC状态和空闲(Idle)状态,经过L次存储器读或写操作后,三组存储器所处状态分别为Idle状态、WR状态和DC状态,再经过L次存储器读或写操作后,三组存储器所处状态分别为DC状态、Idle状态和WR状态。如此训话反复直至译码结束。所述L>1。
其中WR单元以地址递增顺序将幸存路径写入到处于WR状态的存储器中。
SE单元根据输入幸存路径对状态进行交换,在WR开始准备写第一个幸存路径(写地址为0)之前对SE单元中状态寄存器进行初始化。在WR刚写完最后一个幸存路径(写地址为L-1)时,将状态寄存器中任一状态作为译码起始状态传给DC单元。
SE单元由T组m-1比特的寄存器(T为状态数,m为约束长度)和T个状态选择器组成。状态选择器根据基2算法和基4算法而不同,基2算法对应二选一选择器,基4算法对应四选一选择器,选择器的输入来自状态寄存器,与基2或基4算法网格图之间状态连接是对应关系。
对于基2算法,在时刻i+1得到的更新状态值
表示状态(αβλ)寄存器中存储的新的状态值,其中α和β都是单比特,λ是4比特。
是根据状态(αβλ)的幸存路径
对前一时刻状态寄存器进行选择得到的。选择关系可通过如下式表示:
对于基4算法,在时刻i+1得到的更新状态值
表示状态(αβλ)寄存器中存储的新的状态值,其中α和β都是单比特,λ是4比特。
是根据状态(αβλ)的幸存路径
对前一时刻状态寄存器进行选择得到的。选择关系可通过如下式表示:
DC单元,以地址递减顺序读取出去DC状态存储器中的幸存路径,在准备开始读取之前(存储器地址为L-1),同时接收SE单元送来的译码起始状态作为译码开始状态,根据当前时刻i状态Si及以地址递减形式读取相应存储单元中的幸存路径
来估计前一状态Si-1。
对于基2实现可通过下式得到,其中Si>>1表示对以比特形式表示的Si右移一比特。
对于基4实现可通过下式得到,其中Si>>2表示对以比特形式表示的Si右移两比特。
LIFO单元,采用两块存储器进行乒乓操作,以地址递增顺序将DC单元出来的译码比特存入,而另一块存储器以地址递减顺序从中读取数据,最后输出数据流即是正常顺序的译码比特。
图2是(2,1,7)卷积码64状态基2网格图,在网格图中正确的路径只有一条,而在正确路径起点和终点之间有大量路径,具有最小路径度量值的路径接近正确路径的概率最大,译码算法的实质是挑选最大似然路径作为幸存路径来进行译码。对于基4算法64状态网格图与此图原理类似,连线过于复杂,为了方便说明,这里仅利用基2算法进行说明。
分支度量值采用欧式距离度量方式可取得最大似然性能,本发明采用一种汉明距离度量方式来等效欧式距离,避免了欧式距离中的乘法。
图3是基4算法的蝶形单元,它实际上是由图3左部的两级基2算法的蝶形单元合并而成的。例如,右图中
是由左图中
与
合并而成的。这里以状态00x为例说明基4蝶形处理单元,状态00x基4幸存路径度量值可表示如下:
状态00x的幸存路径是所选择幸存路径对应前一状态的右边两比特,如与幸存路径对应的前一状态为x10,则幸存路径为10,用两比特来表示4条路径。
事实上,(2,1,7)64状态Viterbi译码器由16个基4蝶形单元组成,每个基4蝶形单元由4个基4加比选单元组成。与基2算法相比,基4算法通过增加运算单元复杂度来换取数据吞吐率的增加。
图4是传统加比选单元结构图,主要组成单元是加法器、比较器和选择器。基4加比选单元作为基4 Viterbi译码器主要计算模块,占用了Viterbi译码器大部分逻辑运算资源。
图5是所采用的基4多相加比选单元结构。(2,1,7)Viterbi译码器蝶形单元的规律,如图3所示,在i+2时刻状态00x与10x,01x与11x之间输出分支值之间具有反对称性,如下式所示:
其中γ的下标表示状态,上标表示状态对应的第几条分支,如
表示蝶形单元中状态01x第4条分支,即从状态x11到状态01x的分支输出。
分支度量方式采用了一种绝对值汉明距离,先对接收软信息进行绝对值化,然后以汉明距离形式进行度量,这种形式实际是欧式距离的一种等效。例如考虑4比特量化软信息,每一符号软信息在0~15之间取值,与0越接近,表示比特取0的概率越大,与15越接近,表示比特取1的概率越大。考虑到反对称性,如此状态00x与10x及01x与11x之间可通过增加少量加法器和选择器实现状态的分时处理。分支度量值之间有如下关系:
其中,4比特软信息对应R=60,5比特软信息对应R=124,6比特软信息对应R=252,按规律逐渐增加。
这样通过增加几个减法器和选择器实现了加比选多相处理。此多相加比选结构实现了奇数状态和偶数状态分时处理,如此64个加比选降为32个。
图6是RE算法实现结构图。RE法是网格图的直接硬件实现,网格图中每个状态与长度为L级的寄存器相连,每次幸存路径来时,所有寄存器和选择器同时进行交换传输,这种同步交换处理使RE法具有最小延时,并等于寄存器长度L。具有简单电路结构和延时小特点的RE法对于短约束长度和基2 Viterbi译码器来说是一种很好选择,但是对于约束长度大和基4算法,RE法就表现出不足。如(2,1,7)卷积码,寄存器长度为50时(寄存器长度一般选为4~7倍约束长度),采用基4算法时,RE法需要6400个寄存器和6400个四选一选择器,如此大资源开销使得RE法用于约束长度大和基4 Viterbi译码器不现实。
图7是Viterbi译码回溯处理流程框图。所有状态经过L步回溯处理将汇聚为相同状态。在起始回溯时,我们选择任意起始状态,通过一定级数回溯后路径会收敛于最大似然状态。
图8是传统回溯方法存储器读写时序图。这种结构的工作过程可视为图8所示四块存储器循环工作过程,主要是如下三种操作的循环处理:写幸存路径(Write Survivor-Path,WR),读并回溯处理(Read Trace-back,TB),读并译码处理(Read Decode,DC)。每个时刻,这三种操作在不同存储器中同步处理。WR操作是将加比选单元得到的幸存路径以地址递增形式写到存储器中,TB操作是根据当前时刻i状态Si及以地址递减形式读取相应存储单元中的幸存路径
来估计前一状态Si-1。对于基4实现可通过下式得到,其中S
i>>2表示对以比特形式表示的Si右移两比特。
DC操作与TB读类似,只是起始状态利用TB经过L步回溯后得到的收敛状态。DC出来的译码比特是倒序的,还需要一个后进先出(Last Input FirstOutput,LIFO)单元对译码比特进行倒序处理。可以看到:从最开始幸存路径写入到LIFO译码比特出来,延时大小为4L。
图9是前向回溯方幸存路径存储单元中状态交换单元。TB采用了后向回溯方式来得到收敛状态,TB处理的起点需要等待L长幸存路径全部写完才能开始,这样直接增加了译码延时。为了得到DC操作起始状态,将RE法思想引入到回溯算法中,即前向回溯法(Pre-Traceback,PTB),并应用到基4结构中,如图9所示,DC处理的起始状态能直接通过64状态交换单元组成的状态交换网络来得到,取代了TB操作。在时刻i+1得到的更新状态值
表示状态(αβλ)寄存器中存储的新的状态值,其中α和β都是单比特,λ是4比特。
是根据状态(αβλ)的幸存路径
对前一时刻状态寄存器进行选择得到的。选择关系可通过如下式表示:
在准备将幸存路径写入到第一个地址时(地址0),需要将64个状态寄存器中复位为初始状态,初始状态是对应状态的二进制表达。在经过L次交换后需要将任一状态寄存器中状态传给DC单元作为其译码起始状态。
图10是是采用PTB后存储器读写时序图。根据回溯收敛特性,在L足够大时,经过L次状态交换,状态寄存器中存储状态会收敛于最大似然状态Smax-like,此状态即作为DC操作的起始状态。与传统TB相比,只需要两种类型操作:WR和DC处理,并且采用PTB后其所需存储器组减少为3块,具体操作流程如图10所示。WR处理除了将幸存路径存入对应存储器外,还根据幸存路径进行状态的交换,每完成L次交换后将任一状态寄存器中的状态传递给DC,作为其译码的起始状态,同时对状态寄存器中保存值进行复位为初始状态以便进行下次前向回溯处理。DC操作选取PTB处理后任意状态寄存器中的状态作为起始译码状态,读取DC对应存储器中幸存路径来进行译码,译码比特
选取译码状态对应的比特前两位即可,下一状态通过如下式可表示:
Si+1={Si<<2,p0,p1}
其中Si<<2表示对Si状态表示的6个比特进行左移2位,p0和p1表示DC存储器中与Si状态对应的幸存路径。DC处理后的比特是倒序的,将DC处理后比特经过一个LIFO倒序后即为正常顺序的译码比特。采用PTB后从幸存路径写入到译码比特出来延时大小为3L,而且减少了存储器的个数,无后向回溯处理带来存储器读写次数减少。
图11是采用PTB的SMU总体结构图,其由3组存储器、写幸存路径(WriteSurvivor-Path,WR)单元,状态交换(State Exchange,SE)单元,读并译码处理(Read Decode,DC)单元、后进先出(Last Input First Output,LIFO)单元和相应控制单元组成。从接收矢量输入到对应译码比特输出,总共延时是3L。
图12是Viterbi译码器误码率曲线图。所设计的采用多相加比选结构的前向回溯基4Viterbi译码器在TGn多径MIMO信道B下,天线配置是2×2,空间复用模式,回溯长度L设为50,每种信噪比下仿真1000组,帧长为1000字节。此译码器并在搭建的IEEE 802.11n MIMO-OFDM系统平台上进行验证,通过Modelsim进行了前仿和后仿,功能和性能满足系统要求。
表1是对不同结构Viterbi译码器设计的FPGA综合结果。
表1
为了比较此设计译码器整体性能,我们设计了下面4种Viterbi译码器:
(1)基4全并行加比选,RE算法
(2)基4全并行加比选,TB算法
(3)基4全并行加比选,PTB算法
(4)基4多相加比选,PTB算法
四种Viterbi译码器通过Verilog HDL描述,采用相同接口,在搭建的2×2WLAN MIMO-OFDM系统中进行了功能验证,并通过Quartus II 8.0在EP2S180F1020C3器件上综合。为了方便对比,其中寄存器长度和回溯深度L均设为50。可见在资源使用上,基于基4和长回溯长度的RE实现已不现实,多相基4加比选取得最小逻辑计算资源,相比全并行基4加比选,节省接近40%计算逻辑;相比传统TB法,在将译码延时从200周期降为150周期同时,增加了PTB模块中的350个寄存器。
表2是对不同结构Viterbi译码器设计的DC综合结果。
表2
在SMIC 0.18-um CMOS工艺环境下用Synopsys Design Compiler综合为门级网表。表2是本设计与其余实现之间的面积,延时,最高工作频率及功耗之间的比较。该译码器工作的时钟周期可以达到235MHz。与TB法相比,多相基4加比选的前向回溯法译码器在面积和延时上具有优势。与基4RE法的实现相比,面积和功耗上有了很大减少。
本发明通过增加少量减法器和选择器来实现ACS按照奇数和偶数状态多相处理,减少近40%运算逻辑。另外将RE法思想引入到回溯算法中,采用前向回溯处理方式减小了译码延时,并减少存储器块的个数和读写存储器次数,与传统后向回溯比,可减小25%的译码延时。
以上所述的具体实施例,对本发明进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。