CN1168224C - 维特比译码器的高速相加-比较-选择 - Google Patents

维特比译码器的高速相加-比较-选择 Download PDF

Info

Publication number
CN1168224C
CN1168224C CNB008145385A CN00814538A CN1168224C CN 1168224 C CN1168224 C CN 1168224C CN B008145385 A CNB008145385 A CN B008145385A CN 00814538 A CN00814538 A CN 00814538A CN 1168224 C CN1168224 C CN 1168224C
Authority
CN
China
Prior art keywords
state
memory
group
comparison
dbjective 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.)
Expired - Lifetime
Application number
CNB008145385A
Other languages
English (en)
Other versions
CN1379931A (zh
Inventor
D
D·汉斯奎因
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN1379931A publication Critical patent/CN1379931A/zh
Application granted granted Critical
Publication of CN1168224C publication Critical patent/CN1168224C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/395Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using a collapsed trellis, e.g. M-step algorithm, radix-n architectures with n>2
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4107Sequence 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/39Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes
    • H03M13/41Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors
    • H03M13/4161Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management
    • H03M13/4169Sequence estimation, i.e. using statistical methods for the reconstruction of the original codes using the Viterbi algorithm or Viterbi processors implementing path management using traceback

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)

Abstract

本发明揭示一种在Viterbi算法实施方案中作相加-比较-选择(ACS)蝶形操作的系统,包括:存贮多个源状态量度的第一存储单元(145);根据奇偶数时钟循环可在第一与第二操作路径之间作选择的复用器(670);对每个源状态量度计算目标状态量度的ACS机构(600);与ACS机构和复用器耦合并用来临时存储目标量度的第二存储器。因此,复用器在偶数时钟循环期间选择第一操作路径,并把源状态量度从第一存储器提供给ACS机构而生成目标状态量度。在奇数时钟循环期间,复用器选择第二操作路径访问第二存储器,并将上一次计算的目标状态量度用作中间源状态量度。

Description

