CN101320979B - 一种维特比译码器及其路径度量计算方法 - Google Patents
一种维特比译码器及其路径度量计算方法 Download PDFInfo
- Publication number
- CN101320979B CN101320979B CN2008101167923A CN200810116792A CN101320979B CN 101320979 B CN101320979 B CN 101320979B CN 2008101167923 A CN2008101167923 A CN 2008101167923A CN 200810116792 A CN200810116792 A CN 200810116792A CN 101320979 B CN101320979 B CN 101320979B
- Authority
- CN
- China
- Prior art keywords
- path metric
- fifo
- processing element
- butterfly processing
- multiplexer
- 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 - Fee Related
Links
- 238000004364 calculation method Methods 0.000 title abstract description 7
- 238000005259 measurement Methods 0.000 title abstract 5
- 238000000034 method Methods 0.000 claims description 7
- 238000000205 computational method Methods 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 5
- 238000003860 storage Methods 0.000 description 4
- 230000007704 transition Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 1
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供一种维特比译码器及其路径度量计算方法。所述维特比译码器包括:n个蝶形运算单元,宽度为n个路径度量、深度为N/(4n)的第一、二FIFO,宽度为n个路径度量、深度为3N/(8n)的第三、四FIFO,第一、二多路复用器,控制器,其中,N为维特比译码器的状态数。依照本发明,能够减少维特比译码器进行路径度量计算所需的存储单元的数目。
Description
技术领域
本发明属于专用集成电路(ASIC)领域,特别涉及一种维特比(viterbi)译码器及其路径度量计算方法。
背景技术
viterbi译码广泛应用于各种通信领域。在viterbi译码中,需要对所有可能的状态路径进行路径度量的计算,路径状态的数目取决于编码器的约束长度。图1给出了一个卷积码编码器的示意图。图1中以1/2编码速率为例,G1和G2代表编码生成多项式,比特(bit)0到比特L-1合并的数值被称为卷积码的状态,如果约束长度为L,则状态数一共为N=2L-1,x代表输入编码器的数据,y1和y2是编码器的输出。
在卷积编码过程中,可能存在的状态转移如图2所示:如果输入编码器的数据为比特0,则编码器的状态转移为2k→k或者2k+1→k;如果输入编码器的数据为比特1,则编码器的状态转移为2k→k+N/2或者2k+1→k+N/2。译码的过程就是把接收到的比特与所有可能的状态转移路径进行对比,挑选出概率最大的那条路径作为译码结果。
在viterbi译码中,按照图2所示的路径转移进行计算。从第τ步到第τ+1步:从状态2k出发存在两条可能的转移路径,分别对应于编码器输入比特是0或者1的情况,假如输入是0,则状态会从2k转移到k状态,对应的转移路径度量为λ2k,τ;假如输入是1,则状态会从2k转移到k+N/2状态,相应的转移度量为λ2k+N,τ。同理有对应于2k+1状态的两种可能的转移路径,以及相对应的转移路径度量λ2k+1,τ和λ2k+N+1,τ。计算过程就是根据第τ步的路径度量Г2k,τ、Г2k+1,τ和各自对应的转移路径度量计算出第τ+1步的路径度量Гk,τ+1、Гk+N/2,τ+1,如下所示:
Гk,τ+1=max(Г2k,τ+λ2k,τ,Г2k+1,τ+λ2k+1,τ)
Гk+N/2,τ+1=max(Г2k,τ+λ2k+N,τ,Г2k+1,τ+λ2k+N+1,τ)
在viterbi译码的计算过程中,需要保存每个状态的路径度量。由于每步计算的输出状态并不等于输入状态,在硬件实现中,为保证计算的速度,一般都采用乒乓缓存之类的方式,把存储空间分为两部分。如图3所示:在第τ步计算时,路径度量值从缓存1中取出,由蝶形运算单元进行计算,计算结果储存到缓存2中,第τ+1步则反之。缓存1和缓存2可以独立存取,这样可以保证取数据、计算和储存结果这三种操作能同时进行,从而达到最大速度。为保证缓存1和缓存2的地址空间在存取的时候不发生冲突,一般缓存1和缓存2都需要能完整地保存所有状态的路径度量值,从而一共需要2N个存储单元。
发明内容
本发明所要解决的技术问题是提供一种维特比译码器及其路径度量计算方法,以减少维特比译码器进行路径度量计算所需的存储单元的数目。
为解决上述技术问题,本发明提供技术方案如下:
一种用于维特比译码器的路径度量计算方法,所述维特比译码器中包括:n个蝶形运算单元,宽度为n个路径度量、深度为N/(4n)的第一、二FIFO,宽度为n个路径度量、深度为3N/(8n)的第三、四FIFO,N为维特比译码器的状态数,1≤n≤N/4,所述方法包括:
重复N/(4n)次执行下述步骤A、B:
A、从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
B、从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中;
重复N/(4n)次执行下述步骤C、D:
C、从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
D、从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中。
一种维特比译码器,包括:n个蝶形运算单元,宽度为n个路径度量、深度为N/(4n)的第一、二FIFO,宽度为n个路径度量、深度为3N/(8n)的第三、四FIFO,第一、二多路复用器,控制器,N为维特比译码器的状态数,1≤n≤N/4,其中,所述控制器用于控制第一、二多路复用器执行如下操作:
重复N/(4n)次执行:
第一多路复用器从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
第一多路复用器从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中;
重复N/(4n)次执行:
第一多路复用器从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
第一多路复用器从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中。
本发明对维特比译码器中路径度量的存储进行了改进,使得在不影响计算速度的前提下,只需要1.5N个存储单元即可满足要求,减少了存储单元的数目,易于以流水线方式实现;并且可以根据实际应用的需要,灵活设置蝶形运算单元的数目,从而达到最优的译码速度。
附图说明
图1为现有技术中卷积码编码器的示意图;
图2为现有技术中viterbi译码蝶形运算示意图;
图3为现有技术中viterbi译码路径度量计算示意图;
图4为本发明实施例的viterbi译码器的结构示意图;
图5为本发明实施例中FIFO对路径度量的存储方式示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明通过对viterbi译码器的路径度量存储方式进行改进,在不影响viterbi译码速度的情况下,减少路径度量存储单元的数目。
参照图4,本发明实施例的viterbi译码器主要包括:n个蝶形运算单元;四个先入先出存储器(FIFO):FIFO1、FIFO2、FIFO3和FIFO4;两个多路复用器:mux1和mux2;控制器。其中,FIFO1和FIFO2的数据宽度各为n个路径度量,深度各为N/(4n),FIFO3和FIFO4的数据宽度各为n个路径度量,深度各为3N/8n,N为维特比译码器的状态数,n可以根据实际的需要进行调整,且满足:1≤n≤N/4。可以看出,所述四个FIFO中总共的存储单元数为3N/2,少于现有技术中维特比译码所需的存储单元数:2N。
FIFO1到FIFO4中存储的状态路径度量如图5所示。图5中给出的是在每步计算开始时各个状态的路径度量存放的位置(其中,在初始化时,每个FIFO的每个存储单元中存储有初始路径度量值,例如:0),每次存取时,数据从FIFO的顶端被依次读出,从FIFO底部依次写入,读取和存储的操作可同时进行。FIFO1和FIFO2在读取上一步数据的同时,新计算完成的数据会被写入,直到整个FIFO的数据全部被更新为止。而在本步计算开始时,FIFO3和FIFO4中没有数据被读出,只会有新计算完成的数据被写入,因此,FIFO3和FIFO4需要比FIFO1和FIFO2更多的容量,用来保存本步计算产生的数据,并保证原有的未计算过的数据不被覆盖掉。图5中括号所包括的部分就表示额外需要的用于存储本步计算产生的数据的位置。
四个FIFO的数据宽度可以保证一次能够读出n个状态的数据,这样,每次从两个FIFO中就能一次取出n个蝶形运算单元的输入数据(2n个路径度量)。
在操作时,根据当前的步骤,轮流从FIFO1、FIFO2、FIFO3和FIFO4中读取上一步的路径度量,经蝶形运算后再存入对应的FIFO中,其中,所述蝶形运算请参照图2,蝶形运算的具体过程在背景技术中已有描述,这里不做赘述。mux1是一个4选2的多路复用器,用来选择输入到蝶形运算单元的路径度量。mux2是一个2到4的多路复用器,用来将计算结果储存到对应的FIFO中。mux1和mux2对FIFO的选取由控制器进行控制,控制器先控制mux1和mux2按方式1选取FIFO,方式1中的计算完成后,再控制mux1和mux2按方式2选取FIFO,具体如下:
方式1
计算次数 蝶形输入 蝶形输出
1 (FIFO1,FIFO2)------------->(FIFO1,FIFO3)
2 (FIFO1,FIFO2)------------->(FIFO2,FIFO4)
3 (FIFO1,FIFO2)------------->(FIFO1,FIFO3)
4 (FIFO1,FIFO2)------------->(FIFO2,FIFO4)
直到FIFO1和FIFO2的第τ步的状态路径度量都读出,计算出的第τ+1步路径度量分别存到FIFO1、FIFO2、FIFO3和FIFO4中。在方式1中,每个蝶形运算单元共计算N/(4n)次。
每次读取时,按照状态0,1,2,3,...的顺序读取上一步的路径度量,计算的结果按照图5所示的位置存入到上述相应的FIFO中。可以看出,在方式1中,数据仅从FIFO1和FIFO2中读出,但有部分数据会写入FIFO3和FIFO4中。因此,FIFO3和FIFO4中需要额外的空间来保存本步计算产生的数据,以保证原有的未计算过的数据不会被覆盖掉。
当FIFO1和FIFO2中原有的数据都处理完毕后,就开始从FIFO3和FIFO4中按照如下方式取数和存储:
方式2
计算次 数蝶形输入 蝶形输出
1 (FIFO3,FIFO4)------------->(FIFO1,FIFO3)
2 (FIFO3,FIFO4)------------->(FIFO2,FIFO4)
3 (FIFO3,FIFO4)------------->(FIFO1,FIFO3)
4 (FIFO3,FIFO4)------------->(FIFO2,FIFO4)
直到FIFO3和FIFO4中的第τ步的状态路径度量都读出,计算出的第τ+1步路径度量分别存到FIFO1、FIFO2、FIFO3和FIFO4中。在方式2中,每个蝶形运算单元共计算N/(4n)次。
方式1和方式2中的所有计算完成后,FIFO1到FIFO4中的路径度量的存储位置恢复到本步计算之前的状态,则可重新从FIFO1和FIFO2开始下一步的计算,直到所有的路径长度都计算完毕。
另外,此种结构并不依赖于蝶形运算单元的数目。采用不同数目的蝶形运算单元,都可以采用此结构,只需要相应改变四个FIFO的数据宽度和深度,从而可以根据实际应用的需要,灵活配置蝶形运算单元的数目,以达到最优化的译码速度。
假设n=2,即viterbi译码器使用了两个蝶形运算单元,N=256,即共有256个状态,路径度量的数据宽度设为10比特,则FIFO1和FIFO2的深度为32,宽度为20比特,FIFO3和FIFO4的深度为48,宽度为20比特。在每步路径度量的计算中,第1到第32次计算按照方式1进行,第33到第64次计算按照方式2进行。完成一步完整的计算之后,再重新开始下一步的路径度量计算。
最后应当说明的是,以上实施例仅用以说明本发明的技术方案而非限制,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神范围,其均应涵盖在本发明的权利要求范围当中。
Claims (2)
1.一种用于维特比译码器的路径度量计算方法,其特征在于,所述维特比译码器中包括:n个蝶形运算单元,宽度为n个路径度量、深度为N/(4n)的第一、二FIFO,宽度为n个路径度量、深度为3N/(8n)的第三、四FIFO,N为维特比译码器的状态数,1≤n≤N/4,所述方法包括:
重复N/(4n)次执行下述步骤A、B:
A、从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
B、从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中;
重复N/(4n)次执行下述步骤C、D:
C、从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
D、从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中。
2.一种维特比译码器,其特征在于,包括:n个蝶形运算单元,宽度为n个路径度量、深度为N/(4n)的第一、二FIFO,宽度为n个路径度量、深度为3N/(8n)的第三、四FIFO,第一、二多路复用器,控制器,N为维特比译码器的状态数,1≤n≤N/4,其中,所述控制器用于控制第一、二多路复用器执行如下操作:
重复N/(4n)次执行:
第一多路复用器从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
第一多路复用器从第一、二FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中;
重复N/(4n)次执行:
第一多路复用器从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第一、三FIFO中;
第一多路复用器从第三、四FIFO中分别读取n个路径度量,将读取到的2n个路径度量送入n个蝶形运算单元,第二多路复用器将n个蝶形运算单元运算产生的2n个路径度量存储到第二、四FIFO中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101167923A CN101320979B (zh) | 2008-07-17 | 2008-07-17 | 一种维特比译码器及其路径度量计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101167923A CN101320979B (zh) | 2008-07-17 | 2008-07-17 | 一种维特比译码器及其路径度量计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101320979A CN101320979A (zh) | 2008-12-10 |
CN101320979B true CN101320979B (zh) | 2010-06-02 |
Family
ID=40180857
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101167923A Expired - Fee Related CN101320979B (zh) | 2008-07-17 | 2008-07-17 | 一种维特比译码器及其路径度量计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101320979B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105610550B (zh) * | 2016-02-05 | 2016-11-30 | 南京飞腾电子科技有限公司 | 一种用于电力线载波通信的Viterbi译码方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1446406A (zh) * | 2000-04-06 | 2003-10-01 | 高通股份有限公司 | 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 |
CN1499764A (zh) * | 2002-11-08 | 2004-05-26 | 明基电通股份有限公司 | 一种适用于维特比译码器的分支度量产生装置 |
US7043682B1 (en) * | 2002-02-05 | 2006-05-09 | Arc International | Method and apparatus for implementing decode operations in a data processor |
EP1762005A2 (en) * | 2004-06-23 | 2007-03-14 | Koninklijke Philips Electronics N.V. | Addressing strategy for viterbi metric computation |
-
2008
- 2008-07-17 CN CN2008101167923A patent/CN101320979B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1446406A (zh) * | 2000-04-06 | 2003-10-01 | 高通股份有限公司 | 在高速acs维特比译码器实现的存储器中有效读取和存储状态量度的方法和设备 |
US7043682B1 (en) * | 2002-02-05 | 2006-05-09 | Arc International | Method and apparatus for implementing decode operations in a data processor |
CN1499764A (zh) * | 2002-11-08 | 2004-05-26 | 明基电通股份有限公司 | 一种适用于维特比译码器的分支度量产生装置 |
EP1762005A2 (en) * | 2004-06-23 | 2007-03-14 | Koninklijke Philips Electronics N.V. | Addressing strategy for viterbi metric computation |
Also Published As
Publication number | Publication date |
---|---|
CN101320979A (zh) | 2008-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101504083B1 (ko) | 비휘발성 메모리를 갖춘 멀티레벨 시스템에서의 진보된 비트별 동작 및 장치 | |
JP3862062B2 (ja) | 高速ブロックパイプライン構造のリード−ソロモンデコーダに適用するためのメモリ装置及びメモリアクセス方法並びにそのメモリ装置を備えたリード−ソロモンデコーダ | |
CN101777924B (zh) | 一种Turbo码译码方法和装置 | |
JP3515720B2 (ja) | ビタビ復号器 | |
KR101437517B1 (ko) | 인터리빙 기법을 이용한 메모리 시스템, 및 그 방법 | |
WO2006124071A1 (en) | Decoder for low-density parity-check convolutional codes | |
JP3262250B2 (ja) | 現状態/次状態レジスタの効率的利用 | |
JPH08237144A (ja) | ビタビアルゴリズムを実施するための信号処理回路 | |
JP2007068155A (ja) | 並列のターボ復号機中でのインターリーブの方法およびシステム。 | |
WO2000052833A1 (fr) | Procede et appareil de decodage de probabilite maximale a posteriori | |
WO2005011129A1 (ja) | ビタビ復号器 | |
CN101320979B (zh) | 一种维特比译码器及其路径度量计算方法 | |
JP4600183B2 (ja) | ビタビ復号装置 | |
JP4580927B2 (ja) | ビタビ復号装置、およびビタビ復号方法 | |
JP3784896B2 (ja) | ビタビデコーダの論理ブロック | |
US20080098281A1 (en) | Using sam in error correcting code encoder and decoder implementations | |
KR100499467B1 (ko) | 블록 인터리빙 방법 및 그를 위한 장치 | |
JP2003530753A (ja) | 高速acsビタビデコーダの実行のためにメモリ内の状態の距離を効率的に読出して記憶するための方法および装置 | |
CN101515805A (zh) | 一种Turbo译码器及其译码方法 | |
JP4047697B2 (ja) | ビタビ復号装置 | |
CN106452461A (zh) | 一种通过矢量处理器实现viterbi解码的方法 | |
JP4422867B2 (ja) | ビタビデコーダ | |
EP1192719A1 (en) | Viterbi decoder | |
CN101160729B (zh) | 用于并行处理递归数据的定址体系结构 | |
JP3260714B2 (ja) | ビタビ復号化装置およびビタビ復号化方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20100602 |
|
CF01 | Termination of patent right due to non-payment of annual fee |