CN101090274A - 一种维特比译码器及其回溯译码方法和回溯译码装置 - Google Patents
一种维特比译码器及其回溯译码方法和回溯译码装置 Download PDFInfo
- Publication number
- CN101090274A CN101090274A CN 200710137681 CN200710137681A CN101090274A CN 101090274 A CN101090274 A CN 101090274A CN 200710137681 CN200710137681 CN 200710137681 CN 200710137681 A CN200710137681 A CN 200710137681A CN 101090274 A CN101090274 A CN 101090274A
- Authority
- CN
- China
- Prior art keywords
- selecting
- discriminative information
- constantly
- recall
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种维特比(Viterbi)译码器中的回溯译码方法,译码器中存储有不同时刻的加比选判决信息,该方法具体包括:所述译码器中的加比选判决信息存储到译码深度后,开始回溯;开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,并读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;所述回溯到达译码深度时,对输入码字进行译码。本发明同时还公开了一种Viterbi译码器中的回溯译码装置和一种Viterbi译码器。应用本发明,可以在保证数据速率的情况下,提高译码器中的回溯速度,节省译码器中的存储资源。
Description
技术领域
本发明涉及回溯技术,特别涉及一种维特比(Viterbi)译码器及其回溯译码方法和回溯译码装置。
背景技术
卷积码是现代数字通信中常用的一种信道纠错编码技术,通常使用卷积码格图对卷积码的编码过程进行图示。以(2,1,2)卷积码为例,图1为现有技术中(2,1,2)卷积码的格图,其中每一竖线对应一个时刻,而每一竖线上存在多个与横线的交点,代表对应时刻的不同状态,称为该时刻的不同节点,因此每一时刻都对应有多个节点。实线箭头表示的路径称为许用路径,为编码可能经过的路径,每一条许用路径都对应自身路径的一个编码值,图1中对相同取值的许用路径只标出了一部分数值。对于一部分节点来说,存在两条许用路径进入同一个节点的情况。
卷积码典型的译码算法有代数译码和概率译码两大类,Viterbi译码算法就是一种常用的概率译码算法,它的基本原理为:预先计算每一时刻可能存在的许用路径和经过该许用路径的编码值,并在卷积码的格图中表示这些许用路径。考虑所有许用路径,寻找一条最大似然路径,将沿此最大似然路径的编码序列作为对实际待译码序列的译码结果。考虑到计算量的问题,Viterbi译码算法中采用逐步计算的原则。
下面结合图1对Viterbi译码算法进行简要介绍。
Viterbi译码器使用Viterbi译码算法,实现三个部分功能,即分支度量计算、路径度量加比选计算和回溯译码。可以将译码器每接收一个输入码字视为一个时刻。
在所述分支度量计算中,某时刻节点与其上一时刻节点之间的连线称为分支,将接收码与每条分支的距离称为分支度量。
在所述路径度量加比选计算中,将某时刻每个节点上两条不同输入分支对应的上一时刻节点的路径度量,与各自计算出的分支度量相加,从两个相加结果中选择较小的一个,作为该时刻每个节点新的路径度量值,得到的新路径度量值所对应的支路就是当前时刻每个节点对应的幸存路径。如果某时刻每个节点上只对应一条输入分支,则无需进行上述选择较小路径度量值的过程,直接将该分支对应的上一时刻节点的路径度量,与计算出的分支度量相加即可。每一时刻都按照上述规则更新各个节点的路径度量值存储,并且将加比选计算中得到的幸存路径在卷积码格图中所对应的数值作为加比选判决信息存储,用于后续的回溯译码操作。
在所述回溯译码中,当路径度量加比选计算中得到的加比选判决信息在译码器中的存储到达译码深度后,就可以开始回溯操作。回溯开始的第一次回溯具体操作可以简单描述为:从回溯开始的当前时刻选择任意一个节点作为回溯操作的起始节点,读取存储的当前时刻加比选判决信息,即找到了回溯操作起始节点所对应的幸存路径的数值,由于针对每个节点的幸存路径的数值只有一个,因此根据该数值可以找到回溯操作的起始节点到当前时刻前一时刻中一个节点的唯一路径。例如图1所示,假设加比选判决信息中针对时刻6的节点a存储的数值为10,即节点a对应的幸存路径的数值为10,则根据该数值可以找到节点a到时刻5中节点b的唯一路径,相当于在卷积码格图上从节点a回溯到了节点b。回溯开始的第一次回溯之后的每一次回溯,都按照上述读取加比选判决信息并前进一个节点的方式,依次回溯得出一条路径。在上述回溯操作到达译码深度后,认为回溯操作的结束节点已经位于最大似然路径上,可以开始沿最大似然路径对输入码字进行译码,译码的具体操作就是沿回溯操作的结束节点为起始点的路径,依次读出该路径上各节点之间路径上的数值,即读取各节点对应的加比选判决信息作为译码结果,释放存储空间。
在上述Viterbi译码器实现的三部分功能中,分支度量计算和路径度量加比选计算的逻辑比较固定,只要使用Viterbi译码算法就需要这两个部分来完成前期的预处理。而回溯译码操作需要大量的存储资源,来存储每一时刻所有节点的路径度量值和加比选判决信息,以便于进行回溯操作,因此这一部分的存储将占用Viterbi译码器的主要资源,由于回溯译码部分有较多的实现方法,因此成了减小译码器面积和资源消耗设计中备受关注的部分,也是目前优化译码器设计的瓶颈。
现有技术中Viterbi译码算法中的回溯是基于随机存储器(RAM)的回溯操作,其中又可以分为传统的直接回溯和前向回溯。由于前向回溯中回溯操作的数据对象为当前加比选判决信息,需要增加额外的寄存器来实现类似寄存器交换的处理,而传统的直接回溯中回溯操作是针对已经写入存储器的加比选判决信息,无需额外的寄存器,因此传统的直接回溯更能节省资源,应用的也比较广泛。
目前在Viterbi译码器中,针对传统的直接回溯有四种架构实现方法,都包含以下三种操作:
1)回溯(TB),指从当前时刻的某一节点开始,读取加比选判决信息得到整个译码深度的路径。
2)译码(DC),指在回溯完成的基础上的译码输出。
3)写入(WR),将加比选判决信息写入Viterbi译码器的存储模块中。
下面分别简单介绍目前传统直接回溯中的四种架构实现方法,在这四种方法中,都将Viterbi译码器中存储加比选判决信息的RAM划分为多个存储体,在每个存储体中又存在以不同地址标识的不同存储位置,每一时刻所有节点的加比选判决信息可以存储在一个地址标识的一个存储位置中,例如图1中时刻3的所有节点的加比选判决信息可以存储在存储体中一个地址标识的一个存储位置中。可以使用回溯指针来指向读取加比选判决信息的存储位置的地址。在这几种架构方法中,数据流都遵循共同的原则:加比选判决信息写入存储体到达译码深度后,可以从某一时刻选择任意的一个节点为起始开始回溯操作;回溯操作在到达译码深度之前,只能从一个存储体转移到其相邻的存储体进行;回溯操作到达译码深度之后,译码操作以回溯操作的结束节点为起始点开始译码输出。根据上述原则不断的循环往复,就可以得到连续的译码结果输出。
第一、k指针偶方法。
该架构方法中,在同一时刻多个存储体中有k个回溯指针同时进行回溯操作,译码器中需要2k块存储体,每块存储体的深度为L/(k-1),其中L为回溯深度,也就是译码深度。将对应各个时刻所有节点的加比选判决信息顺序写入各个存储体中的对应地址中,当写入的深度到达译码深度后,就可以开始回溯操作,图2为现有技术中3指针偶方法的数据流结构示意图,所示为译码器首次回溯操作开始后的一段中间态数据流结构,其中空心较大的箭头表示加比选判决信息写入路径,空心较小的箭头表示译码输出路径,而虚线箭头表示回溯路径,每一时刻的加比选判决信息有N位。
图2所示的数据流结构中,每一行代表在一个时间段内不同存储体内同时进行的操作,上述一个时间段可以包括对应输入多个输入码字的多个时刻。可以看出,在相同时间段内同时进行的操作包括:加比选判决信息写满一个存储体,对应一个存储体的译码输出,以及对应一个存储体中加比选判决信息的回溯操作。因此具体到相同时间段的每一个时刻,可以认为,在每一个时刻同时进行的操作包括:将当前时刻的加比选判决信息写入存储体中一个地址对应的存储位置,从存储体中读取一个地址对应的存储位置中的加比选判决信息进行一次回溯,也就是读取一个时刻已存储的加比选判决信息进行一次回溯,译码输出对应一个时刻的结果。上述每一时刻进行的一次回溯,与前述介绍回溯操作时相同,相当于从当前节点向前运动了一步,例如图1所示从节点a运动到了节点b。
由于译码结果和输入序列相比是倒序的,因此Viterbi译码器需要外置后进先出的缓冲栈将译码结果倒序。k指针偶方法通常使用2块后进先出的缓冲栈(Last in First out,LIFO)来将产生的译码结果进行倒序,每一块LIFO的深度都为L/(k-1)。
在k指针偶方法中,译码器接收输入码字、回溯操作和译码的速率均相同,译码速率可以达到全速,也无需限制译码器的数据速率,即无需限制译码器接收输入码字的速率,但是存储资源耗费较多。
第二、k指针奇方法。
k指针奇方法与k指针偶方法的回溯算法结构基本相同,区别在于k指针奇方法中译码操作和写入加比选判决信息可以在同一存储体中进行,因此所需的存储体个数比k指针偶方法少一个,而且与译码操作在同一存储体中进行的写入加比选判决信息操作,和上一次在相同存储体中进行的写入加比选判决信息操作的顺序相反。k指针奇方法中,在同一时刻多个存储体的k个回溯指针在进行回溯操作,译码器中需要2k块存储体,每块存储体的深度为L/(k-1),其中L为回溯深度,也就是译码深度。
图3为现有技术中3指针奇方法的数据流结构示意图,图中各箭头表示的意义与k指针偶方法中的描述相同,图3所示为译码器首次回溯操作开始后的一段中间态数据流结构。同样地,该方法中Viterbi译码器也需要外置的缓冲栈来对译码输出序列进行倒序,通常也需要2块深度为L/(k-1)的LIFO来完成此操作。
按照k指针偶方法中对同一时间段同时进行操作的介绍,可以看出,在k指针奇方法中,译码器接收输入码字、回溯操作和译码输出的速率也相同,译码速率也可以达到全速,也无需限制译码器的数据速率,但是存储资源耗费也较多。
第三、单指针方法。
单指针方法和前述k指针偶方法以及k指针奇方法的算法结构相同,但同一时刻多个存储体只有一个回溯指针在进行回溯操作。图4为现有技术中单指针方法的数据流结构示意图,其中空心箭头表示译码路径,虚线箭头表示回溯路径,而在标识WR的存储体中的竖线表示写入加比选判决信息。图4所示为译码器首次回溯操作开始后的一段中间态数据流结构。
在这种方法中,为了减少存储资源的耗费,对回溯操作和写入加比选判决信息操作的速度进行了设计,具体为:将加比选判决信息写满一个存储体时,完成一次译码深度的回溯操作和一次译码输出。为满足上述速度设计要求,单指针方法中的平均数据速率降低,即译码器接收输入码字的平均速度降低,使得回溯操作和译码输出的速度是数据输入速度的几倍,这样虽然降低了存储资源的耗费,但数据速率较低,并且译码输出的延迟增大,导致译码速率下降。
第四、混合方法
该方法是将上述第一至第三种方法的混合与折中,对于数据流结构和所需的硬件资源等不再赘述。
通过上述介绍可以看出,现有技术中的几种回溯架构方法,都基于一个共同的特点:进行回溯操作时,每一时刻从译码器的加比选判决信息存储体中,只读取已存储的一个时刻的加比选判决信息,即存储体的回溯指针从开始回溯的节点向前运动了一步,回溯了一个节点。对于任何的Viterbi译码器设计,总要回溯一定的深度才能译码一段数据,译码后相应的存储空间才被释放,才能够写入新的加比选判决信息,因此当回溯速度得不到提高时,只有两种方法解决加比选判决信息的存储问题,第一就是降低加比选判决信息的写入速度,从而在不增多存储资源的情况下,使加比选判决信息能够写入回溯和译码完成后释放的存储空间内,第二就是保证数据速率并增多存储资源,在回溯和译码未完成前,将加比选判决信息写入额外增加的存储空间内。因此,当考虑存储资源消耗较少而需要使回溯速度大于加比选判决信息的写入速度时,必须以降低数据速率为代价,而保证数据速率时,又不得不耗费较多的存储资源,增大了译码器的面积。
目前还没有在保证数据速率的情况下,通过真正提高回溯操作的速度,节省Viterbi译码器存储资源的技术方案。
发明内容
本发明实施例提供一种Viterbi译码器中的回溯译码方法,该方法能够在保证数据速率的情况下,提高回溯操作的速度,节省存储资源。
本发明实施例提供一种Viterbi译码器中的回溯译码装置,该装置能够在保证数据速率的情况下,提高回溯操作的速度,节省存储资源。
本发明实施例提供一种Viterbi译码器,该译码器能够在保证数据速率的情况下,提高回溯操作的速度,节省存储资源。
本发明实施例提供一种维特比译码器中的回溯译码方法,译码器中存储有不同时刻的加比选判决信息,该方法具体包括:
所述译码器中的加比选判决信息存储到译码深度时,开始回溯;
开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,并读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;
所述回溯到达译码深度时,对输入码字进行译码。
本发明实施例提供一种维特比译码器中的回溯译码装置,该装置包括:
加比选判决信息存储模块,用于存储不同时刻写入的加比选判决信息;
多倍回溯执行模块,用于在所述加比选判决信息存储模块中的加比选判决信息存储到译码深度后,每一时刻从所述加比选判决信息存储模块中读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;在所述回溯到达译码深度后,对输入码字进行译码。
本发明实施例提供一种维特比译码器,该译码器包括:
分支度量单元,用于接收输入码字,计算输入码字与参考码字的分支度量值;
路径度量值存储单元,用于接收写入的更新后的路径度量值并存储;
路径度量加比选单元,用于接收所述分支度量单元传输的当前时刻各节点的分支度量值,从路径度量值存储单元中读取上一时刻已存储的各节点路径度量值;针对每个节点,将上一时刻的路径度量值与当前时刻该节点对应的两个分支度量值相加,选择相加结果较小的作为当前时刻该节点的路径度量值;将当前时刻选择的各个节点的路径度量值对应路径上的信息,作为当前时刻的加比选判决信息;
多倍回溯译码单元,用于接收所述路径度量加比选单元提供的加比选判决信息并存储;在所述加比选判决信息存储到译码深度后,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;在所述回溯到达译码深度后,对输入码字进行译码。
从上述方案可以看出,本发明实施例提供的Viterbi译码器及其回溯译码方法和回溯译码装置,在加比选判决信息存储到译码深度后,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,在回溯到达译码深度后,对输入码字进行译码。由于在Viterbi译码器中,回溯译码操作所需的加比选判决信息占用译码器大部分的存储资源,而只有在每次回溯和译码都结束时,相应的存储空间才被释放,可以写入新的加比选判决信息。在对数据速率不作限制的情况下,每次回溯读取的加比选判决信息比写入的加比选判决信息多,回溯的节点数增多,更快地到达译码深度从而译码,更快地释放出存储空间,使得加比选判决信息可以向释放出的存储空间写入,提高了有限存储资源的使用率,从而不必耗费额外的存储资源。因此,本发明实施例在对数据速率不作限制即保证数据速率的情况下,通过提高回溯速度,节省了存储资源。
附图说明
图1为现有技术中(2,1,2)卷积码的格图;
图2为现有技术中3指针偶方法的数据流结构示意图;
图3为现有技术中3指针奇方法的数据流结构示意图;
图4为现有技术中单指针方法的数据流结构示意图;
图5为本发明实施例Viterbi译码器中的回溯译码方法流程图;
图6为本发明实施例Viterbi译码器中的回溯译码方法的较佳实施例数据流结构示意图;
图7为本发明实施例Viterbi译码器中的回溯译码装置结构示意图;
图8为本发明实施例Viterbi译码器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图,对本发明实施例进一步详细说明。
本发明实施例提供一种Viterbi译码器中的回溯译码方法,译码器中存储有不同时刻的加比选判决信息,该方法还包括:
所述译码器中的加比选判决信息存储到译码深度时,开始回溯;
开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,并读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;
所述回溯到达译码深度时,对输入码字进行译码。
在上述流程中,将译码器每接收一个输入码字看作一个时刻。
本发明实施例提供的Viterbi译码器的回溯译码方法,在开始回溯后的每一时刻,存储对应该时刻的加比选判决信息,读取已存储的一个以上时刻的加比选判决信息,进行回溯操作,并在回溯到达译码深度后,对输入码字进行译码。因此,回溯操作的速度根据每次可读取的加比选判决信息量,可以是写入加比选判决信息速度的几倍,在对数据速率不作限制的情况下,每次回溯读取的加比选判决信息比写入的加比选判决信息多,回溯的节点数增多,更快地到达译码深度从而译码,更快地释放出存储空间,使得加比选判决信息可以向释放出的存储空间写入,使有限的存储资源得到充分利用而无需额外的存储资源,节省了译码器中的存储资源。并且本发明实施例提供的Viterbi译码器的回溯方法,同时缩小了译码输出的延迟。
本发明实施例提供的Viterbi译码器中的回溯译码方法,关键是在不限制数据速率的情况下,读取加比选判决信息进行回溯操作的速度,大于写入加比选判决信息的速度。本发明实施例提供的回溯译码方法中,也使用回溯指针来指向读取加比选判决信息的地址,可以将本发明实施例提供的回溯译码方法应用于每一回溯指针,因此本发明实施例提供的回溯译码方法可以应用在现有的k指针方法和单指针方法中。
本发明实施例提供的Viterbi译码器中的回溯译码方法,读取已存储的一个以上时刻的加比选判决信息,并不限于是整数个时刻的加比选判决信息,也可以是非整数个时刻的加比选判决信息,例如将对应三个时刻的加比选判决信息分两次读取,相当于每次都读取了1.5个时刻的加比选判决信息。
本发明实施例提供的Viterbi译码器中的回溯译码方法,所述在每一时刻读取一个以上时刻已存储的加比选判决信息,可以有多种实施方式。其中一种较佳的实施方式为:将每一时刻的加比选判决信息存储在一个地址所标识的地址空间中,设置每次同时读取加比选判决信息对应的存储地址的关系,回溯操作中使用的回溯指针每次开始读取时指向一个地址,按照所述设置的存储地址的关系,同时将几个地址中的加比选判决信息读出。另一种较佳实施方式可以为:假设每一时刻同时需要读取2个时刻的已存储加比选判决信息,可以将连续两个时刻的加比选判决信息存储在一个地址对应的存储空间内,这时需要适当扩展每个存储空间的深度,在一次读取中同时将上述一个地址中的对应两个时刻的加比选判决信息读出。总之,通过存储方式以及地址读取方式的不同,本发明实施例中在每一时刻已存储的加比选判决信息的实现可以有多种实现方式。
图5为本发明实施例提供的回溯译码方法流程图,流程开始之前,译码器中存储有不同时刻写入的加比选判决信息,该流程包括:
步骤501:译码器中的加比选判决信息存储到译码深度后,开始回溯。
本步骤中,译码器中存储的不同时刻写入的加比选判决信息存储到译码深度,是回溯开始的条件,即当加比选判决信息存储到译码深度后,可以根据实际需要选择时刻开始回溯。
步骤502:开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,并读取已存储的一个以上时刻加比选判决信息,回溯一个以上节点。
本步骤中,开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,同时进行的还有读取已存储的一个以上时刻加比选判决信息,回溯一个以上节点。
步骤503:回溯到达译码深度时,对输入码字进行译码。
本步骤中,在按照步骤502所述的读取加比选判决信息的方式进行的回溯。回溯到达译码深度时,认为回溯的最后一个节点已经位于最大似然路径上,可以开始对输入码字进行译码。译码开始后,以回溯的最后一个节点作为起点,在每一时刻读出一个节点的加比选判决信息,即得出对应一个时刻的译码结果。在译码操作后,被读出的加比选判决信息对应的存储空间被释放,即可以向被释放的存储空间内继续存储新写入的加比选判决信息。
下面将应用在使用单指针方法进行回溯操作的Viterbi译码器中作为一个较佳实施例,详细说明本发明实施例回溯译码方法中的数据流结构,对于译码器计算分支度量和路径度量加比选的过程,并非本发明实施例讨论的重点,因此在数据流结构的介绍中只涉及写入加比选判决信息、读取加比选判决信息进行回溯以及译码。
在本较佳实施例中设置以下应用场景:译码深度为L,每一时刻对应的各个节点的加比选判决信息为N位;加比选判决信息存储在Viterbi译码器的加比选判决信息存储模块中,将该加比选判决信息存储模块划分为多个存储体,每个存储体的位宽为N,深度为L/2;存储体采用双端口随机存储器(DPRAM)实现,每个存储体中包括使用不同地址标识的不同存储空间;译码器将每一时刻接收输入码字后计算出的加比选判决信息中的加比选判决信息,依次写入各个存储体的连续地址所标识的存储空间中,其中每个地址所标识的一个存储空间存储一个时刻的加比选判决信息;译码器每接收一个输入码字,从加比选判决信息存储模块中读出2个连续地址中的加比选判决信息,回溯2个节点,使用R表示连续读出的地址数;将译码器每接收一个输入码字,设为一个时刻。
根据以上设置的本较佳实施例应用场景,计算划分出的存储体块数应该为R+2=4块,每块存储体的深度为L/R。由于每块存储体都采用DPRAM实现,针对加比选判决信息的存储,采取前述在每一地址对应的存储空间中存储一个时刻的加比选判决信息的实施方式,将连续时刻的加比选判决信息存储在连续地址中,按照应用场景假设即每一时刻读出2个连续地址中的加比选判决信息,由于DPRAM的双端口都可以进行读操作,假设从一个端口读取存储体中加比选判决信息的地址为address1,从另一端口读取存储体中加比选判决信息的地址为address2,则设置在同一端口的存储地址关系满足:address1=address1+2;设置两个端口之间的存储地址关系满足:address2=address1+1。每次读取加比选判决信息时,同时从两个端口中读出连续2个地址中的数据。译码器需要一块深度为L/R的外置LIFO。
图6为本发明实施例Viterbi译码器中的回溯译码方法较佳实施例的数据流结构示意图,其中实心箭头表示加比选判决信息写入路径,空心箭头表示译码输出路径,而虚线箭头表示回溯路径。下面详细介绍上述数据流结构。
本数据流结构从译码器开始接收第一个输入码字描述,在加比选判决信息存储到达译码深度之前,回溯操作还未开始,所以回溯操作开始之前的这一段过程可以称为回溯准备过程,该准备过程的数据流包括:
在存储体1中由低到高,每一时刻向一个地址写入加比选判决信息,直到写满存储体1;在存储体2中由低到高,每一时刻向一个地址写入加比选判决信息,直到写满存储体2;在存储体3中由低到高,每一时刻向一个地址写入加比选判决信息,直到写满存储体3。
按照本发明实施例的设置的应用场景,经过上述回溯准备过程,加比选判决信息在Viterbi译码器内加比选判决信息存储模块中已经到达了译码深度,因此在下一时刻,在存储体3中可以开始进行回溯操作。对于Viterbi译码器中的加比选判决信息到达译码深度后,回溯操作开始的起点,可以根据实际需要具体确定,上述从存储体3开始回溯操作只是一种具体的实施方式。
回溯操作开始后的数据流包括:
1)在存储体3中由高到低,每一时刻读出存储体3中连续2个地址中的加比选判决信息,用于回溯操作,直到将存储体3中的所有地址的加比选判决信息读取完毕;与上述存储体3中的操作同时进行的还有,在存储体4中由低到高,每一时刻向一个地址中写入加比选判决信息,直到写满存储体4的前半部分。由于加比选判决信息的读出速度是加比选判决信息写入速度的2倍,因此当存储体3中的加比选判决信息全部读取完毕时,存储体4中的加比选判决信息正好写满前半部分。
2)在存储体2中由高到低,每一时刻读出存储体2中连续2个地址的加比选判决信息,用于回溯操作,直到将存储体2中的所有地址的加比选判决信息读取完毕;与上述存储体2中的操作同时进行的操作还有,在存储体4中由低到高,每一时刻向一个地址写入加比选判决信息,直到写满存储体4的后半部分。同样的,由于加比选判决信息读出速度是加比选判决信息写入速度的2倍,因此当存储体2中的加比选判决信息全部读取完毕时,存储体4中的加比选判决信息正好写满后半部分。
3)由于在前续操作中,回溯操作经过存储体3和存储体2已经到达译码深度,因此在存储体1中以回溯操作结束的节点为起始,开始译码输出,每一时刻输出一个译码结果,释放存储体1中一个地址对应的存储空间,直到存储体1中后半部分地址对应的存储空间全部释放;在上述译码输出的同时,在存储体1中由高到低,每一时刻对译码输出后释放出的一个地址空间写入加比选判决信息;与上述译码输出和写入加比选判决信息同时进行的操作还有,在存储体4中由高到低,每一时刻读出连续2个地址的加比选判决信息,用于回溯操作,直到将存储体4中的所有地址的加比选判决信息读取完毕。
4)在存储体1中继续译码输出,每一时刻输出一个译码结果,释放存储体1中一个地址对应的存储空间,直到存储体1中前半部分地址对应的存储空间全部释放;在上述译码输出的同时,在存储体1中由高到低,每一时刻对译码输出后释放出的一个地址空间写入加比选判决信息;与上述译码输出和写入加比选判决信息同时进行的还有,在存储体3中由高到低,每一时刻读出连续2个地址的加比选判决信息,直到将存储体3中的所有地址的加比选判决信息读取完毕。
5)经过前续操作,存储体1中已经写满加比选判决信息,并且加比选判决信息的存储深度已达到译码深度,因此在存储体1中由低到高,每一时刻读取连续2个地址的加比选判决信息,用于回溯操作,直至将存储体1中所有地址的加比选判决信息读取完毕;由于经过前续操作,存储体4和存储体3中的回溯操作已经到达译码深度,因此与上述回溯操作同时进行的还有,在存储体2中以回溯操作结束的节点为起始,每一时刻输出一个译码结果,释放存储体2中一个地址对应的存储空间,直到存储体2中后半部分的存储空间全部释放;与上述回溯操作和译码输出同时进行的操作还有,在存储体2中由高到低,每一时刻对存储体2中译码输出后释放的一个地址空间写入加比选判决信息,直至写满存储体2的后半部分。
6)在存储体2中继续译码输出,每一时刻输出一个译码结果,释放存储体2中一个地址对应的存储空间,直到存储体2中前半部分的存储空间全部释放;与此同时,在存储体2中由高到低,每一时刻对存储体2中译码输出后释放的一个地址空间写入加比选判决信息;与上述译码输出和写入加比选判决信息同时进行的还有,在存储体4中由高到低,每一时刻读出连续2个地址的加比选判决信息,用于回溯操作,直到将存储体4中的所有地址的加比选判决信息读取完毕。
上述1)-6)只是译码器回溯过程中的一段数据流过程,回溯操作所应遵循的原则为:回溯操作在到达译码深度之前,只能从一个存储体转移到其相邻的存储体进行。按照上述描述的数据流规则不断的循环往复,就可以得到连续的译码结果,这里对后续的回溯过程不再赘述。从译码器输出的译码结果都进入外置LIFO中,倒序输出后即为译码序列。
本发明实施例Viterbi译码器中的回溯译码方法较佳实施例中,由于对译码深度和回溯操作读取的加比选判决信息地址数设置恰当,使得回溯深度、写入加比选判决信息深度和译码的交接刚好占满各自所占用的存储体,这是一种较佳的实施方式,在实际应用中还可以选择其他数值实现。
在实际应用中,如果回溯速度远大于加比选判决信息的写入速度,则当存储体中已存储的加比选判决信息不够一次回溯所需的数据量时,需等待继续写入的加比选信息到达所需数据量后再开始回溯。
为了证明本发明实施例Viterbi译码器中的回溯译码方法与已有的回溯译码方法在存储资源方面的优势,将本发明实施例回溯译码方法需要的硬件资源,与已有回溯译码方法所需的硬件资源作一个比较。
架构/算法 | RAM块数 | RAM深度 | RAM类型 | LIFO数 | 额外逻辑 | 译码速度 | 备注 |
K指针偶方法 | 2k | L/(k-1) | DPRAM | 2 | 否 | 全速 | |
K指针奇方法 | 2k-1 | L/(k-1) | DPRAM | 2 | 否 | 全速 | |
单指针方法 | k+1 | L/(k-1) | DPRAM | 2 | 否 | 1/k速率 | |
本实施例方法 | R+2 | L/R | DPRAM | 1 | 否 | 全速 | R>1 |
表一
参见表一中所列的数据,将存储体的深度作为比较的基准,如果各个存储体的深度相同,即在取值上k-1=R,例如R=2、k=3,现有的k指针偶方法、k指针奇方法和单指针方法所需的存储体块数显然多于本发明实施例提供的回溯译码方法。虽然按照上述取值方法,现有的单指针方法所需的存储资源与本发明实施例提供的回溯方法相近,但单指针方法无法保证数据速率,而且译码速率较慢。
为进一步证明本发明实施例Viterbi译码器中的回溯译码方法在节省存储资源方面的优势,以(2,1,7)卷积码的Viterbi译码为例,回溯深度为128,在这种情况下,现有技术中的回溯译码方法与本发明实施例提供的回溯译码方法,所消耗的存储资源对比如下:
架构/算法 | RAM块数 | RAM深度 | RAM类型 | LIFO数 | 额外逻辑 | 译码速度 | 备注 |
K指针偶方法 | 6 | 64 | DPRAM | 2 | 否 | 全速 | K=3 |
K指针奇方法 | 5 | 64 | DPRAM | 2 | 否 | 全速 | K=3 |
单指针方法 | 4 | 64 | DPRAM | 2 | 否 | 1/3速率 | K=3 |
本实施例方法 | 4 | 64 | DPRAM | 1 | 否 | 全速 | R=2 |
表二
如表二所列出的对比数据可以看出,在同样的译码深度下,本发明实施例提供的回溯译码方法,相比于k指针偶方法和k指针奇方法,译码速率都为全速,但本发明实施例提供的回溯译码方法中,存储资源的消耗明显少了很多;而相对于单指针方法,虽然使用的存储资源相同,但本发明实施例提供的回溯译码方法,译码速度是单指针方法的3倍。
由于Viterbi译码器总是应用于一个实体系统中,Viterbi译码器接收输入码字的速率与系统时钟之间可以有不同的对应关系,这时实现本发明实施例提供的回溯方法,同时回溯一个以上节点就可以采取不同的实施方式。例如,如果Viterbi译码器接收输入码字的速率与系统时钟相同,则每一次同时完成一个以上节点的回溯可以采取纯组合逻辑以进行全速译码;当Viterbi译码器接收输入码字的速率为系统时钟的1/n时,即每个码字对应n个系统时钟,则每一次同时完成一个以上节点的回溯可以采取n级流水线方式,不降低全速译码的同时提高译码器的运行时钟。
其次,介绍本发明实施例提供的Viterbi译码器中的回溯译码装置,该装置可以按照本发明实施例提供的Viterbi译码器中的回溯译码方法设计。
图7为本发明实施例Viterbi译码器中的回溯译码装置结构示意图,该装置中包括:加比选判决信息存储模块和多倍回溯执行模块。
所述加比选判决信息存储模块,用于存储不同时刻写入的加比选判决信息;
所述多倍回溯执行模块,在所述加比选判决信息存储模块中的加比选判决信息存储到译码深度后,每一时刻从加比选判决信息存储模块中读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,在所述回溯到达译码深度后,对输入码字进行译码。
本发明实施例提供的Viterbi译码器的回溯译码装置,加比选判决信息存储模块存储加比选判决信息,而多倍回溯执行模块在加比选判决信息存储到译码深度后,从加比选判决信息存储模块中,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,并在回溯到达译码深度后,对输入码字进行译码。因此,回溯操作的速度根据每次可同时读取的加比选判决信息量,可以是写入加比选判决信息速度的几倍,在对数据速率不作限制的情况下,每次回溯读取的加比选判决信息比写入的加比选判决信息多,回溯的节点数增多,更快地到达译码深度从而译码,更快地释放出存储空间,使得加比选判决信息可以向释放出的存储空间写入,节省了译码器中的存储资源。
在上述本发明实施例提供的Viterbi译码器的回溯译码装置中,加比选判决信息存储模块可以包括一个以上存储体,每个存储体中包括以不同地址标识的不同存储空间。加比选判决信息的存储方式,可以使用前述已经介绍过的一个较佳实施方式,即每一个地址所标识的一个存储空间中,存储一个时刻的加比选判决信息,连续时刻的加比选判决信息存储在连续地址中。
上述存储体的个数为多倍回溯执行模块在每一时刻回溯的节点数与2相加的结果,例如如果同时回溯的节点数为2,则回溯执行模块中可以包括4块存储体。每个存储体都可以使用DPRAM实现。
最后,介绍本发明实施例提供的Viterbi译码器。图8为本发明实施例Viterbi译码器的结构示意图,该译码器中包括:分支度量单元、路径度量加比选单元、路径度量值存储单元和多倍回溯译码单元。
分支度量单元,用于接收译码器外部输入的编码码字,计算所接收码字与当前时刻各节点的分支度量值。
路径度量加比选单元,用于接收所述分支度量单元传输的当前时刻各节点的分支度量值,从路径度量值存储单元中读取上一时刻已存储的各节点路径度量值;针对每个节点,将上一时刻的路径度量值与当前时刻该节点对应的两个分支度量值相加,选择相加结果较小的作为当前时刻该节点的路径度量值;将当前时刻选择的各个节点的路径度量值对应路径上的数值,作为对应当前时刻的加比选判决信息。
路径度量值存储单元,用于接收路径度量加比选单元写入的更新后的路径度量值并存储。
多倍回溯译码单元,用于接收路径度量加比选单元写入的加比选判决信息存储,在所述加比选判决信息存储到译码深度后,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,在所述回溯到达译码深度后,对输入码字进行译码。
本发明实施例提供的Viterbi译码器,内部的多倍回溯译码单元在存储加比选判决信息到达译码深度后,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,在对数据速率不作限制的情况下,每次回溯读取的加比选判决信息比写入的加比选判决信息多,回溯的节点数增多,更快地到达译码深度从而译码,更快地释放出存储空间,使得加比选判决信息可以向释放出的存储空间写入,从而可以减少消耗的存储资源。
本发明实施例提供的Viterbi译码器中的回溯译码装置,可以作为本发明实施例提供的Viterbi译码器中多倍回溯译码单元的较佳实施例,即多倍回溯译码单元中可以进一步包括:加比选判决信息存储模块和多倍回溯执行模块。
加比选判决信息存储模块,用于接收路径度量加比选单元写入的加比选判决信息存储。
多倍回溯执行模块,用于在所述加比选判决信息存储模块中的加比选判决信息到达译码深度后,每一时刻从加比选判决信息存储模块中读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点,在所述回溯到达译码深度后,对输入码字进行译码。
也可以将上述加比选判决信息存储模块划分为多个存储体,每个存储体中包括以不同地址标识的不同存储空间。加比选判决信息的存储方式,可以使用前述已经介绍过的一个较佳实施方式,即每一个地址所标识的一个存储空间中,存储一个时刻的加比选判决信息。每个存储体都可以使用DPRAM实现。
除了上述较佳实施例,本发明实施例提供的Viterbi译码器中的多倍回溯译码单元,还可以使用其他完成相同功能的装置实现。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1、一种维特比译码器中的回溯译码方法,其特征在于,译码器中存储有不同时刻写入的加比选判决信息,该方法具体包括:
所述译码器中的加比选判决信息存储到译码深度后,开始回溯;
开始回溯后的每一时刻,向译码器中存储对应该时刻的加比选判决信息,并读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;
所述回溯到达译码深度时,对输入码字进行译码。
2、如权利要求1所述的回溯方法,其特征在于,所述加比选判决信息存储在以不同地址标识的不同存储空间中,每个地址标识的存储空间存储一个时刻写入的加比选判决信息;
所述读取已存储的一个以上时刻的加比选判决信息为:读取一个以上地址中已存储的加比选判决信息;
所述译码为:读出一个地址中一个节点对应的加比选判决信息。
3、如权利要求2所述的回溯方法,其特征在于,所述读取已存储加比选判决信息为:读取2个连续地址中已存储的加比选判决信息;所述回溯一个以上节点为:回溯2个节点。
4、如权利要求3所述的回溯方法,其特征在于,所述读取2个连续地址中已存储的加比选判决信息为:同一时刻通过两个端口同时读出连续2个地址中存储的2个时刻的加比选判决信息;
设当前时刻从一个端口读取加比选判决信息的地址为address1,下一时刻从另一端口读取加比选判决信息的地址为address2,设置同一端口存储地址关系满足:address1=address1+2;两个端口之间的存储地址关系满足:address2=address1+1。
5、如权利要求1所述的回溯方法,其特征在于,所述加比选判决信息存储在以不同地址标识的不同存储空间中,每个地址标识的存储空间存储一个以上时刻写入的加比选判决信息;
所述读取已存储的一个以上时刻的加比选判决信息为:读取一个地址中已存储的一个以上时刻的加比选判决信息。
6、一种维特比译码器中的回溯译码装置,其特征在于,该装置包括:
加比选判决信息存储模块,用于存储不同时刻写入的加比选判决信息;
多倍回溯执行模块,用于在所述加比选判决信息存储模块中的加比选判决信息存储到译码深度后,每一时刻从所述加比选判决信息存储模块中读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;在回溯到达译码深度时,对输入码字进行译码。
7、如权利要求6所述的回溯译码装置,其特征在于,所述加比选判决信息存储模块包括一个以上存储体,每个存储体中包括以不同地址标识的不同存储空间,每个地址标识的存储空间存储至少一个时刻写入的加比选判决信息。
8、如权利要求7所述的回溯译码装置,其特征在于,所述存储体的个数为每一时刻回溯的节点数加2。
9、一种维特比译码器,其特征在于,该译码器包括:
分支度量单元,用于接收输入码字,计算输入码字与参考码字的分支度量值;
路径度量值存储单元,用于接收写入的更新后的路径度量值并存储;
路径度量加比选单元,用于接收所述分支度量单元传输的当前时刻各节点的分支度量值,从路径度量值存储单元中读取上一时刻已存储的各节点路径度量值;针对每个节点,将上一时刻的路径度量值与当前时刻该节点对应的两个分支度量值相加,选择相加结果较小的作为当前时刻该节点的路径度量值;将当前时刻选择的各个节点的路径度量值对应路径上的数值,作为当前时刻的加比选判决信息;
多倍回溯译码单元,用于接收所述路径度量加比选单元提供的加比选判决信息并存储;在所述加比选判决信息存储到译码深度后,每一时刻读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;在所述回溯到达译码深度后,对输入码字进行译码。
10、如权利要求9所述的译码器,其特征在于,所述多倍回溯译码单元包括:加比选判决信息存储模块和多倍回溯执行模块;
所述加比选判决信息存储模块,用于接收路径度量加比选单元提供的加比选判决信息存储;
所述多倍回溯执行模块,在所述加比选判决信息存储模块中的加比选判决信息存储到译码深度后,每一时刻从加比选判决信息存储模块中读取已存储的一个以上时刻的加比选判决信息,回溯一个以上节点;在所述回溯到达译码深度后,对输入码字进行译码。
11、如权利要求10所述的译码器,其特征在于,所述加比选判决信息存储模块包括一个以上存储体,每个存储体中包括以不同地址标识的不同存储空间,每个地址标识的存储空间存储至少一个时刻写入的加比选判决信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710137681 CN101090274A (zh) | 2007-07-31 | 2007-07-31 | 一种维特比译码器及其回溯译码方法和回溯译码装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200710137681 CN101090274A (zh) | 2007-07-31 | 2007-07-31 | 一种维特比译码器及其回溯译码方法和回溯译码装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101090274A true CN101090274A (zh) | 2007-12-19 |
Family
ID=38943471
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200710137681 Pending CN101090274A (zh) | 2007-07-31 | 2007-07-31 | 一种维特比译码器及其回溯译码方法和回溯译码装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101090274A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102123009A (zh) * | 2011-03-18 | 2011-07-13 | 京信通信系统(广州)有限公司 | 一种动态维特比解码方法及装置 |
CN102291198A (zh) * | 2010-06-18 | 2011-12-21 | 中兴通讯股份有限公司 | 信道译码方法和装置 |
WO2012034398A1 (zh) * | 2010-09-15 | 2012-03-22 | 中兴通讯股份有限公司 | 维特比解码实现方法及装置 |
CN103346860A (zh) * | 2013-06-21 | 2013-10-09 | 安徽华东光电技术研究所 | 一种无线传输系统的译码单元及其译码方法 |
CN104617960A (zh) * | 2014-12-30 | 2015-05-13 | 成都天奥信息科技有限公司 | 一种应用于海事卫星电话的维特比解码方法 |
CN111614363A (zh) * | 2019-02-26 | 2020-09-01 | 扬智科技股份有限公司 | 维特比算法的改进方法和接收装置 |
-
2007
- 2007-07-31 CN CN 200710137681 patent/CN101090274A/zh active Pending
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102291198A (zh) * | 2010-06-18 | 2011-12-21 | 中兴通讯股份有限公司 | 信道译码方法和装置 |
CN102291198B (zh) * | 2010-06-18 | 2014-08-20 | 中兴通讯股份有限公司 | 信道译码方法和装置 |
WO2012034398A1 (zh) * | 2010-09-15 | 2012-03-22 | 中兴通讯股份有限公司 | 维特比解码实现方法及装置 |
US9100050B2 (en) | 2010-09-15 | 2015-08-04 | Zte Corporation | Method and device for implementing Viterbi decoding |
CN102123009A (zh) * | 2011-03-18 | 2011-07-13 | 京信通信系统(广州)有限公司 | 一种动态维特比解码方法及装置 |
CN102123009B (zh) * | 2011-03-18 | 2015-02-11 | 京信通信系统(广州)有限公司 | 一种动态维特比解码方法及装置 |
CN103346860A (zh) * | 2013-06-21 | 2013-10-09 | 安徽华东光电技术研究所 | 一种无线传输系统的译码单元及其译码方法 |
CN103346860B (zh) * | 2013-06-21 | 2016-04-27 | 安徽华东光电技术研究所 | 一种无线传输系统的译码单元及其译码方法 |
CN104617960A (zh) * | 2014-12-30 | 2015-05-13 | 成都天奥信息科技有限公司 | 一种应用于海事卫星电话的维特比解码方法 |
CN111614363A (zh) * | 2019-02-26 | 2020-09-01 | 扬智科技股份有限公司 | 维特比算法的改进方法和接收装置 |
CN111614363B (zh) * | 2019-02-26 | 2023-03-24 | 扬智科技股份有限公司 | 维特比算法的改进方法和接收装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101777924B (zh) | 一种Turbo码译码方法和装置 | |
EP0926836B1 (en) | Viterbi decoding apparatus and viterbi decoding method | |
CN101090274A (zh) | 一种维特比译码器及其回溯译码方法和回溯译码装置 | |
CN103262425B (zh) | 无竞争存储访问的系统和方法 | |
US5151904A (en) | Reconfigurable, multi-user viterbi decoder | |
EP1102408B1 (en) | Viterbi decoder | |
CN100517984C (zh) | 用于移动通信系统的维特比/涡轮联合译码器 | |
JP2007068155A (ja) | 並列のターボ復号機中でのインターリーブの方法およびシステム。 | |
CN105356891B (zh) | 一种高资源利用率的极性译码批处理方法 | |
US7277507B2 (en) | Viterbi decoder | |
EP0819341A1 (en) | Multiport ram for use within a viterbi decoder | |
CN100508405C (zh) | 提高Turbo码译码速度的并行译码方法及译码装置 | |
CN101114834A (zh) | 一种ldpc码的编码器装置及编码方法 | |
CN101707510B (zh) | 一种高速Turbo译码方法和装置 | |
CN101834614B (zh) | 节省存储资源的多元ldpc码译码方法及装置 | |
CN1983827A (zh) | 分量编码器及其编码方法和双输入Turbo编码器及其编码方法 | |
US8401126B2 (en) | Viterbi decoding apparatus | |
US6351839B1 (en) | State metric memory of viterbi decoder and its decoding method | |
Han et al. | High performance Viterbi decoder using modified register exchange methods | |
CN100505557C (zh) | 基于Viterbi译码的多路并行循环块回溯方法 | |
US6385258B1 (en) | Viterbi decoder for use in a mobile communication system | |
JPS6397019A (ja) | 畳み込み符号器 | |
CN101106385B (zh) | 一种维特比译码装置及方法 | |
CN1787386A (zh) | 一种维特比译码器路径度量存储的方法 | |
US20090172504A1 (en) | Memory architecture for viterbi decoder and operating method therefor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20071219 |