维特比译码器的高速相加-比较-选择
背景技术
I.发明领域
本发明一般涉及Viterbi(维特比)算法的应用,尤其涉及一种经改进的系统与方法,用于在执行Viterbi算法时完成高速率相加-比较-选择(ACS)蝶形操作。
II.相关技术的说明
Viterbi算法作为一种卷积编码信号的译码方法于1967年首次出现,以后在数据通信、数据记录与数字信号处理领域中得到广泛采纳。该算法已成功地解决了各种数字估算问题,包括减少了存贮媒体的记录误差、消除了码元间于扰,增强了字符与文本识别能力。
这样,Viterbi算法已成为卷积编码数据最主要的纠错译码方法。对于这样的应用,根据一连串观察,Viterbi算法决定了以最小误差量度通过表征所有可能编码器状态格构的路径。这一最短路径例示了卷积编码器最可能生成的序列。
图1A示出一种典型的卷积编码器。卷积编码器100包括一个8位分接的移位寄存器110和一对异或型加法器120,后者把输入数据位U(D)105序列转换成输出码元C0(D)、C1(D)125序列。具体而言,图1A是一例1/2速率代码,对每个输入数据位U(D)105产生两个输出码元C0(D)、C1(D)25。注意,图示的特定码率与卷积编码器100的配置仅为举例,并不限制本发明各实施例的操作或范围,因而本发明诸实施例可以使用1/3或3/4等不同的码率。
根据发生器码多项式G0(D)、G1(D)限定的特定移位寄存器结构,编码器100对输入位流U(D)105通过移位和异或相加而产生各输出码元C0(D)、C1(D)125。在此情况下,图1A示出的移位寄存器互连,提供1/2速率发生器码多项式多项式G0(D)的系数与输入数据序列U(D)105卷积而生成输出卷积码元C0(D)125。同样地,图1A示出了1/2速率发生器码多项式其系数与输入数据序列U(D)105卷积后,生成输心卷积码元C1(D)125。编码器100的约束长度K大于寄存器110中的延迟单元数;对于编码器100,K为9。对于输入编码器100的每一数据位,输出码元C0(D)、C1(D)125取决于输入的位和前一K-1输入位。因此,编码器100产生的输出码元C0(D)、C1(D)125,能跨越2k-1个可能的编码器状态。
在一典型通信系统中,输出码元C0(D)、C1(D)125接着调制并通过噪声信道(未示出)发送。译码器最终收到含噪的卷积编码数据流,并应用利用卷积码特性的Viterbi算法最终确定输入数据序列U(D)105。
卷积码的一个优点是其可为对称码树提供高度重复的结构。从理论上讲,卷积码能生成无限的码元序列。然而,由于其对称性,在确定最可能路径时要求估算状态数,导致输入数据序列U(D)105减少为2k-1(此时为256)种状态。另外,在译码这种对称码时,只关心进入256种可能编码器状态中每种状态的最可能(即保存)的局部路径,所有其它路径可能不再深究。这是由于通过某一状态的最可能全局路径必须跟随通过该状态的保存局部路径的缘故。
为了起到具有一组状态转换的有限状态机的作用,Viterbi译码器依赖于这些码特征。根据从收到的噪杂卷积编码数据流得到的观察结果,译码器假设每一种可能的编码器2k-1状态,确定编码器从其中的每一种状态转换到下一组可能的2k-1编码器状态的概率。
转换概率用称为量度的量表示,这种量度正比例于概率值的负算法。显然,量度越小,则出现的概率越大。量度有两类:状态量度与分支量度。状态量度也称为路径量度,代表发送的码元组通过特定状态的相对概率。分支量度代表从一特定源状态到一发送的特定目标状态转换的条件概率(假定源状态正确)。
Viterbi算法可以归纳如下:把时间分成d个样本,每一时间样本K有n个可能的状态Si K(其中i是来自
Figure C0081453800071
的整数,K为来自 整数)。对于K>1,路径可从任一p个先前状态Sjk-1(j为来自 的整数)到达各状态。对每种状态,在这些P条可能的路径中间识别量度最小的路径,并连同量度值存贮起来。
初始化:对开始的时间样本(K=1),对各状态Si 1存贮的量度初始化。在开始状态已知的情况下,可将此时的量度置零,其它状态Si 1的量度置成大的数。这一方法迫使算法后面的迭代只选择从期望的开始状态出发的路径。迭代:对每个时间样本 访问所有的状态Si k。在每一状态Si k,把导向该状态的每条路径j的量度计算为(a)先前状态Sj k-1的量度与(b)从状态Sjk-1导向状态Sjk的分支的量度bmj k之和。导向各状态Sj k的P路径,在该状态选择并存贮最低量度的路径(即幸存者路径),还把该路径的量度存贮为该状态的量度smi k
回链:在访问了最后时间样本的所有状态时,识别出最低状态量度的状态Si k。从存储器里读出该状态的幸存者路径,由此识别出时间样本d-1的相应状态。从存储器里读出这后一种状态的幸存者路径,重复回链过程,直到识别出包含导向状态Si d的路径(即最可能通过状态时间阵列的路径)的所有状态。
这样,在任何时间k,Viterbi算法都计算导向状态Sn k的路径的量度,确定幸存者路径(n个状态Sn k的每个状态有一条),并且存贮n条幸存者路径及它们各自的量度。对于每个考虑的目标状态而言,这样相当于存贮导向它的源状态。因此,任何一种Viterbi算法的实施,都要求应用图1B所示的相加-比较-选择(Add-Compare-Select)(ACS)单元150来执行这些操作。ACS单元150负责计算状态量度值,还运用ACS蝶形操作表征源与目标状态间的关系。图2示出了单次ACS蝶形操作155。
蝶形操作155包括可能对编码器100中两个特定源状态出现的唯一可能的状态转换。这部分是由于这样一个事实,即在任一指定时刻,编码器100的状态是编码器前一状态右移1位。下一(右移)信息位决定了从源状态作何种转换,并将呈现为目标状态的最高有效位(MSB)。这样,只有两个可能的源状态可转换的目标状态。因此,由图2可以看出,根据输入数据位U(D)的值,编码器100只能从源状态“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) 其实当编码器100沿ACS蝶形155的平行分支工作时(如从“x0”转换到“0x”,或从“x1”转换到“1x”),都对两条平行分支产生码元H0(D)、H1(D)125。这一特征的部分原因是一般卷积码的重复特征,而且使用了将其MSB和LSB置成1(即对G0(D)与G1(D)两者而言,g0与g8都等于1)的发生器码多项式。以同样方式,在编码器100沿ACS蝶155任一对角分支操作时(如从“x0”转换到“1x”,或从“x1”转换到“0x”),就生成码元
如上所述,ACS150单元计算目标状态量度tm0x、tm1x。ACS150逻辑存贮源状态量度Smx0、Smx1,它们与接收的一组码元导向源状态“x0”与“x1”的概率有关。再看图1B,在收到一组码元后,分支量度单元140计算分支量度值bmij与bmij。ACS150把对应于两种导向特定目标状态的每一种转换的分支量度bmij、bmij同相应的源状态量度Smx0、Smx1“相加”。分支量度bmij、bmij代表从一特定源状态转换到一出现的特定目标状态的条件概率。分支量度bmij表明收到的码元与ACS150假设的码元H0(D)、H1(D)125匹配得如何紧密,而分支量度bmij则表明收到的码元与 匹配得如何紧密。分支量度bmij、bmij的值只取决于收到的码元对与假设的码元对H0(D)、H1(D)之间的距离。
对两种目标状态的每种状态,ACS150对导向该目标状态的源状态量度-分支量度对之和作比较。然后,ACS150“选择”由最小量度和代表的最可能对各目标状态的转换,并把它分配给该目标状态作为目标状态量度tm0x、tm1x
如上所述,对导向目标状态的两种转换的每一种,ACS150逻辑都把分支量度bmij、bmij加到源状态量度Smx0、smx1里,并判定从产生更小量度和的转换进入该目标状态的最可能的路径。于是,选择该更小的量度和,并变成新的目示状态量度tm0x、tm1x。ACS150还把该状态量度(即与导向各目标状态的最可能路径有关的代价)存入状态RAM145里。如图1B所示,在回链存储单元160的路径存储器中,选择最小量度和会导致存贮1位的量,称为判定位。由获胜源状态量度的LSB指示的判定位,识别出在两种转换中被选择的一种转换。
回链存储单元160存贮对应于最可能进入各目标状态的转换的判定位。对于约束长度k=9的编码器100,将生成2k-1或256个对应于编码器100各256个可能状态的判定位。一旦产生和存贮预定状态数量所有这类信息的阵列,后链单元160就在最有可能向正确路径行进的状态(即其中对应于最小代价的最新时间单位的状态)起动,然后通过读到最后的PX256(即P×2k-1)判定位及时后链选择P位,P是路径存储器的有效回链深度。由于判定位代表假设为已通过编码器100的最可能一组位,所以是译码器能输出的最佳数据。结果,链路在判定历史中返回得更深,则选择的路径与正确路径归并的可能性更大。因此,回链深度P越高,性能就越佳,不过流水线与存贮延迟也更大。因此,通常把回链深度P设置为编码器100约束长度K的3~10倍。对于K=9的编码器,一般把回链深度P设置为64。
ACS处理循环规定了ACS单元150对收到的预定数量的码元计算新目标状态量度tm0x、tm1x的周期。对于1/2速率卷积码,每对收到的码元要求1个处理循环作量度计算。处理循环的长度等于对两组收到的码元的所有编码器状态作ACS蝶形操作所需的时钟循环数。例如,如图2所示,为了执行编码器100所有256个状态的操作,具有单个ACS蝶形的Viterbi译码器,一般要求每一收到的码元有128次时钟循环。为了提高处理速度,可以使用部署了多个ACS蝶形的ACS蝶形阵列结构减少一个处理循环的时钟循环次数。
一例这样的结构就是图3所示的8×1ACS蝶形阵列300。通过构建8个并联的平行ACS蝶形单元155,阵列300将处理速度提高到8倍。对一组收到的码元,在单次时钟循环中,8×1蝶形阵列300用所有8个蝶形单元155读出16个源状态,并计算16个相应的目标状态量度tm0x、tm1x。如上所述,ACS单元155接收每个源状态的状态量度和四种可能的转换的每一种的分支量度bmij、bmij。分支量度bmij、bmij只取决于收到码元对和假设符号对H0(D)、H1(D)或的值,而且是两者之间距离的测量值。图3中作为源与目标状态一部分包括在内的“X”,代表通过从0计算到15的16次时钟循环记录的四位数位保持符(即X=(X0,X1,X2,X3)。这样,对于两组收到的码元,8×1蝶形阵列300在32次时钟循环中(即每个收到的码元为16次时钟循环),对编码器100所有256个可能的状态计算目标状态量度tm0x、tm1x
8×1蝶形阵列结构300的一个缺点在于,对每组收到的码元,必须读出16个源状态量度,而且必须对16次时钟循环的每次循环同时产生要求的分支量度。这样,为适应这种操作,8×1蝶形阵列300要求极大的存储器带宽。
另一例阵列结构是图4的4×2ACS蝶形阵列400。该阵列400可像8×1蝶形阵列300那样同样程度地提高速度,却是用2组并联的4只ACS蝶形单元155实现的。蝶形阵列400通过暂存中间目标状态量度tm0x、tm1x,缓和了存储器带宽问题。例如,在单次时钟循环内,阵列400的第一级读出8种源状态并计算8个相对的目标状态量度tm0x、tm1x。然而,蝶形阵列400并不立即存贮中间目标状态量度tm0x、tm1x。相反地,仍在该时钟循环内,蝶形阵列400将中间目标状态重新排列,作为源状态馈入第二级,接着对下一组收到的码元计算8个相应的目标状态量度tm0x、tm1x。这样,像8×1蝶形阵列300一样,在32次时钟循环范围内,蝶形阵列400能对两组收到的码元计算目标状态量度tm0x、tm1x
由于无需向ACS150状态存储器读或写中间目标状态量度(即第一级目标量度tm0x、tm1x),所以4×2ACS蝶形阵列400具有缩减ACS150状态存储器带宽的显著优点。再者,中间目标状态值联合流入下一级,避免了延迟,带宽要求最小。
然而,4×2ACS蝶形阵列400并非没有局限性。例如,缩减状态存储器带宽的优点完全依赖于这样一个事实,即阵列400在单次时钟循环内执行2级ACS150操作。这条严格的路径严重限制了更高的时钟速度。
另外,无论是8×1ACS蝶形阵列300还是4×2ACS蝶形阵列400,在回链操作方面都存在性能问题。如上所述,回链单元160负责存贮ACS阵列产生的判定位,并且通过存贮的判定位作回链而产生译码的判定位。对于约束长度k=9的编码器(如编码器100),译码器里的ACS阵列将对每组收到的码元生成2k-1或256个判定位(即对256个可能的编码器状态的每个状态生成1个判定位),而回链存储单元160通常包含深度p=64字组(块)的后链路径存储器。
在32次处理循环后,每次循环计算两组收到码元的目标状态量度,回链单元160从最新的处理循环开始(如64个路径存储字组最右边的存储字组B0)如图5A所示。回链单元160从回链存储字组B0内的256个判定位里识别出对应于最低量度值R0状态的判定位。该状态定义为最佳状态BS0,具有一个8位地址,如图5B所示。回链单元160读出该最佳状态判定位,然后把它左移入BS0最低有效位(即bs0)而将该值引入BS0地址,如图5所示。图5B示明,BS0地址中的其它位值(即bs6-bs1)也被左移,导致丢失BS0最高有效位(即bs7)而表示一新地址BS1。如图5A所示,BS1是回链存储器块B1中最佳状态值R1的地址。接着,回链单元160读出对应于BS1地址的判定位值,将该值左移入BS1地址而生成下一地址BS2,它对应于回链存储器块B2的最佳状态。
重复这种读与左移操作,直到处理了所有的回链存储字组(即P=64字组)。一般而言,回链操作像规定的回链长度P那样作多次读出,此时,例如要作64次读出,以便回跟踪期望的路径并生成译码的判定位。然而,这种多次读出会影响译码处理的效率与性能。
因此,要求有一种在实施Viterbi算法时能有效地作高速ACS蝶形操作的系统与方法。
发明内容
与本发明原理相符的系统与方法,针对上述提出的要求,提供的系统与方法在实施Viterbi算法时可执行高速ACS蝶形操作。
按本发明原理在这里实施并概括描述的系统与方法,包括存贮多个源状态量度的第一存储单元。第一存储单元耦合至复用器,后者根据奇偶次时钟循环能在第一与第二操作路径之间作选择。该复用器耦合至相加-比较-选择机构,后者对每个源状态量度计算目标状态量度。第二存储单元耦合至相加-比较-选择机构和复用器,用于暂存目标状态量度,而第三存储单元存贮的预定逻辑位对应于导致最低值目标状态量度的源状态。因此,复用器在偶数时钟循环期间选择第一操作路径,并把源状态量度从第一存储单元供给相加-比较-选择机构,以生成目标状态量度。在奇数时钟循环期间,复用器选择第二操作路径访问第二存储单元,把上次计算的目标状态量度用作中间源状态量度,使相加-比较-选择机构根据该中间源状态量度生成目标状态量度。
附图简介
结合在此并构成本说明书一部分的诸附图,示出了本发明一实施例,并与说明书一起说明本发明的目的、优点和原理。附图中:
图1A是字组级的示意图,示出K=9、速率=1/2的卷积编码器。
图1B是示出ACS和回链单元的系统级框图。
图2是示出ACS蝶形操作的转换图。
图3是示出8×1ACS蝶形阵列的转换图。
图4是示出4×2ACS蝶形阵列的转换图。
图5A、5B是示出回链操作的功能框图。
6A、6B是示出本发明一实施例的示意图。
较佳实施例的详细描述
以下对本发明作详细描述所参照的附图,示出了符合本发明的较佳实施例。在不违背本发明的精神与范围的情况下,其它实施例也可行,并且可对这些实施例作修改。因此,以下详述并不限制本发明,本发明的范围由所附权项规定。
本领域的技术人员很清楚,下述的本发明可在图示实例中以许多不同的软件、固件与硬件实施例来实施。用于实施本发明的实际软件代码或专用控制硬件并不限制本发明。因此,在描述本发明的操作与行为时,并不特指实际的软件代码或专用硬件元件,本领域的技术人员应该理解,可以按这里的描述设计出软件和控制硬件来实施本发明较佳的实施例。
图6A、6B示出本发明一实施例。该例利用了一种8×1ACS蝶形阵列600,运用8个平行ACS蝶形单元155提供8倍的处理速度。与如此提高速度的其它方式不同,蝶形阵列600在不同的时钟循环内工作,既限制了每次时钟循环的计算量,又降低了存储器带宽要求。
参照图6A,在偶数时钟循环期间,蝶形阵列600用所有8个蝶形单元155读出由4位计数器X标识的16个新的源状态,然后对当前格构层计算16个对应的目标状态量度tm0x、tm1x。在偶数时钟循环以后(即在奇数时钟循环期间),蝶形阵列600对下一格构层把偶数循环目标状态用作奇数源状态。这样,蝶形阵列600就将偶数循环目标状态量度tm0x、tm1x采纳为奇数源状态量度值Smx0、Smx1,然后根据量度值Smx0、Smx1,对相应的格构层计算奇数目标状态量度tm0x、tm1x
这样,图6A所示改进8×1ACS蝶形阵列600,要完全处理两组收到的由K=9编码器生成的码元,需要32次时钟循环。在偶数时钟循环期间,蝶形阵列600读出用增数的4位计数X标识的16个新的源状态,并对第一组收到的码元计算16个对应的目标状态量度tm0x、tm1x。对奇数时钟循环,蝶形阵列600把偶数循环目标状态用作新的源状态,并对第二组收到的码元计算奇数目标状态量度tm0x、tm1x。这样,蝶形阵列600每一时钟循环只执行一层的ACS,从而克服了4×2蝶形阵列400的单次时钟循环多层ACS计算问题。
图6B示出支持图6A所示8×1改进型ACS蝶形阵列600的Viterbi译码器电路650。所有状态的源状态量度Smx0、Smx1都存贮在状态RAM145中。根据图示情况,从偶数时钟循环期间读状态RAM145开始描述Viterbi译码电路650的操作。一般技术人员很容易明白,该实施例同样可从奇数时钟循环期间读状态RAM145开始描述。同样地,可在奇数循环期间作所有读操作,在偶数循环期间作所有写操作,反之亦然。
这样,在偶数时钟循环期间,将复用器MUX670配置成从对应于第一组收到码元的RAM145中选择16个连续状态的源态量度信息。源状态信息直接供给ACS单元150,后者包括8×1ACS蝶形阵列600。然后,蝶形阵列600计算相应的16个目标状态量度tm0x、tm1x,这些量度反馈给状态RAM145和MUX670。接着,把计算的目标状态信息暂存在寄存器680中,蝶形阵列600防止存贮的状态信息返回存储器,从而改善了8×1ACS蝶形阵列300的存储器带宽问题。
在奇数时钟循环期间,复用器MUX670选择前一时钟循环计算并锁存在寄存器680里的目标状态量度信息。该目标状态量度信息然后被8×1ACS蝶形阵列600用作新的源状态量度Smx0、Smx1。接着,蝶形阵列600处理该源状态量度信息,产生对应于第二组收到码元的目标量度信息。然后,把该目标量度信息存入状态存储器RAM145,将被用作下一迭代的源状态量度。这种处理对第一与第二组收到码元重复32次时钟循环,以对其中每二组收到码元生成256个判定值。在32次时钟循环后,Viterbi译码电路650以下面两组收到码元启动该全过程。
通过减少生成译码判定位所需的读次数,Viterbi译码电路650还提高了回链操作的性能。如上所述,回链单元160负责存贮ACS阵列生成的判定位。再者,在二次时钟循环(即奇偶次时钟循环)后,改进的8×1ACS蝶形阵列600生成32个判定位。Viterbi译码电路650让这32个判定位以单个32位存储字存贮,这样就把奇偶时钟循环期间生成的判定位以同一存储字存贮。
因此,如相对回链操作描述的那样,为了建立回链时间的开始点,首先用最佳状态从最后一次处理循环开始识别最低量度的状态(即最佳状态判定位值)。由于每个存储字有32位,所以每次处理循环有16个字(两组收到的码元),每个32位存储字有一独特的8位地址。一实施例用最佳状态地址的4位选择要读的存储字,另外4位则确定在该32位存储字中要读的16位。具体而言,若最佳状态BS0有8位地址(bs7~bs1、bs0),该实施例就选用位(bs5、bs4、bs3、bs2)在存储字组B。内选择一特定存储字,并依靠位(bs7、bs6、bs1、bs0)选择最佳状态判定位R0。将最佳状态判定位R0左移入BS0LSB(bs6、bs5、bs4、bs3、bs2、bs1、bs0、R0),形成新的最佳状态地址BS1
由于ACS计算对两组收到码元进行,因而对刚读出的判定位而言,导向目标状态的源状态具有它们贮存在同一32位存储字内的判定位。因此,该实施例选用位(bs6、bs1、bs0、R0)来选择另一半32位存储字的下一个最佳状态判定位R1。所以,该最佳状态判定位从32位存储字的一半位中选出,而选出的位有助于确定在另一半32位存储字中哪一个判定位是下一个最佳状态判定位。因此,正确地回链到期望的路径并生成译码的判定位所需的读次数可减少一半。这样,对一路径存储器深度P=64存储字组的回链单元160而言,只要求读32次。
上述描述的本发明较佳实施例提供了示例与说明,但并非将本发明限制于揭示的精确形式。根据上述技术或通过本发明的实践,可以作出更改与变化。如很容易把这里揭示的实施例结构扩展成16×1阵列或32×1阵列,每次时钟循环可以生成32或64种状态。另外,不是对两组收到的码元操作,实施例还能对若干组收到的码元操作。因而要指出,本发明的范围由权项及其等同物限定。

Claims (21)

1、一种对实施维特比算法作相加-比较-选择蝶形操作的方法,其特征在于,所述方法包括下述步骤:
在偶数时钟循环期间,从对应于第一组收到码元的存储器第一部分中读出多个源状态量度;
对每个所述源状态量度计算目标状态量度;
把所述目标状态量度暂存入存储器第二部分;
确定哪一个所述目标状态量度含最低值;
把对应于所述最低值目标状态量度的预定逻辑位存入存储器第三部分;
在奇数时钟循环期间,从所述存储器第二部分中读出所述目标状态量度,并把所述读出的目标状态量度用作多个对应于第二组收到码元的中间源状态量度;
对每个所述中间源状态量度计算中间目标状态量度;
确定哪一个所述中间目标状态量度含有最低值;
把对应于所述最低值中间目标状态量度的预定逻辑位存入所述存储器第三部分。
2、如权利要求1所述的方法,其特征在于,应用约束长度K对所述第一与第二组收到码元作编码,其中,K是大于或等于1的整数。
3、如权利要求2所述的方法,其特征在于,执行所述相加-比较-选择蝶形操作,直到对各所述第一与第二组收到码元访问了2k-1种目标状态的每种状态。
4、如权利要求3所述的方法,其特征在于,用8×1相加-比较-选择蝶形结构作所述相加-比较-选择蝶形操作。
5、如权利要求4所述的方法,其特征在于,所述多个源状态量度包括一组16种连续源状态的量度,所述16种连续源状态组在增加偶数时钟循环期间连续选出。
6、如权利要求5所述的方法,其特征在于,所述计算目标状态量度包括:
把所述源状态量度加到对应于两种可能转换的每种转换的分支量里,
比较每个所述源状态量度与分支量度之和,和
选择最小和值,将它定为目标状态量度。
7、如权利要求6所述的方法,其特征在于,所述计算中间目标状态量度的步骤包括:
把所述中间源状态量度加到对应于两种可能转换的每种转换的分支量度里,
比较每个所述中间源状态量度与分支量度之和,和
选择最小和值并将它定为中间目标状态量度。
8、如权利要求7所述的方法,其特征在于,所述相加-比较-选择蝶形操作用于对卷积编码数据作译码。
9、如权利要求8所述的方法,其特征在于,所述存储器第三部分设置在包含多个存储字组的回链存储装置中,每个所述存储字组对每次所述偶数与奇数时钟循环包含所述预定逻辑位。
10、如权利要求8所述的方法,其特征在于,还包括一种回链操作,以便生成多个译码的位值。
11、如权利要求10所述的方法,其特征在于,所述回链操作步骤包括:
对所述回链存储装置中最新的所述存储字组,识别含最低值的所述预定逻辑位;
使所述最低值逻辑位与一特定地址相关联;
读取所述预定逻辑位;和
将所述最低值逻辑位值移入所述特定地址的最低有效位,并将所述特定地址内的所有值左移一位位置,以便在所述回链存储装置中确定对应于下一个存储字组的下一个特定地址。
12、一种对维特比算法实施方案作相加-比较-选择蝶形操作的系统,其特征在于,所述系统包括:
用于存贮多个源状态量度的存储器第一部分;
与所述存储器第一部分耦合的复用器,用于在偶数时钟循环期间选择第一操作路径,在奇数时钟循环期间选择第二操作路径;
与所述复用器耦合的存储器第二部分,用于临时存贮目标状态量度;
与所述存储器第二部分和所述复用耦合的相加-比较-选择机构,用于对每个所述源状态量度计算目标状态量度;和
存储器第三部分,用于存贮对应于含最低值的被计算目标状态量度的预定逻辑位;
其中,所述复用器在偶数时钟循环期间选择第一操作路径,并将所述源状态量度从所述存储器第一部分提供给所述相加-比较-选择机构,以生成对应于第一组收到码元的目标状态量度;和
所述复用器在奇数时钟循环期间选择第二操作路径,以便从所述存储器第二部分读取目标状态量度,并将所述读取的目标状态量度用作中间源状态量度,以便所述相加-比较-选择机构根据对应于第二组收到码元的所述中间源状态量度生成中间目标状态量度。
13、如权利要求12所述系统,其特征在于,所述第一与第二组收到码元用约束长度K编码,其中,K是大于或等于1的整数。
14、如权利要求13所述的系统,其特征在于,执行所述相加-比较-选择蝶形操作,直到对每个所述第一与第二组收到码元访问了每个2k-1种目标状态。
15、如权利要求14所述的系统,其特征在于,用8×1相加-比较-选择蝶形结构作所述相加-比较-选择蝶形操作。
16、如权利要求15所述的系统,其特征在于,所述多个源状态量度包括一组16种连续源状态的量度,所述组的16种连续状态在增加偶数时钟循环期间连续选出。
17、如权利要求12所述的系统,其特征在于,所述相加-比较-选择机构通过下述执行所述相加-比较-选择操作:把所述源状态量度加到对应于每个两种可能转换的分支量度里,比较每个所述源状态量度与分支量度之和,以及选择最小和值并把它定为目标状态量度。
18、如权利要求17所述的系统,其特征在于,所述相加-比较-选择蝶形操作用于对卷积编码数据作译码。
19、如权利要求18所述的系统,其特征在于,所述存储器第三部分设置在包含多个存储字组的回链存储装置中,每个所述存储字组对每次所述奇偶数时钟循环含有所述预定逻辑位。
20、如权利要求19所述的系统,其特征在于,所述回链存储装置生成多个译码的位值。
21、如权利要求20所述的系统,其特征在于,所述回链存储装置对最新的所述存储字组识别含最低值的所述预定逻辑位,把所述最低值逻辑位与特定地址相关联,读取所述预定逻辑位,而且将所述最低值逻辑位的值移入所述特定地址的最低位,把所述特定地址内所有值左移一位位置,以便在所述回链存储装置中确定对应于下一存储字组的下一特定地址。
CNB008145385A 1999-10-21 2000-10-23 维特比译码器的高速相加-比较-选择 Expired - Lifetime CN1168224C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/422,920 1999-10-21
US09/422,920 US6333954B1 (en) 1999-10-21 1999-10-21 High-speed ACS for Viterbi decoder implementations

Publications (2)

Publication Number Publication Date
CN1379931A CN1379931A (zh) 2002-11-13
CN1168224C true CN1168224C (zh) 2004-09-22

Family

ID=23676955

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB008145385A Expired - Lifetime CN1168224C (zh) 1999-10-21 2000-10-23 维特比译码器的高速相加-比较-选择

Country Status (13)

Country Link
US (1) US6333954B1 (zh)
EP (1) EP1230737A1 (zh)
JP (1) JP2003512756A (zh)
KR (1) KR100779782B1 (zh)
CN (1) CN1168224C (zh)
AU (1) AU1228501A (zh)
BR (1) BR0014899A (zh)
CA (1) CA2387766A1 (zh)
HK (1) HK1048204A1 (zh)
IL (2) IL149248A0 (zh)
MX (1) MXPA02003937A (zh)
RU (1) RU2246751C2 (zh)
WO (1) WO2001029974A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810145A (zh) * 2012-11-06 2014-05-21 德克萨斯仪器股份有限公司 维特比蝶形运算

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3501725B2 (ja) 2000-05-12 2004-03-02 日本電気株式会社 ビタビ復号器
EP1158683A1 (de) * 2000-05-24 2001-11-28 Infineon Technologies AG Vorrichtung und Verfahren zum Durchführen eines Viterbi-Algorithmus
US6873707B1 (en) * 2000-09-28 2005-03-29 Cisco Technology, Inc. Hardware-based encryption/decryption employing cycle stealing
US7006634B1 (en) * 2000-09-28 2006-02-28 Cisco Technology, Inc. Hardware-based encryption/decryption employing dual ported key storage
US20020198681A1 (en) * 2001-06-13 2002-12-26 Kouritzin Michael A. Flexible efficient branching particle tracking algorithms
KR100437697B1 (ko) * 2001-07-19 2004-06-26 스프레드텔레콤(주) 다수준 격자부호변조방식의 복호 방법 및 장치
US6910177B2 (en) * 2001-12-21 2005-06-21 Texas Instruments Incorporated Viterbi decoder using restructured trellis
FI20021656A0 (fi) * 2002-09-16 2002-09-16 Nokia Corp Menetelmä ja järjestely dekoodauksen suorittamiseksi
JP2005045727A (ja) * 2003-07-25 2005-02-17 Matsushita Electric Ind Co Ltd ビタビ復号器
US20050138535A1 (en) * 2003-12-02 2005-06-23 Sivagnanam Parthasarathy Method and system for branch metric calculation in a viterbi decoder
US8290095B2 (en) * 2006-03-23 2012-10-16 Qualcomm Incorporated Viterbi pack instruction
US20070266303A1 (en) * 2006-04-27 2007-11-15 Qualcomm Incorporated Viterbi decoding apparatus and techniques
US7861147B2 (en) * 2006-12-08 2010-12-28 Via Technologies, Inc. ACS unit and method thereof
US8185810B1 (en) * 2007-04-13 2012-05-22 Link—A—Media Devices Corporation Low power viterbi trace back architecture
CN103905068B (zh) * 2012-12-26 2018-06-26 中国移动通信集团公司 一种维特比译码方法及系统
RU2608872C1 (ru) * 2015-09-24 2017-01-25 Валерий Владимирович Золотарев Способ кодирования и декодирования блокового кода с использованием алгоритма Витерби
CN114924615B (zh) * 2022-04-22 2024-02-20 龙芯中科技术股份有限公司 内存时钟调节方法、装置、电子设备及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5619514A (en) 1994-12-29 1997-04-08 Lucent Technologies Inc. In-place present state/next state registers
JP3344221B2 (ja) 1996-06-28 2002-11-11 株式会社日立製作所 デジタル信号復号装置及びそれに用いる復号方法
KR100195745B1 (ko) * 1996-08-23 1999-06-15 전주범 비터비 복호화기의 가산 비교 선택 장치
US5987638A (en) 1997-04-22 1999-11-16 Lsi Logic Corporation Apparatus and method for computing the result of a viterbi equation in a single cycle
US6097769A (en) * 1998-02-10 2000-08-01 Lucent Technologies Inc. Viterbi detector using path memory controlled by best state information
US6148431A (en) * 1998-03-26 2000-11-14 Lucent Technologies Inc. Add compare select circuit and method implementing a viterbi algorithm

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103810145A (zh) * 2012-11-06 2014-05-21 德克萨斯仪器股份有限公司 维特比蝶形运算
CN103810145B (zh) * 2012-11-06 2018-06-22 德克萨斯仪器股份有限公司 维特比蝶形运算

Also Published As

Publication number Publication date
AU1228501A (en) 2001-04-30
IL149248A0 (en) 2002-11-10
JP2003512756A (ja) 2003-04-02
US6333954B1 (en) 2001-12-25
KR20020048975A (ko) 2002-06-24
RU2246751C2 (ru) 2005-02-20
BR0014899A (pt) 2002-10-01
EP1230737A1 (en) 2002-08-14
MXPA02003937A (es) 2002-12-13
CN1379931A (zh) 2002-11-13
WO2001029974A1 (en) 2001-04-26
HK1048204A1 (zh) 2003-03-21
KR100779782B1 (ko) 2007-11-27
CA2387766A1 (en) 2001-04-26
IL149248A (en) 2006-04-10

Similar Documents

Publication Publication Date Title
CN1168224C (zh) 维特比译码器的高速相加-比较-选择
CN1099165C (zh) 维特比译码器
EP0237186B1 (en) Decoding of lattices and codes
EP0138598A2 (en) Error correction apparatus using a viterbi decoder
US7917835B2 (en) Memory system and method for use in trellis-based decoding
EP0333324A2 (en) Matched spectral null trellis codes for partial response channels
EP0674396A2 (en) Area-efficient decoders for rate-k/n convolutional codes and other high rate trellis codes
CN100517984C (zh) 用于移动通信系统的维特比/涡轮联合译码器
EP0660534B1 (en) Error correction systems with modified viterbi decoding
CN101635611B (zh) 一种信道译码方法和装置
US7630461B2 (en) Low-latency high-speed trellis decoder
US6711711B2 (en) Error correctible channel coding method
US6272661B1 (en) Minimum memory implementation of high speed viterbi decoder
US5594742A (en) Bidirectional trellis coding
CN1175825A (zh) 用于viterbi解码器中的追溯方法及装置
CN1130836C (zh) 维特比解码器
CN1446406A (zh) 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备
US20060115023A1 (en) Apparatus and method for decoding and trace back of convolution codes using the viterbi decoding algorithm
EP0467522A2 (en) Maximum likelihood sequence detector
US7035356B1 (en) Efficient method for traceback decoding of trellis (Viterbi) codes
CN1787386A (zh) 一种维特比译码器路径度量存储的方法
US8042032B2 (en) Four-stage pipeline based VDSL2 Viterbi decoder
JP2002076924A (ja) ビタビ復号器
KR20040092783A (ko) 비터비 알고리즘을 이용한 트렐리스 디코더와 그의스테이트 그룹핑방법
WO2007000708A1 (en) Viterbi decoder and decoding method thereof

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1048204

Country of ref document: HK

CX01 Expiry of patent term
CX01 Expiry of patent term

Granted publication date: 20040922