CN1446406A - 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 - Google Patents
在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 Download PDFInfo
- Publication number
- CN1446406A CN1446406A CN01810587A CN01810587A CN1446406A CN 1446406 A CN1446406 A CN 1446406A CN 01810587 A CN01810587 A CN 01810587A CN 01810587 A CN01810587 A CN 01810587A CN 1446406 A CN1446406 A CN 1446406A
- Authority
- CN
- China
- Prior art keywords
- xor
- source
- packet
- grouping
- state
- 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
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/39—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
- H03M13/41—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
- H03M13/4107—Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing add, compare, select [ACS] operations
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明揭示一种能够在存储器中有效读取并存储状态量度的方法和设备以提高高速ACS维特比译码器的性能。该方法包括应用定址方案在处理周期中确定源状态量度的地址位置。在处理周期中从那些地址位置读取源状态量度并把它们应用到维特比算法实现的相加-比较-选择蝶形操作中以产生目标状态量度。随后该方法把每个目标状态量度存储在由源状态量度先前占据的地址位置中。该方法进一步提供根据处理循环计数器确定源状态量度地址位置的定址方案,该计数器根据处理周期递增并轮转。该方法还提供使用预定函数确定源状态量度的地址位置的定址方案。
Description
发明背景
发明领域
本发明一般涉及维特比(Viterbi)算法的应用。本发明尤其涉及为了提高维特比实现中高速相加-比较-选择(ACS)蝶形操作的性能而存储和检索状态量度的新颖方法和设备。
相关技术描述
维特比算法是在1967年首先作为对卷积编码信号进行译码的方法而引入的。由于它的引入,该算法在数据通信、数据记录和数字信号处理的领域中得到了广泛的承认。在不同数字估计应用中已成功使用了该算法,包括存储媒介中记录误差的减少、符号间干扰的去除以及字符和文本识别的提高。
因此,维特比算法已成为对卷积编码数据进行纠错译码最重要的方法。对于这样的应用,根据一系列观察,维特比算法确定具有通过代表所有可能编码器状态的网格的最小误差量度的路径。沿着这个“最短路径”的状态序列对应着由卷积编码其最大可能产生的序列。
图1A示出了典型的卷积编码器。该卷积编码器100包括8位分接移位寄存器110和一对异或型累加器120,它把位序列从输入位流U(D)105转换为输出码符号C0(D)、C1(D)的成对序列125。尤其图1A说明了为从输入位流U(D)105输入的每个位产生一组两个输出编码符号C0(D)、C1(D)125的1/2速率码的例子。值得注意的是,示出的特定码率和配置仅仅只是说明性的但并不限制本发明不同实施例的操作和范围。同样,结合以下所述的发明的实施例可以使用不同码率,比如1/3或3/4。
编码器100根据由码生成多项式G0(D)、G1(D)指定的特定移位寄存器配置,通过对输入位流U(D)105进行移位和异或累加,产生序列125的每个输出码符号对C0(D)、C1(D)。在这种情况下,图1A描述了对应1/2速率码生成多项式G0(D)=1D2D4D7的配置。多项式G0(D)的系数与输入位流U(D)105进行卷积,以产生序列125的输出卷积码符号C0(D)。相似地,图1A也示出了对应1/2速率码生成多项式G1(D)=1D2D5的配置,它的系数与输入位流U(D)105进行卷积,以产生序列125的输出卷积码符号C1(D)。
编码器100的约束长度K比移位寄存器110中的延迟元件个数要多1。例如对于编码器100,约束长度K等于9。对于输入到编码器100的输入位流U(D)105的每个数据位,序列125输出码符号对C0(D)、C1(D)可以根据所输入的位以及前K-1个输入位。因此,编码器100产生能够跨越2K-1个可能编码器状态的输出码符号对。
在典型的通信系统中,实质上对序列125的输出码符号对C0(D)、C1(D)进行调制并把它通过噪声信道(未示出)发送。最后译码器接收带噪声的卷积编码数据流并使用维特比算法(它利用了卷积码的特性)最终确定输入位流U(D)105。
卷积码的一个优点是它们高度重复的结构,它提供对称码树。这样的对称减少在定位最大可能路径中需要估计的状态数量。此外,在对这一对称码进行译码时,只有对引起256个可能编码器状态的每个的最大可能路径感兴趣。所有其它路径可以无需进一步考虑,因为通过一个状态的最大可能全局路径必须包括通过该状态的最大可能本地路径。(注意在一些维特比算法的应用中,可以推迟关于哪条本地路径是最大可能的判决直到有关后续状态的信息可用。)
维特比译码器根据这些码特性用作具有有限状态转移组的有限状态机。译码器假设2K-1个可能的编码器状态的每一个,并确定把编码器从那些状态的每个状态转移到下一组2K-1个可能的编码器状态的每个状态的概率。在这种情况下,转移概率是基于从所接受的带噪声的卷积编码数据流得到的观测的。
每个状态转移的概率是由称作为量度的量表示的,它表示该状态转移和在输入数据流中的那点所实际观测到的之间的距离(例如在译码空间中)。例如根据特定应用,这个距离可表示为汉明距离、欧基里德距离或概率值的负对数。很清楚,该量度越小,发生的概率就越高。有两类量度:状态量度和分支量度。状态量度表示所发送的码符号组通过特定状态的相对概率。分支量度表示(假设源状态是正确的)从特定源状态到特定目标状态发送转移的条件概率。
如图1B所示,维特比算法通过使用相加-比较-选择(ACS)单元150有效实现。ACS单元150计算目标状态量度值,并且还依靠ACS蝶形操作表征源和目标状态的关系。图2描述了单个ACS蝶形操作155,它只估计对于编码器100中两个特定邻近源状态所可能发生的状态转移。这个限制部分由于这样一个事实:在给定时刻,编码器100状态是右移1位的编码器先前状态。下一个(右移)信息位确定从源状态进行哪个转移并作为目标状态的最高有效位(MSB)。对于二进制数据流,源状态只有两个可能的状态可以转移。这样,如图2所示,编码器100根据所输入的位流U(D)105的数据位的值,只从源状态“x0”转移到目标状态“0x”或“1x”,并从源状态“x1”转移到目标状态“0x”或“1x”。在该图中以及其他地方,符号“x0”和“x1”表示源状态的最低有效位(LSB)分别是“0”和“1”,同时较高位表示为“x”,并且符号“0x”和“1x”分别表示目标状态的MSB是“0”或“1”,同时较低位表示为“x”。项“x”表示它包括在源状态号中或包括在目标状态号中的相同值(例如7位值)。
图2也揭示了从源状态到目标状态的每对转移产生假设的码符号对H0(D)、H1(D)或
H0(D)、
H1(D)。事实上,当最大可能转移沿着ACS蝶形155的平行分支(例如从“x0”到“0x”,从“x1”到“1x”)时,产生这对H0(D)、H1(D)。这个特点部分是由于一般卷积码的重复特点,以及使用具有其归一化MSB和LSB的码生成多项式引起的(即对于G0(D)和G1(D),因子g0和g7都等于1)。以相似方式,当最大可能转移沿着ACS蝶形的对角分支(例如从“x0”到“1x”,从“x1”到“0x”)时,产生码符号
H0(D)、
H1(D)。
如上所述,ACS 150单元计算目标状态量度tm0x、tm1x。ACS 150逻辑接收源状态量度smx0、smx1,它们与所接受组n个码符号分别由原状态“x0”和“x1”引起的概率有关。回到图1B,接收了码符号组后,分支量度单元140就计算分支量度bmi,j、bm
i,j
。分支量度bmi,j、bm
i,j
表示发生从特定源状态转移到特定目标状态的条件概率。特别对于1/n码率的卷积码,分支量度bmi,j表示这组n个所接收的码符号匹配假设码符号组H0(D)、H1(D)如何接近,而分支量度bm
i,j
表示这组n个所接收的码符号匹配假设组
H0(D)、
H1(D)如何接近。ACS 150把与两个通向特定目标状态的转移的每个对应的分支量度bmi,j、bm
i,j
与对应源状态量度smx0、smx1“相加”。
然后对于两个目标状态的每个,ACS 150“比较”源状态量度与通向那个目标状态的分支量度对的和。随后由ACS 150“选择”最大可能转移成由最小量度和表示每个目标状态,并指定那个目标状态作为目标状态量度tm0x、tm1x。
如上所述,对于两个通向目标状态的转移的每个,ACS 150逻辑把分支量度bmi,j、bm
i,j
与源状态量度smx0、smx1“相加”,并判决来自产生较小量度值转移到目标状态的最大可能路径。随后较小量度和成为新的目标状态量度tm0x、tm1x。ACS150还将目标状态量度(即与通向每个目标状态的最大可能路径相关的花销)存储到状态随机存取存储器(RAM)145中。如图1B所示,在回链存储单元160的路径存储器中,最小量度和的选择导致占优源状态量度的LSB的存储,它被称作为判决位。
为了帮助现有技术的描述,我们把处理周期定义为通过对两个连续具有n个所接收符号的组进行蝶形操作计算K-1个编码器状态的两个完整(且连续)层次的新目标状态量度所需的时钟周期数。例如,如图2所述,具有单一ACS蝶形155的维特比译码器一般每时钟周期产生两个目标状态,并由此每个所接收码符号需要128个时钟周期进行所有256个编码器100状态的ACS操作(即一个完整层次)。因此,这样译码器的处理周期被定义为256个时钟周期。为了改善处理速度,使用多个ACS蝶形155的ACS蝶形阵列结构可用于减少每个处理周期的时钟周期数。
如图3所示,这样的结构的一个例子就是2×2的ACS蝶形阵列300,它为了改善处理速度在两个连续接收的码符号上操作。如上所述,ACS蝶形155读取两个源状态(例如状态x0和x1),并计算两个目标状态(例如状态0x和1x)。对于约束长度K=9的编码器100,x表示7位位置标示符(即x=[x6,x5,x4,x3,x2,x1,x0]),它在128个时钟周期的时段上从0增加到127。例如,如果x=0000000,2×2的ACS蝶形阵列300就从存储器(例如状态RAM 145)读取一个分组四个源状态=00000000、0000 0001、0000 0010和0000 0011(即00(H)、01(H)、02(H)和03(H),其中标号(H)表示十六进制数)。随后2×2的ACS蝶形阵列300计算对应分组四个目标状态=0000 0000、1000 0000、0100 0000、1100 0000(即00(H)、80(H)、40(H)和C0(H))并把它们写入存储器。由于输出分组中一些目标状态(例如00(H)、80(H)、01(H)和81(H))可以表示与输入分组(例如00(H)、01(H)、02(H)和03(H))中源状态不同的编码器状态,所以就把目标状态的输出分组存储到不同的存储器位置(例如在状态RAM 145内)。在这种方式中,蝶形阵列300可以在64个时钟周期中完成一个处理周期(对于K=9)。
图4A、4B中所示,另一个例子就是4×2的ACS蝶形阵列400,并且它在1999年10月21日提交的美国专利申请第09/422920号题为《High-Speed ACS for维特比Decoder Implementations》的专利申请中提出,它已转让给本发明的受让人并通过引用在这里合并。4×2的ACS蝶形阵列400通过实现两组平行的四个ACS蝶形155使处理速度提高了8倍。在每个时钟周期期间,阵列400的第一级读取一个分组八个源状态并对于一组n个所接收的码符号计算对应分组八个中间目标状态量度。参数X(图4中包括作为源状态和目标状态的一部分)表示4位位置标示符(即X=[X3,X2,X1,X0]),它在16个时钟周期的时段上从0增加到15。重新安排中间目标状态以进入阵列400的第二级(作为源状态),并且对于后续组n个所接收码符号计算对应分组八个目标状态量度。这样,蝶形阵列400能够只在32个时钟周期对于K=9计算两组每组n个所接收码符号的完整目标状态量度组。
还有另一个例子的结构是修正的8×1 ACS蝶形阵列500,它在图5A、5B以及以上通过引用结合的美国专利申请第09/422920号的专利申请中都有说明。阵列500也通过实现八个并行的ACS蝶形单元155提供8倍处理速度的改进。对于一组n个所接收的码符号,8×1蝶型阵列500使用所有八个蝶型单元155来读取16个源状态的分组并在一个时钟周期内计算对应分组的16个目标状态量度(如4位计数器X所识别的)。在下一个时钟周期期间,蝶型阵列500使用所计算的目标状态作为后续组的n个所接收的码符号的源状态。这样,对于两个所接收的码符号,8×1蝶型阵列500在32个时钟周期内计算所有256个可能编码器100状态(即一个处理周期)的目标状态量度。
一般地,如以上所述的ACS结构需要状态RAM分为两个分离区域。从一个区域读取源状态,同时把目标状态写入第二区域。当源状态已消耗时(例如每个处理周期之后),存储器区域就开始起作用(即读取先前写入的目标状态并重写先前读取的源状态)。这个双缓冲操作一直持续直到计算了所有256个目标状态。虽然双缓冲操作可能是浪费的(例如芯片区域的浪费),但是还是采用了该技术,这是因为输出分组中产生的目标状态至少有一些对应与消耗产生它们的源状态不同的编码器状态。
为了消除双缓冲的需要,在1998年8月4日提交的美国专利申请第09/129021号题为《Single RAM Add-Compare-Select Unit for Serial维特比Decoder》的专利申请中提出了一种技术,它已转让给本发明的受让人并通过引用在这里合并。所提出的技术试图通过提供确定读取每个源状态的地址的新颖定址方案来克服双缓冲。在这个技术中,每当处理完整的一组2K-1个源状态,模N ACS循环计数器就递增(N是依据特定结构的)。为了得到每个源状态存储器读取地址,该定址方案轮转要处理的源状态号,其中由模N ACS循环计数器的值表示要轮转的位数,并且每个源状态号的范围是0到2K-1。例如,在第一ACS周期期间,不进行轮转。在第二ACS周期期间,通过使状态号轮转1得到每个源状态的读取地址。在第三ACS周期,使状态号轮转2以得到每个源状态的读取地址。在每个后续的ACS周期中,计数器持续增加1直到ACS周期计到N-1,在这个点再重复这个模式。
对于并行的ACS蝶形结构,希望最大化在一个时刻从存储器读出的(写入存储器的)状态数。此外,为了优化存储器的使用,还希望把所计算的目标状态写入对应消耗的源状态的相同存储器位置(即读取地址)。然而,为了有效作用需要使写入操作延迟若干时钟周期,直到计算一定数量的连续目标状态。这样,把所计算的目标状态暂时存储在管道寄存器中,直到计算连续号的目标状态,在这时,把连续的目标状态写入具有连续地址的存储器位置。需要指出的是,虽然这样的实现避免了双缓冲,它们需要的管道寄存器数却随着所计算的目标状态数的增加而增加。增加管道寄存器数就增加了电路的复杂性、增加了电路的面积,且利用电源效率低。由于使用并行ACS蝶形155(如上述的2×2和4×2配置)的ACS蝶形结构来改善性能,这样就进一步加重了所需要的管道寄存器数。
因此所需要的是一种能够在单一存储器中以提高高速ACS蝶形操作性能的方式定位并存储状态的方法和设备。
发明概述
符合本发明原理的方法和设备通过提供一种能够在单一存储器中以提高高速ACS蝶形操作性能的方式定位并存储状态的方法和设备针对以上所提到的需要。
因此,在示例实施例中,本发明包括应用定址方案在处理周期中确定源状态量度的地址位置。在处理周期中从那些地址位置读取源状态量度并把它们应用到维特比算法实现的相加-比较-选择蝶形操作中以产生目标状态量度。随后该方法把目标状态量度存储在由所读取的源状态量度先前占据的地址位置或位置中。该方法进一步提供根据处理循环计数器确定源状态量度地址位置的定址方案,该计数器根据处理周期递增并轮转。该方法还提供使用预定函数确定源状态量度的地址位置的定址方案。
附图简述
并入说明书并组成该说明书一部分的附图说明了本发明的实施例,并和该说明书一起说明本发明的目的、优点和原理,在图中:
图1A是说明K=9、码率=1/2的卷积编码器框图。
图1B是描述ACS和回链单元的系统框图。
图2是说明基本ACS蝶形操作的转移图。
图3是描述2×2 ACS蝶形阵列的转移图。
图4A、4B是描述4×2 ACS蝶形阵列的转移图。
图5A、5B是描述8×1 ACS蝶形阵列的转移图。
图6是描述本发明实施例的高级流程图。
图7是说明支持根据本发明实施例方法或设备的状态RAM的配置的示意图。
图8是说明支持根据本发明实施例方法或设备的状态RAM的配置的示意图。
图9A是源状态号的示意图。
图9B是根据本发明实施例的方法或设备的状态RAM中图9A源状态的位置示意图。
图10A是源状态号的示意图。
图10B是根据本发明实施例的方法或设备的状态RAM中图10A源状态的位置示意图。
图11是根据本发明实施例的设备框图。
较佳实施例详述
以下本发明详细描述涉及说明符合本发明实施例的附图。其他实施例也是可能的,并且可以不离开本发明的主旨和范围对实施例进行修改。因此,以下详细描述不意味着限制本发明,而本发明的范围由所述权利要求书限定。
如下所述,本发明可以图中说明的实例中的软件、固件和硬件的许多不同实施例实现。实现本发明所使用的实际软件代码或专用控制硬件不限定本发明。这样,将不特别参照实际软件代码或专用硬件部件描述本发明的操作和行为,因为在这里提供该描述使本领域普通技术人员能设计软件和控制硬件实现本发明的较佳实施例。
图6是描述根据本发明实施例构造和操作的高级流程图。可以把这样的过程存储在任何存储设备中,例如计算机系统(非易失性)存储器、光盘、磁带或磁盘。此外,当制造计算机系统时或之后通过计算机可读取媒介对这样的过程进行编程。这样的媒介包括以上参照存储设备列出的任何形式,并且进一步包括,例如载波调制或另外的操作以传送机器可读取代码,包括可读取、可解调/解码和/或可由一个或多个计算机、微处理器、数字信号处理器或其他逻辑元件阵列执行的指令。
如用于支持图6过程的状态RAM被分为多个存储体,每个存储体包括多个存储位置,并且每个存储位置容纳多个状态。所使用的存储体数是依据期望结构、速度和管道寄存器数的。此外,在每个存储位置存储的状态数越大,需要的管道寄存器数越大。通过把存储器分为多个存储体,就可以减少所需要的管道寄存器数,从而得到较少的管道寄存器延迟。这样的配置允许以更复杂的地址生成逻辑为代价,用较少的寄存器快速写入目标状态。
在一个示例实现中,比如以上所述的4×2 ACS蝶形阵列400,把状态RAM分为两个存储体(例如存储体0和存储体1),每个存储体具有32个部分,每个部分存储4个状态(见图7)。由唯一的6位地址(例如b5、b4、b3、b2、b1、b0)识别每个存储体中32个部分的每个,而LSB(即b0)用作存储体选择参数,较高5位(即b5、b4、b3、b2、b1)指定所选存储体内的该部分地址。在这个特定例子中,所存储的状态标号m0到m7可以分别对应图4B中的源状态标号00(H)到07(H),或者可以使用其它对应。在每个存储体中的32个部分的每个存储256个可能状态的4个,两个存储体存储全部256个状态。
在另一个示例实现中,比如以上所述的8×1 ACS蝶形阵列500,把状态RAM分为两个存储体,每个存储体具有16个部分,每个部分存储8个状态(见图8)。由唯一的5位地址(例如b4、b3、b2、b1、b0)识别每个存储体中16个部分的每个,而LSB(即b0)用作存储体选择参数,较高4位(即b4、b3、b2、b1)指定所选存储体内的该部分地址。在这个特定例子中,所存储的状态标号m0到m15可以分别对应图5B中的源状态标号00(H)到0F(H),或者可以使用其它对应。在每个存储体中的16个部分的每个存储256个可能状态的8个,两个存储体存储全部256个状态。
如在框B610、B615和B660中所示,执行步骤直到完成期望数量的处理周期。如框B617中所示,在处理周期中对于每个源状态分组(以环路或管道方式)执行框B620到B650的任务。
在框B620中,把定址方案应用于确定状态RAM中每个源状态分组的读取地址。如以下将所述,通过把经过蝶形ACS操作计算的目标状态存储回先前由消耗的源状态占据的存储器位置来减少缓冲的需要。这个操作是允许的,因为一旦存储在状态RAM中的源状态具有它所消耗的值,那么直到下一个处理周期才会为读取而再一次访问该状态。
然而值得注意的是,为了进行这样的操作,不希望由二进制值标号ci到c1指定的,根据以每个分组状态数为模的分组内其中一个源状态的源状态分组号(定义为从0到2K-1范围的数)从状态RAM中读取源状态,其中i是源状态数/每个分组状态数这个数量以2为底的对数。此外,不希望从在多个区分存储体的每个中的同一相对位置读取每部分源状态。如以下所述,以允许对应产生的目标状态分组根据其分组号存储在状态RAM中的方式确定源状态分组的读取地址(例如以连续的顺序)。(在本发明实施例的不同实现中,可以用允许源状态分组根据其分组号读取的方式确定目标状态分组的写入地址(例如以连续的顺序)。)
在一个示例实现中,通过根据模N ACS循环计数器的值(其中N依据特定结构)轮转分组号确定源状态分组读取地址。每当处理完全组2K-1个源状态时,模NACS循环计数器就递增。在这个定址方案中,根据ACS周期计数轮转要处理的每个源状态分组的分组号,以得到那个分组的读取地址。例如对于并行的ACS蝶形400和500,对于每个处理周期,模N计数器增加2。
由二进制值标号ci到c0指定源状态分组部分号,并被定义为以每个分组状态数为模的分组部分内其中一个源状态的源状态分组号(从0到2K-1范围的数)。例如对于把状态RAM分为两个存储体的情况,分组部分号就是具有连接到右手边的c0的分组号。由源状态分组读取地址(即如由函数f产生的)和存储体选择参数c0(它表示是从存储体0还是从存储体1读取该部分)的组合限定特定源状态分组部分的读取地址。
函数f根据特定蝶形阵列的配置,并且它使用处理周期号、源状态分组部分号(即源状态分组号和标号c0)以及轮转来计算源状态分组部分的读取地址。特别地,函数f通过在特定处理周期在存储体选择参数和分组号内某位值之间进行异或操作,并通过随着处理周期号的增加向左轮转分组号,来产生源状态分组部分读取地址。
例如对于修正的8×1 ACS蝶形阵列500,在表1-A中存在一个可能的源状态分组部分读取地址函数f。如表1-A中所示,给定5位分组部分号c4到c0以及处理周期号,函数f确定4位分组读取地址b3到b0。修正的8×1 ACS蝶形阵列500读取总共16个源状态:每个存储体一个8-状态部分。如表1-A所示,对于处理周期#0,在每个存储体中从b3,b2、b1、b0=c4、c3、c2、c1的位置读取源状态。对于处理周期#1,向左轮转分组号两次以使读取地址b3、b2、b1、b0=c2、c1、(c4 XOR c0)、c3,其中一个分组部分c0=1就从存储体1读取该部分,并且其他部分c0=0就从存储体0(中的可能不同地址)读取该部分。因此对于被4整除的周期号,从每个存储体的相同位置读取两个分组部分,同时对于不被4整除的周期号,从每个存储体内的不同位置读取两个分组部分。值得注意的是,在这个实现中标号c0用作存储体选择参数。
表1-B描述了在每个处理周期中根据读取函数f的特定形式读取分组部分的方式(在每格中的十六进制数对应由表左栏中分组部分号定址的部分的第一状态,分组部分号是b3到b0的连接并带有c0)。如从该表中所见,在4个处理周期(即N=4)之后重现开始的分组部分地址。
表1-A
处理循环模4 | 源状态分组部分读取地址 | |||
b3 | b2 | b1 | b0 | |
0 | c4 | c3 | c2 | c1 |
1 | c2 | c1 | c4 XOR c0 | c3 |
2 | c4 XOR c0 | c3 | c2 XOR c0 | c1 |
3 | c2 XOR c0 | c1 | c4 | c3 |
表1-B
分组部分号 | 处理循环 | ||||
0 | 1 | 2 | 3 | 4 | |
00000 | 00 | 00 | 00 | 00 | 00 |
00001 | 08 | 80 | A0 | 28 | 08 |
00010 | 10 | 40 | 10 | 40 | 10 |
00011 | 18 | C0 | B0 | 68 | 18 |
00100 | 20 | 88 | 20 | 88 | 20 |
00101 | 28 | 08 | 80 | A0 | 28 |
00110 | 30 | C8 | 30 | c8 | 30 |
00111 | 38 | 48 | 90 | E0 | 38 |
01000 | 40 | 10 | 40 | 10 | 40 |
01001 | 48 | 90 | E0 | 38 | 48 |
01010 | 50 | 50 | 50 | 50 | 50 |
01011 | 58 | D0 | F0 | 78 | 58 |
01100 | 60 | 98 | 60 | 98 | 60 |
01101 | 68 | 18 | c0 | B0 | 68 |
01110 | 70 | D8 | 70 | D8 | 70 |
01111 | 78 | 58 | D0 | F0 | 78 |
10000 | 88 | 20 | 88 | 20 | 88 |
10001 | 80 | A0 | 28 | 08 | 80 |
10010 | 98 | 60 | 98 | 60 | 98 |
10011 | 90 | E0 | 38 | 48 | 90 |
10100 | A8 | A8 | A8 | A8 | A8 |
10101 | A0 | 28 | 08 | 80 | A0 |
10110 | B8 | E8 | B8 | E8 | B8 |
10111 | B0 | 68 | 18 | C0 | B0 |
11000 | C8 | 30 | C8 | 30 | c8 |
11001 | c0 | B0 | 68 | 18 | C0 |
11010 | D8 | 70 | D8 | 70 | D8 |
11011 | D0 | F0 | 78 | 58 | D0 |
11100 | E8 | B8 | E8 | B8 | E8 |
11101 | E0 | 38 | 48 | 90 | E0 |
11110 | F8 | F8 | F8 | F8 | F8 |
11111 | F0 | 78 | 58 | D0 | F0 |
通过进一步说明,图9A和9B示出了由源状态号(图9A中所示)和状态RAM(如图8所示区分)中该状态(图9B中所示)的位置之间的函数f(如以上表1-A中所示)所确定的关系。在图9A中,二进制值标号c4到c0表示分组部分号,同时二进制值标号d2到d0识别指定分组部分内八个源状态的特定一个。在把函数f应用于以上所述的c4到c0后,在图9B中就示出了该状态的位置,其中二进制值标号b3到b0表示由函数f的输出的值,并且值c0用作存储体选择参数。
在表2-A中存在4×2 ACS蝶形阵列的一个可能的读取函数f0给定6位分组部分号c5到c0以及处理周期号,函数f确定5位分组读取地址b4到b0。如上所述,4×2 ACS蝶形阵列400读取总共8个源状态:每个存储体一个4-状态部分。如表2-A所示,对于处理周期#0,在每个存储体中从b4、b3、b2、b1、b0=c5、c4、c3、c2、c1的存储地址读取源状态。对于处理周期#1,向左轮转分组号两次以使读取地址b4、b3、b2、b1、b0=c3、c2、c1、(c4 XOR c0)、c5,其中一个分组部分c0=1并且其他部分c0=0(标号c0还是用作存储体选择参数)。
在表2-B中,在每格中的十六进制数对应由表左栏中分组部分号定址的部分的第一状态,分组部分号是b4到b0的连接并带有c0。由于分组号中位数是奇数(即5),所以需要更多反复轮转地址两次,以在这个实现中重现初始地址。因此如从该表2-B中所见,在12个处理周期(即N=12)之后重现初始地址(虽然可选择的实施只需要十次重复)。
表2-A
处理循环模12 | 源状态分组部分读取地址 | ||||
b4 | b3 | b2 | b1 | b0 | |
0 | c5 | c4 | c3 | c2 | c1 |
1 | C3 | c2 | c1 | c4 XOR c0 | c5 |
2 | c1 | c4 XOR c0 | c5 | c2 XOR c0 | C3 |
3 | c5 | c2 XOR c0 | c3 | c4 | c1 |
4 | c3 | c4 | c1 | c2 | c5 |
5 | c1 | c2 | c5 | c4 XOR c0 | c3 |
6 | C5 | c4 XOR c0 | c3 | c2 XOR c0 | c1 |
7 | c3 | c2 XOR c0 | c1 | c4 | c5 |
8 | c1 | c4 | c5 | c2 | c3 |
9 | c5 | c2 | c3 | c4 XOR c0 | c1 |
10 | c3 | c4 XOR c0 | c1 | c2 XOR c0 | C5 |
11 | c1 | c2 XOR c0 | c5 | c4 | c3 |
表2-B
分组部分号 | 处理循环 | ||||||||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | |
000000 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 | 00 |
000001 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 |
000010 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 |
000011 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 | 34 | 0C |
000100 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 |
000101 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 |
000110 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 18 |
000111 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C |
001000 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 |
001001 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 |
001011 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 | B4 | 2C |
001100 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 |
001101 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 | 34 |
001110 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 |
001111 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 | B4 | 2C | C8 | F0 | 3C |
01000 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 | 10 | 44 |
010001 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 | 40 |
010010 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C |
010011 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | 48 |
010100 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 | 54 |
010101 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 14 | 04 | 40 | 50 | 50 |
010110 | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | 5C |
010111 | 94 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 58 |
011000 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 64 |
011001 | 58 | 94 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 60 |
011010 | 98 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 6C |
011011 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | 68 |
011100 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 74 |
011101 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 70 |
011110 | DC | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | 7C |
011111 | 9C | A4 | 68 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 78 |
100000 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 | 20 | 08 | 80 |
100001 | 60 | 58 | 94 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 84 |
100010 | A0 | 28 | 88 | A0 | 28 | 88 | A0 | 28 | 88 | A0 | 28 | 88 | 88 |
100011 | E0 | 78 | 9C | M | 68 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | 8C |
100100 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 90 |
100101 | 24 | 48 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 94 |
100110 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 98 | 98 |
100111 | 9C | A4 | 68 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C |
101000 | A0 | 28 | 88 | A0 | 28 | 88 | A0 | 28 | 88 | A0 | 28 | 88 | A0 |
101001 | A4 | 68 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 |
101010 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 | A8 |
101011 | AC | E8 | F8 | BC | AC | E8 | F8 | BC | AC | E8 | F8 | BC | AC |
101100 | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 |
101101 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 | B4 |
101110 | B8 | EC | B8 | EC | B8 | EC | B8 | EC | B8 | EC | B8 | EC | B8 |
101111 | BC | AC | E8 | F8 | BC | AC | E8 | F8 | BC | AC | E8 | F8 | BC |
110000 | C4 | 30 | 4C | 90 | 64 | 18 | C4 | 30 | 4C | 90 | 64 | 18 | C4 |
110001 | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 | 34 | 0C | C0 |
110010 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC |
110011 | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 | B4 | 2C | C8 |
110100 | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | D4 | 74 | 5C | D4 |
110101 | D0 | 34 | 0C | C0 | 70 | 1C | 84 | 60 | 58 | 94 | 24 | 48 | D0 |
110110 | DC | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | DC |
110111 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 |
111000 | E4 | 38 | CC | B0 | 6C | 98 | E4 | 38 | CC | B0 | 6C | 98 | E4 |
111001 | E0 | 78 | 9C | A4 | 68 | D8 | B4 | 2C | C8 | F0 | 3C | 8C | E0 |
111010 | EC | B8 | EC | B8 | EC | B8 | EC | B8 | EC | B8 | EC | B8 | EC |
111011 | E8 | F8 | BC | AC | E8 | F8 | BC | AC | E8 | F8 | BC | AC | E8 |
111100 | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | DC | F4 | 7C | DC | F4 |
111101 | F0 | 3C | 8C | E0 | 78 | 9C | A4 | 68 | D8 | B4 | 2C | C8 | F0 |
111110 | FC | FC | FC | FC | FC | FC | FC | FC | FC | FC | FC | FC | FC |
111111 | F8 | BC | AC | E8 | F8 | BC | AC | E8 | F8 | BC | AC | E8 | F8 |
通过进一步说明,图10A和10B示出了由源状态号(图10A中所示)和状态RAM(如图7所示区分)中该状态(图10B中所示)的位置之间的函数f(如以上表2-A中所示)所确定的关系。在图10A中,二进制值标号c5到c0表示分组部分号,同时二进制值标号d1到d0识别指定分组部分内四个源状态的特定一个。在把函数f应用于以上所述的c5到c0后,在图10B中就示出了该状态的位置,其中二进制值标号b3到b0表示由函数f的输出的值,并且值c0用作存储体选择参数。
回到图6的过程,在框B630中读取通过(框B620的)定址方案产生的地址位置中包括的源状态。在框B640中,根据ACS蝶形操作计算对应所读取源状态的目标状态。如上所述,4×2的ACS蝶形阵列400对于一个所接收的码符号计算8个目标状态,并随后重新排列中间目标状态,并且作为源状态把它们反馈对于下一个所接收的码符号计算8个对应的目标状态。在每个时钟周期,4×2的ACS蝶形阵列400读取8个源状态并总共计算8个目标状态。这样,4×2的ACS蝶形阵列400在32个时钟周期或一个处理周期中计算两组每组n个接收的码符号的所有256个状态(即总共512个状态)。
以相似方式,8×1的ACS蝶形阵列500在一个时钟周期对于一组n个所接收的码符号计算16个目标状态,并随后使用所计算的目标状态作为源状态在随后的时钟周期对于下一组n个所接收的码符号计算16个对应的目标状态。在每个时钟周期,8×1的ACS蝶形阵列500读取16个源状态并计算16个目标状态。这样,8×1的ACS蝶形阵列500在16个时钟周期计算一组n个接收的码符号的所有256个状态,并在32个时钟周期或一个处理周期计算两组每组n个接收的码符号的所有256个状态。
最后,在框B650中,把所积累的目标状态存储到在框B620确定的读取地址中。为了有效使用状态RAM,用所积累的目标状态值重写读取地址存储位置的内容。如上所述,由于存储体是分离定址的,所以可以把目标状态分组的每个部分独立地写入状态RAM(虽然可以并行写入大于一个部分)。例如,对于4×2的ACS蝶形阵列400,把目标状态写入4-状态部分。相似地,对于修改的8×1的ACS蝶形阵列500,把目标状态写入8-状态部分。
图11示出了根据本发明实施例的设备。对于每个完整的处理周期处理循环计数器720(它可以是模N计数器)就递增。如上所述,把地址计算器710配置为接收处理周期计数并确定每个分组部分的地址位置。把状态RAM 740配置为接收这些地址位置并把源状态量度分组输出到ACS计算器730。把ACS计算器730配置位从源状态量度分组和从由分支量度单元750输出的数据计算目标状态量度分组。把状态RAM 740还配置位从ACS计算器730接收目标状态量度分组并把该分组存储在从其中读取源状态量度分组的地址位置,从而重写源状态量度分组。注意地址计算器710、处理循环计数器720、ACS计算器730以及分支量度单元750中的一个或多个可以(全部或部分)包括在相同微处理器、数字信号处理器或相似逻辑元件阵列上执行的一组指令,作为地址计算器710、处理循环计数器720、ACS计算器730以及分支量度单元750中的另一个。
因此,所述的实施例提供一种能够以在分块的存储器存储体、管道寄存器和电路复杂性之间达到平衡的方式在单个存储器中定位和存储状态的方法和设备以提高高速率ACS蝶形操作的性能。
此外,以上较佳实施例的描述提供了说明和描述,但不希望是无遗漏的或者把本发明限制于所揭示的明确形式。符合以上直到的修改和变化是可能的,或者可从本发明的实践中得到修改和变化。例如,在这里揭示的实施例的结构可轻易扩展到操作在其他阵列配置上,比如16×1阵列或32×1阵列,其中每个时钟周期可以产生32或64个状态。此外,代替在一个时钟周期在一组或两组每组n个所接收的码符号上操作,该实施例可适用于每时钟周期在更多组每组n个所接收的码符号上操作。虽然所述实施例与卷积码的译码有关,但本发明的实施例也可用于维特比算法的其他应用。这样,注意由权利要求书及其等价限定本发明的范围。
Claims (30)
1.一种方法,包括:
确定多个地址位置,每个地址位置对应源状态量度分组的多个分组部分中的一个;
从所述地址位置读取所述源状态量度分组;
进行多个相加-比较-选择操作以计算目标状态量度分组,所述目标状态量度分组中的每个至少部分从所述源状态量度分组中的对应一个得到;以及
把所述目标状态量度分组存储到所述地址位置中,
其中所述存储包括重写多个分组部分。
2.按权利要求1所述的方法,其特征在于在所述相加-比较-选择操作中的每个包括:
把第一分支量度和所述源状态量度分组中的第一个相加以得到第一和,
把第二分支量度和所述源状态量度分组中的第二个相加以得到第二和,
比较所述第一和与第二和,以及
根据所述比较在所述第一和与所述第二和中选择一个。
3.按权利要求2所述的方法,其特征在于所述多个地址位置包括第一存储体位置和第二存储体位置,
其中所述第一存储体位置在第一存储体内,而所述第二存储体位置在第二存储体内。
4.按权利要求3所述的方法,其特征在于所述读取包括从所述第一存储体位置读取所述多个分组部分中的第一个,并且从所述第二存储体位置读取所述多个分组部分的第二个。
5.按权利要求4所述的方法,其特征在于由8×1相加-比较-选择蝶形结构进行所述多个相加-比较-选择操作,以及
其中所述源状态量度分组包括16个源状态量度。
6.按权利要求5所述的方法,其特征在于所述确定包括参考处理循环计数器。
7.按权利要求6所述的方法,其特征在于所述确定包括应用如下预定函数:
处理循环模4
b3
b2
b1
b0
0
c4
c3
c2
c1
1
c2
c1
c4 XOR c0
c3
2
c4 XOR c0
c3
c2 XOR c0
c1
3
c2 XOR c0
c1
c4
c3
其中对于所述多个分组部分的每个:
c4到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b3到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
8.按权利要求4所述的方法,其特征在于由4×2相加-比较-选择蝶形结构进行所述多个相加-比较-选择操作,以及
其中所述源状态量度分组包括8个源状态量度。
9.按权利要求8所述的方法,其特征在于所述确定包括参考处理循环计数器。
10.按权利要求9所述的方法,其特征在于所述确定包括应用如下预定函数:
处理循环模12
b4
b3
b2
b1
b0
0
c5
c4
c3
c2
c1
1
c3
c2
c1
c4 XOR c0
c5
2
c1
c4 XOR c0
c5
c2 XOR c0
c3
3
c5
c2 XOR c0
c3
c4
c1
4
c3
c4
c1
c2
c5
5
c1
c2
c5
c4 XOR c0
c3
6
c5
c4 XOR c0
c3
c2 XOR c0
c1
7
c3
c2 XOR c0
c1
c4
c5
8
c1
c4
c5
c2
c3
9
c5
c2
c3
c4 XOR c0
c1
10
c3
c4 XOR c0
c1
c2 XOR c0
c5
11
c1
c2 XOR c0
c5
c4
c3
其中对于所述多个分组部分的每个:
c5到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b4到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
11.一种设备,包括:
状态随机存取存储器(RAM);
地址计算器,用以(A)在所述状态RAM内确定多个地址位置,每个地址位置对应源状态量度分组的多个分组部分中的一个,以及(B)把多个地址位置提供到所述状态RAM;
相加-比较-选择计算器,用以(C)从所述状态RAM接收所述源状态量度分组,(D)计算目标状态量度分组,所述目标状态量度分组中的每个至少部分从所述源状态量度分组中的对应一个得到,以及(E)把所述目标状态量度分组提供到所述状态RAM,
其中把所述状态RAM配置为通过把所述目标状态量度分组存储到所述地址位置中重写所述多个分组部分。
12.按权利要求11所述的设备,其特征在于把所述相加-比较-选择计算器配置为进行多个相加-比较-选择操作,以及
其中所述相加-比较-选择操作中的每个包括:
把第一分支量度和所述源状态量度分组中的第一个相加以得到第一和,
把第二分支量度和所述源状态量度分组中的第二个相加以得到第二和,
比较所述第一和与第二和,以及
根据所述比较在所述第一和与所述第二和中选择一个。
13.按权利要求12所述的设备,其特征在于所述多个地址位置包括第一存储体位置和第二存储体位置,
其中所述第一存储体位置在所述状态RAM的第一存储体内,而所述第二存储体位置在所述状态RAM的第二存储体内。
14.按权利要求13所述的设备,其特征在于对应所述多个分组部分中的第一个的地址位置是所述第一存储体位置,以及
对应所述多个分组部分的第二个的地址位置是所述第二存储体位置。
15.按权利要求14所述的设备,其特征在于所述相加-比较-选择计算器包括8×1相加-比较-选择蝶形结构,以及
其中所述源状态量度分组包括16个源状态量度。
16.按权利要求15所述的设备,其特征在于把所述地址计算器配置为参考处理循环计数器。
17.按权利要求16所述的设备,其特征在于把所述地址计算器配置为应用如下预定函数:
处理循环模4
b3
b2
b1
b0
0
c4
c3
c2
c1
1
c2
c1
c4 XOR c0
c3
2
c4 XOR c0
c3
c2 XOR c0
c1
3
c2 XOR c0
c1
c4
c3
其中对于所述多个分组部分的每个:
c4到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b3到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
18.按权利要求14所述的设备,其特征在于所述相加-比较-选择计算器包括4×2相加-比较-选择蝶形结构,以及
其中所述源状态量度分组包括8个源状态量度。
19.按权利要求18所述的设备,其特征在于把所述地址计算器配置为参考处理循环计数器。
20.按权利要求19所述的设备,其特征在于把所述地址计算器配置为应用如下预定函数:
处理循环模12
b4
b3
b2
b1
b0
0
c5
c4
c3
c2
c1
1
c3
c2
c1
c4 XOR c0
c5
2
c1
c4 XOR c0
c5
c2 XOR c0
c3
3
c5
c2 XOR c0
c3
c4
c3
4
c3
c4
c1
c2
c5
5
c1
c2
c5
c4 XOR c0
c3
6
c5
c4 XOR c0
c3
c2 XOR c0
c1
7
c3
c2 XOR c0
c1
c4
c5
8
c1
c4
c5
c2
c3
9
c5
c2
c3
c4 XOR c0
c1
10
c3
c4 XOR c0
c1
c2 XOR c0
c5
11
c1
c2 XOR c0
c5
c4
c3
其中对于所述多个分组部分的每个:
c5到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b4到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
21.一种在其上存储有机器可读取代码的数据存储媒介,该机器可读取代码包括可由逻辑元件阵列执行的指令,该指令定义的方法包括:
确定多个地址位置,每个地址位置对应源状态量度分组的多个分组部分中的一个;
从所述地址位置读取所述源状态量度分组;
进行多个相加-比较-选择操作以计算目标状态量度分组,所述目标状态量度分组中的每个至少部分从所述源状态量度分组中的对应一个得到;以及
把所述目标状态量度分组存储到所述地址位置中,
其中所述存储包括重写多个分组部分。
22.按权利要求21所述的媒介,其特征在于在所述相加-比较-选择操作中的每个包括:
把第一分支量度和所述源状态量度分组中的第一个相加以得到第一和,
把第二分支量度和所述源状态量度分组中的第二个相加以得到第二和,
比较所述第一和与第二和,以及
根据所述比较在所述第一和与所述第二和中选择一个。
23.按权利要求22所述的媒介,其特征在于所述多个地址位置包括第一存储体位置和第二存储体位置,
其中所述第一存储体位置在第一存储体内,而所述第二存储体位置在第二存储体内。
24.按权利要求23所述的媒介,其特征在于所述读取包括从所述第一存储体位置读取所述多个分组部分中的第一个,并且从所述第二存储体位置读取所述多个分组部分的第二个。
25.按权利要求24所述的媒介,其特征在于由8×1相加-比较-选择蝶形结构进行所述多个相加-比较-选择操作,以及
其中所述源状态量度分组包括16个源状态量度。
26.按权利要求25所述的媒介,其特征在于所述确定包括参考处理循环计数器。
27.按权利要求26所述的媒介,其特征在于所述确定包括应用如下预定函数:
处理循环模4
b3
b2
b1
b0
0
c4
c3
c2
c1
1
c2
c1
c4 XOR c0
c3
2
c4 XOR c0
c3
c2 XOR c0
c1
3
c2 XOR c0
c1
c4
c3
其中对于所述多个分组部分的每个:
c4到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b3到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
28.按权利要求24所述的媒介,其特征在于由4×2相加-比较-选择蝶形结构进行所述多个相加-比较-选择操作,以及
其中所述源状态量度分组包括8个源状态量度。
29.按权利要求28所述的媒介,其特征在于所述确定包括参考处理循环计数器。
30.按权利要求29所述的媒介,其特征在于所述确定包括应用如下预定函数: 处理循环模12 b4 b3 b2 b1 b0
0
c5
c4
c3
c2
c1
1
c3
c2
c1
c4 XOR c0
c5
2
c1
c4 XOR c0
c5
c2 XOR c0
c3
3
c5
c2 XOR c0
c3
c4
c1
4
c3
c4
c1
c2
c5
5
c1
c2
c5
c4 XOR c0
c3
6
c5
c4 XOR c0
c3
c2 XOR c0
c1
7
c3
c2 XOR c0
c1
c4
c5
8
c1
c4
c5
c2
c3
9
c5
c2
c3
c4 XOR c0
c1
10
c3
c4 XOR c0
c1
c2 XOR c0
c5
11
c1
c2 XOR c0
c5
c4
c3
其中对于所述多个分组部分的每个:
c5到c0指定所述分组部分的分组部分号,所述分组部分号由源状态号限定,所述源状态对应所述分组部分内源状态量度中的一个,以及
b4到b0指定所述分组部分的分组地址位置,以及
由分组地址位置与c0结合限定对应所述分组部分的地址位置,其中c0用作存储体选择参数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/544,324 US6757864B1 (en) | 2000-04-06 | 2000-04-06 | Method and apparatus for efficiently reading and storing state metrics in memory for high-speed ACS viterbi decoder implementations |
US09/544,324 | 2000-04-06 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1446406A true CN1446406A (zh) | 2003-10-01 |
Family
ID=24171718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN01810587A Pending CN1446406A (zh) | 2000-04-06 | 2001-04-05 | 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6757864B1 (zh) |
EP (1) | EP1269636A2 (zh) |
JP (1) | JP2003530753A (zh) |
KR (1) | KR100785671B1 (zh) |
CN (1) | CN1446406A (zh) |
AU (1) | AU2001251428A1 (zh) |
CA (1) | CA2405483A1 (zh) |
IL (1) | IL152117A0 (zh) |
MX (1) | MXPA02009796A (zh) |
WO (1) | WO2001078239A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320979B (zh) * | 2008-07-17 | 2010-06-02 | 北京天碁科技有限公司 | 一种维特比译码器及其路径度量计算方法 |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050264906A1 (en) * | 2004-05-25 | 2005-12-01 | Haratsch Erich F | Method and apparatus for reduced-state Viterbi detection in a read channel of a magnetic recording system |
KR100437697B1 (ko) * | 2001-07-19 | 2004-06-26 | 스프레드텔레콤(주) | 다수준 격자부호변조방식의 복호 방법 및 장치 |
US7043682B1 (en) * | 2002-02-05 | 2006-05-09 | Arc International | Method and apparatus for implementing decode operations in a data processor |
EP1432190A1 (en) | 2002-12-18 | 2004-06-23 | Texas Instruments Incorporated | RSSE using hardware acceleration |
EP1450493A1 (en) * | 2003-02-19 | 2004-08-25 | Nokia Corporation | Viterbi decoder with path metric calculations over two trellis columns and routing of path metrics in the memory |
US20050071734A1 (en) * | 2003-09-26 | 2005-03-31 | Broadcom Corporation | Methods and systems for Viterbi decoding |
US7287212B2 (en) * | 2003-09-26 | 2007-10-23 | Broadcom Corporation | Methods and systems for Viterbi decoding |
US8020067B2 (en) * | 2004-12-13 | 2011-09-13 | Freescale Semiconductor, Inc. | Apparatus and method for detecting an end point of an information frame |
US20080152044A1 (en) * | 2006-12-20 | 2008-06-26 | Media Tek Inc. | Veterbi decoding method for convolutionally encoded signal |
US8413010B1 (en) * | 2009-03-12 | 2013-04-02 | Western Digital Technologies, Inc. | Data storage device employing high quality metrics when decoding logical block address appended to a data sector |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB788241A (en) * | 1955-06-23 | 1957-12-23 | Atomic Energy Authority Uk | Improvements in or relating to the production of zirconium tetrachloride |
US4583078A (en) * | 1984-11-13 | 1986-04-15 | Communications Satellite Corporation | Serial Viterbi decoder |
JPS62233933A (ja) * | 1986-04-03 | 1987-10-14 | Toshiba Corp | ヴイタビ復号法 |
US4979175A (en) * | 1988-07-05 | 1990-12-18 | Motorola, Inc. | State metric memory arrangement for a viterbi decoder |
US5220570A (en) * | 1990-11-30 | 1993-06-15 | The Board Of Trustees Of The Leland Stanford Junior University | Programmable viterbi signal processor |
US5502735A (en) * | 1991-07-16 | 1996-03-26 | Nokia Mobile Phones (U.K.) Limited | Maximum likelihood sequence detector |
US5416787A (en) | 1991-07-30 | 1995-05-16 | Kabushiki Kaisha Toshiba | Method and apparatus for encoding and decoding convolutional codes |
US5619514A (en) | 1994-12-29 | 1997-04-08 | Lucent Technologies Inc. | In-place present state/next state registers |
US5742621A (en) * | 1995-11-02 | 1998-04-21 | Motorola Inc. | Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor |
JPH09232973A (ja) | 1996-02-28 | 1997-09-05 | Sony Corp | ビタビ復号器 |
US5881075A (en) * | 1996-03-18 | 1999-03-09 | Samsung Electronics Co., Ltd. | Viterbi decoder |
KR100484127B1 (ko) * | 1997-08-07 | 2005-06-16 | 삼성전자주식회사 | 비터비디코더 |
KR100311504B1 (ko) * | 1998-01-22 | 2001-11-22 | 서평원 | 비터비디코더의스태이트메트릭메모리및이를이용한복호화방법 |
AU5335699A (en) | 1998-08-04 | 2000-02-28 | Qualcomm Incorporated | Viterbi decoder with reduced size path metric memory |
US6269130B1 (en) * | 1998-08-04 | 2001-07-31 | Qualcomm Incorporated | Cached chainback RAM for serial viterbi decoder |
KR100285067B1 (ko) * | 1998-09-25 | 2001-03-15 | 윤종용 | 비터비 디코더의 가산 비교 선택 회로 |
WO2001003308A1 (en) | 1999-07-06 | 2001-01-11 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Viterbi decoder |
DE10010238C2 (de) | 2000-03-02 | 2003-12-18 | Infineon Technologies Ag | Verfahren zum Speichern von Pfadmetriken in einem Viterbi-Decodierer |
-
2000
- 2000-04-06 US US09/544,324 patent/US6757864B1/en not_active Expired - Fee Related
-
2001
- 2001-04-05 KR KR1020027013448A patent/KR100785671B1/ko not_active IP Right Cessation
- 2001-04-05 EP EP01924809A patent/EP1269636A2/en not_active Withdrawn
- 2001-04-05 CN CN01810587A patent/CN1446406A/zh active Pending
- 2001-04-05 AU AU2001251428A patent/AU2001251428A1/en not_active Abandoned
- 2001-04-05 WO PCT/US2001/011361 patent/WO2001078239A2/en active Application Filing
- 2001-04-05 IL IL15211701A patent/IL152117A0/xx unknown
- 2001-04-05 JP JP2001574985A patent/JP2003530753A/ja active Pending
- 2001-04-05 MX MXPA02009796A patent/MXPA02009796A/es active IP Right Grant
- 2001-04-05 CA CA002405483A patent/CA2405483A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101320979B (zh) * | 2008-07-17 | 2010-06-02 | 北京天碁科技有限公司 | 一种维特比译码器及其路径度量计算方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2003530753A (ja) | 2003-10-14 |
KR100785671B1 (ko) | 2007-12-14 |
EP1269636A2 (en) | 2003-01-02 |
KR20030005267A (ko) | 2003-01-17 |
IL152117A0 (en) | 2003-05-29 |
WO2001078239A3 (en) | 2002-03-14 |
CA2405483A1 (en) | 2001-10-18 |
AU2001251428A1 (en) | 2001-10-23 |
MXPA02009796A (es) | 2003-05-27 |
US6757864B1 (en) | 2004-06-29 |
WO2001078239A2 (en) | 2001-10-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6448910B1 (en) | Method and apparatus for convolution encoding and viterbi decoding of data that utilize a configurable processor to configure a plurality of re-configurable processing elements | |
US7127664B2 (en) | Reconfigurable architecture for decoding telecommunications signals | |
CN1099165C (zh) | 维特比译码器 | |
JPH10107651A (ja) | ビタビ復号装置 | |
CN1168224C (zh) | 维特比译码器的高速相加-比较-选择 | |
CN100517984C (zh) | 用于移动通信系统的维特比/涡轮联合译码器 | |
CN1446406A (zh) | 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 | |
EP1204211A1 (en) | Butterfly processor for telecommunications | |
EP1204212B1 (en) | Method and apparatus for path metric processing in telecommunications systems | |
CN1830151A (zh) | 维特比解码器 | |
US20070205921A1 (en) | Four-Symbol Parallel Viterbi Decoder | |
CN1168571A (zh) | 使用踪迹消除方法的维特比译码器的生存者存储器 | |
US20060245526A1 (en) | Apparatus and method for Viterbi decoding | |
CN1144373C (zh) | 维特比解码器的状态计量存储器及其解码方法 | |
US7035356B1 (en) | Efficient method for traceback decoding of trellis (Viterbi) codes | |
CN1311620A (zh) | 在维特比译码器中储存线路节拍的方法 | |
CN1182657C (zh) | 用于降低乘积码译码所需存储量和复杂度的方法 | |
CN106452461A (zh) | 一种通过矢量处理器实现viterbi解码的方法 | |
CN1176541C (zh) | 用于提高乘积码译码速度的方法及译码装置 | |
EP1192719A1 (en) | Viterbi decoder | |
CN116073952B (zh) | 一种基于MaPU架构的快速并行卷积编译码方法、系统、设备及介质 | |
CN1591658A (zh) | 纠错码产生电路及其方法 | |
CN101527573B (zh) | 维特比解码器 | |
CN1633031A (zh) | 一种移动通信中信道编码的快速计算方法 | |
CN1479451A (zh) | 一种维特比硬判决度量更新方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: WD Ref document number: 1056444 Country of ref document: HK |