0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

高速率低延時Viterbi譯碼器的設計與實現(xiàn)

SwM2_ChinaAET ? 來源:未知 ? 作者:李倩 ? 2018-10-04 09:58 ? 次閱讀

摘要:

在Vitebi譯碼器的實現(xiàn)中,由于路徑存儲方式的不同分為回溯和寄存器交換模式,效果是延時與資源消耗一般只能二取其一,互為矛盾。采取3~6長度的RE-寄存器交換,混合回溯模式,極大地減少了回溯時間,并減少了路徑存儲空間需求,付出的代價是每ACS增加2~5 LUT;再結(jié)合其他Viterbi譯碼器優(yōu)化算法,如分支度量一次計算,每ACS查找——即4選1等措施,實現(xiàn)了高吞吐量(340 Mb/s)、低延時、低資源消耗的全并行Viterbi譯碼器。

0 引言

Viterbi譯碼是1967年由VITERBI A J提出的一種概率譯碼算法,且是最大似然譯碼法。后來發(fā)現(xiàn),這種算法可用于多種數(shù)字估值問題,如碼間干擾下的判決、連續(xù)相位FSK信號的最佳接收、語詞識別、序列跟蹤和源編碼等。Viterbi算法的這些應用都可以歸結(jié)為時間離散、狀態(tài)有限的馬氏過程的最佳估值問題,因而它不僅是卷積碼的一種重要譯碼算法,而且在理論上也有較大意義。

由于卷積碼優(yōu)良的糾錯性能和Viterbi硬件譯碼器簡單(容易實現(xiàn)高速譯碼),被廣泛應用于深空通信、衛(wèi)星通信、IEEE 802.11、超寬帶(UWB)系統(tǒng)、DAB、DVB、2G、3G、LTE、Wimax以及電力線通信中。

自1986年以來,國際上發(fā)表了很多關于Viterbi譯碼器設計的文章,如文獻[1]~[6]。為追求譯碼速度,大多采用全并行結(jié)構,吞吐量可高達1.74 Gb/s[3]、2.8 Gb/s[4],同時目前各大FPGA廠商都已經(jīng)提供了很多的IP核[7]。

由于內(nèi)部互連機制不同,基于FPGA的譯碼器與結(jié)構化ASIC以及定制ASIC的工作速度不可同日而語,在FPGA上實現(xiàn)的譯碼器工作頻率一般在140~510 MHz[6,7]之間,同樣的設計結(jié)構若采取定制ASIC實現(xiàn),應能達到與文獻[3-4]相近的工作頻率(800 MHz~1.4 GHz)。

從工程應用角度看,對Viterbi 譯碼器的性能評價指標主要有譯碼速度、處理時延和資源占用等。傳統(tǒng)的Viterbi譯碼器結(jié)構難以兼具資源消耗少和時延小的優(yōu)點。而在高速通信系統(tǒng)中,很多時候?qū)ψg碼時延要求很高。本文提出了一種采用部分寄存器交換的辦法可兼顧譯碼延時和消耗邏輯資源的性能。測試結(jié)果表明,采用這種部分寄存器交換的回溯方式存儲幸存路徑,具有寄存器交換時延小的優(yōu)點,而所需邏輯資源與普通回溯法相當,所需存儲單元大大小于普通回溯法。

1 部分寄存器交換方式的路徑存儲

1.1 傳統(tǒng)的路徑存儲

幸存路徑存儲器的結(jié)構主要有兩種:一種是寄存器交換結(jié)構(RE),另一種是回溯結(jié)構(TB)[1-2]。

前者采用專用寄存器作為存儲主體,存儲的是路徑上的輸入信號信息,利用數(shù)據(jù)在寄存器陣列中的不斷交換來實現(xiàn)譯碼。這種方法雖然具有存儲單元少、譯碼延時短的優(yōu)點,但由于其內(nèi)連關系過于復雜, 功耗大(每個新判決比特輸入時寄存器都要翻轉(zhuǎn)),不適合大狀態(tài)Viterbi譯碼器的FPGA實現(xiàn)。

回溯法利用通用的RAM作為存儲主體,存儲的是幸存路徑的格狀連接關系,通過讀寫RAM來完成數(shù)據(jù)的寫入和回溯輸出。其優(yōu)點是內(nèi)連關系簡單、規(guī)則;缺點一是譯碼延時大——一般并行譯碼時回溯法的延時是寄存器交換法的4倍,缺點二是存儲單元要求多。具體性能區(qū)別分析如下。

設卷積碼編碼約束長度為L,譯碼深度V=6×L;對碼率R=1/2的譯碼器而言,每系統(tǒng)時鐘輸入2 bit編碼傳輸信息,輸出1 bit譯碼后信息。

對于基2加比選的全并行RE方式:路徑存儲部分需鎖存交換2L-1個狀態(tài)的長V路徑信息,即需V×2L-1個邏輯單元和寄存器,譯碼時延為V個系統(tǒng)時鐘。

對于全并行的傳統(tǒng)TB方式,因每譯出1 bit,至少回溯V bit,為實現(xiàn)連續(xù)譯碼,一次回溯應譯出多個比特,設為x。則從譯碼輸入到準備回溯需等待V+x個系統(tǒng)時鐘,若每系統(tǒng)時鐘只回溯y=1 bit,則一次譯碼輸出需回溯V+x個系統(tǒng)時鐘。采取多片輪讀(一片寫,2至多片讀)的模式,在回溯期間又寫入V+x個符號的路徑信息。

流水線方式操作時,在(n+1)x系統(tǒng)時鐘內(nèi)至少完成n次回溯譯碼x bit。2片讀時,2x時鐘內(nèi)需完成(V+x)符號的回溯,因而一般取x=V。

這樣,2x時鐘內(nèi)讀的2片RAM深度分別為2V,寬度2L-1個狀態(tài)的1 bit路徑信息,共計4V深度(按之前4V系統(tǒng)時鐘內(nèi)寫入順序標記為1a、1b,之后啟動寫2a、2b的深度為2V的2片RAM),寫入2V深度之后啟動回溯讀出1b、1a;V深度后另一片讀出2a、1b,這樣回溯出1a、1b處的傳輸信息,同時寫入2b、1a路徑。

在這段時間內(nèi)又寫入2V深度的路徑信息(1a,1b),與2片讀的RAM中的前一片2V深度RAM讀出信息(1b,1a)交叉。當路徑存儲RAM采用一讀一寫的雙端口RAM實現(xiàn)時,2片RAM即可實現(xiàn)1片寫,2片讀的寫入及回溯功能。

所以,總存儲單元應為深度為4V個符號的寬度2L-1個狀態(tài)路徑信息,即4V×2L-1bit存儲單元,實際深度取滿足(M=2N>4V)的最小正整數(shù)N對應的M。

譯碼延時:從譯碼器開始接收到準備回溯需2V個時鐘,回溯(V+x)即2V深度需2V個系統(tǒng)時鐘,共計4V個系統(tǒng)時鐘。

1.2 改進的部分寄存器交換回溯方式

從上述傳統(tǒng)TB方式可以看出,為減小譯碼延時和存儲單元,可采取一次并行讀出多比特符號的路徑信息。本文提出采用部分寄存器交換方法,累積多符號(2~6)的路徑信息后,一次存儲寫入一個地址的存儲單元,從而加快之后的讀過程。

設部分RE的長度為y。采取1片存儲單元1讀1寫方式,每次回溯譯出x比特,則回溯延時為t=(V+x)/y;在此回溯期間又寫入t比特路徑信息,為保證路徑信息存儲單元不發(fā)生有用信息覆蓋,要求t≤x,即x≥(V+x)/y,也即x≥V/(y-1)。一般x取滿足條件的最小整數(shù)值。

譯碼延時為等待時間加回溯時間。對每段譯碼信息而言從開始接收到回溯前的等待時間為:V+x比特的譯碼信息接收時間V+x個系統(tǒng)時鐘。譯碼延時共計V+x+t≈V+2x。

路徑信息存儲單元為(V+2x)/y深(實際深度取滿足M=2N>(V+2x)/y的最小正整數(shù)N對應的M),y×2L-1寬,總比特數(shù)為(V+2x)×2L-1。

另外,回溯時要多消耗y個2L-1選一的邏輯資源,即y×2L-1的組合LUT;由于采用部分寄存器交換,需要2L-1個長為y的寄存器鎖存當前路徑信息。

2 其他優(yōu)化措施

采用了文獻[5]中提到的分支度量線性變換3 bit量化解調(diào)信號時,分支度量仍為3 bit的非負數(shù),簡化了之后的路徑度量溢出處理。

分支度量一次計算多次查找——對于(2,1,n)碼即4選一。

簡單的累積路徑度量溢出,對于(2,1,7)3 bit量化卷積碼,路徑度量的最大最小范圍在3+log27位內(nèi)。因所有路徑度量及分支度量都是非負數(shù),這樣再補充一位最高位溢出位,確定了存儲路徑度量的寄存器位寬為3+log27+17。

由于采用全并行結(jié)構,一個時鐘內(nèi)必須完成一次ACS(Add-Compare-Select,加比選),因而ACS部分未采用文獻[7]中流水線結(jié)構,ACS是制約全并行結(jié)構Viterbi譯碼器最高工作頻率的因素之一。但采取了緩解分支度量選擇的時延,兩級計算鎖存的分支度量算法,較一級分支度量鎖存提高了約10 MHz的最高工作頻率。

3 譯碼器設計

譯碼器的結(jié)構框圖如圖1所示。

4 資源占用實驗性能

按照圖1設計的基2全并行譯碼器在Quartus9.1下時序仿真正確后,綜合適配結(jié)果如表1~表4所述,其中:V=6×L,量化比特數(shù)為3。

5 譯碼器其他性能

5.1 譯碼器譯碼性能

MATLAB下3 bit量化定點仿真和Modelsim下3 bit量化前仿真:分別對(2,1,3)、(2,1,5)、(2,1,7)、(2,1,9)的50段(信噪比小于等于4.4 dB時)或100段(信噪比大于4.4 dB時)長度為40 000的已編碼序列經(jīng)信噪比(SNR=Eb/no)為3~5.4 dB(僅在MATLAB下,而在Modelsim下每種卷積碼僅選擇譯碼BER=10-3及10-4兩種情況)的AGWN BPSK信道傳輸?shù)慕邮招盘栠M行模擬,誤碼性能如圖2所示。后仿真[2,7]時對(2,1,3)、(2,1,5)、(2,1,7)、(2,1,9)4種卷積碼分別選取了5.2 dB、4.8 dB、4.0 dB、3.4 dB下長度為40 000的有噪已編碼接收序列進行誤碼性能測試,與圖2完全一致。

5.2 吞吐量

當吞吐量定義為譯碼器輸出信息速率時(而文獻[5]中吞吐量定義為譯碼器輸入速率,與量化比特無關),對于本文中的基2全并行碼率R=1/2的Viterbi譯碼器,吞吐量為2fmax。即在CycloneIII上實現(xiàn)的(2,1,7)全并行譯碼器吞吐量在290~350 Mb/s之間。

在結(jié)構化ASIC器件如HardCopyIII上消耗邏輯資源與在CycloneIII上相當時(2,1,7)卷積碼的最高工作頻率340 Hz,吞吐量680 Mb/s。

若采用定制ASIC實現(xiàn),吞吐量應可滿足引言中提到的目前各種使用Viterbi譯碼的標準(500 Mb/s)的需求。

5.3 與其他文獻的并行譯碼器性能對比

與其他文獻的(2,1,3)全并行譯碼器性能對比(EP3-C10F256C6)如表5所示。

由表中數(shù)據(jù)可以看出,本文設計的(2,1,3)卷積碼全并行譯碼器明顯優(yōu)于Altera公司提供的IP核,邏輯資源占用量僅其25%,譯碼時延也僅其25%。與其他文獻的(2,1,7)全并行譯碼器性能對比如表6所示。

6 結(jié)論

本文采用部分寄存器交換的譯碼器在交換長度為3時與簡單回溯模式相比消耗邏輯資源幾乎相近,存儲單元減少25%~66%的條件下實現(xiàn)譯碼延時減半的效果。

對于短約束長度的卷積碼,如(2,1,3)、(2,1,5)采用全寄存器交換資源消耗不會增加太多,但譯碼延時比交換長度為3時又減少50%,更具實用價值。

而對于長約束長度的卷積碼,如(2,1,7)、(2,1,9)采用全寄存器交換資源消耗增加太多,選用寄存器交換長度為4或6時較合適,此時的時延與完全寄存器交換相近,但消耗的邏輯資源與簡單回溯模式相當,存儲器單元比簡單回溯小很多(小50%或62.5%),雖然在本文中的FPGA下實現(xiàn)時消耗的存儲塊數(shù)更多,但那是由于CycloneIII的每塊存儲塊比較大(深度大而寬度受限),若采用最小深度為16的小存儲塊時(比如定制ASIC技術)其優(yōu)勢將明顯顯現(xiàn)出來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5295

    瀏覽量

    119823
  • 譯碼器
    +關注

    關注

    4

    文章

    310

    瀏覽量

    50260
  • Viterbi
    +關注

    關注

    0

    文章

    13

    瀏覽量

    9792

原文標題:【學術論文】高速率低延時Viterbi譯碼器的設計與實現(xiàn)

文章出處:【微信號:ChinaAET,微信公眾號:電子技術應用ChinaAET】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    什么是硬判決和軟判決Viterbi 譯碼算法 ?

    Viterbi 譯碼算法可以簡單概括為“相加-比較-保留”,譯碼器運行是前向的、無反饋的,實現(xiàn)過程并不復雜。我們來分析Viterbi 算法的
    發(fā)表于 05-30 16:11

    應用于LTE-OFDM系統(tǒng)的Viterbi譯碼在FPGA中的實現(xiàn)

    一種在FPGA中實現(xiàn)的基于軟判決的Viterbi譯碼算法,并以一個(2,1,2)、回溯深度為10的軟判決Viterbi譯碼算法為例驗證該算法
    發(fā)表于 09-19 09:41

    基于IP核的Viterbi譯碼器實現(xiàn)

    【摘要】:Viterbi譯碼器在通信系統(tǒng)中應用非常普遍,針對采用DSP只能進行相對較低速率的Vit-erbi譯碼的問題,人們開始采用FPGA實現(xiàn)
    發(fā)表于 04-26 16:08

    求教ise 14.7中的viterbi譯碼器破解

    如題,求指點如何使用ise14.7中的viterbi譯碼器ip,只能仿真,怎么下載呢?license怎么破解?
    發(fā)表于 05-04 13:19

    基于FPGA的Viterbi譯碼器該怎樣去設計?

    譯碼器有哪些功能?Viterbi譯碼器是由哪幾部分組成的?
    發(fā)表于 05-07 07:28

    基帶芯片中Viterbi譯碼器的研究與實現(xiàn)

    基于對傳統(tǒng)Viterbi 譯碼器的分析和對改進的Viterbi 算法理論的修正,提出了一種新的Viterbi 譯碼器
    發(fā)表于 08-13 10:43 ?23次下載

    從FPGA實現(xiàn)的角度對大約束度Viterbi譯碼器中路徑存儲

    大約束度Viterbi譯碼器中路徑存儲單元的設計 1 引言 Viterbi譯碼算法是一種最大似然譯碼算法,目前廣泛應用于各種數(shù)據(jù)傳輸系
    發(fā)表于 08-15 17:21 ?965次閱讀
    從FPGA<b class='flag-5'>實現(xiàn)</b>的角度對大約束度<b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>中路徑存儲

    Viterbi譯碼器回溯算法實現(xiàn)

    該文介紹了兩種Viterbi 譯碼器回溯譯碼算法,通過對這兩種算法硬件實現(xiàn)結(jié)構上的優(yōu)化,給出了這兩種算法的FPGA 實現(xiàn)方法,比較了兩種
    發(fā)表于 05-28 15:18 ?33次下載
    <b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>回溯算法<b class='flag-5'>實現(xiàn)</b>

    基于ME算法的RS譯碼器VLSI高速實現(xiàn)方法

    利用ME算法實現(xiàn)結(jié)構設計了一種資源占用率、低成本的高速RS譯碼器。邏輯綜合及仿真結(jié)果表明,基于Altera公司CycloneII系列FPGA的RS(255,239)
    發(fā)表于 12-15 17:23 ?28次下載
    基于ME算法的RS<b class='flag-5'>譯碼器</b>VLSI<b class='flag-5'>高速</b><b class='flag-5'>實現(xiàn)</b>方法

    基于ASIC的高速Viterbi譯碼器設計

    針對無線通信系統(tǒng)中對于高頻率、高吞吐量的要求,提出了一種基于ASIC的高速Viterbi譯碼器實現(xiàn)方案。該譯碼器在約束度小于等于9的情況下,
    發(fā)表于 11-11 17:56 ?6次下載
    基于ASIC的<b class='flag-5'>高速</b><b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>設計

    基于FPGA的指針反饋式低功耗Viterbi譯碼器的性能分析和設計

    隨著現(xiàn)代無線通信系統(tǒng)日益復雜化的發(fā)展,無線基帶通信系統(tǒng)中各模塊的實際性能、延時、功耗等參數(shù)成為基帶設計的重要考慮因素。Viterbi譯碼器廣泛應用于無線局域網(wǎng)和移動通信系統(tǒng),并且作為基帶系統(tǒng)的重要
    發(fā)表于 10-06 11:09 ?484次閱讀
    基于FPGA的指針反饋式低功耗<b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>的性能分析和設計

    關于基于Xilinx FPGA 的高速Viterbi回溯譯碼器的性能分析和應用介紹

    新一代移動通信系統(tǒng)目前主要采用多載波傳輸技術, 基帶傳輸速率較3G 有很大提高, 一般要求業(yè)務速率能達到30 Mb/ s 以上。約束長度卷積碼以及Viterbi譯碼器由于其性能和
    發(fā)表于 10-06 10:16 ?2513次閱讀
    關于基于Xilinx FPGA 的<b class='flag-5'>高速</b><b class='flag-5'>Viterbi</b>回溯<b class='flag-5'>譯碼器</b>的性能分析和應用介紹

    通過采用FPGA器件設計一個Viterbi譯碼器

    可編程邏輯技術的不斷發(fā)展,其高密度、低功耗、使用靈活、設計快速、成本低廉、現(xiàn)場可編程和反復可編程等特性,使FPGA逐步成為Viterbi譯碼器設計的最佳方法。項目目的是用FPGA實現(xiàn)一個Vit
    的頭像 發(fā)表于 04-24 08:29 ?2944次閱讀
    通過采用FPGA器件設計一個<b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>

    基于XC6SLX16-2CSG-324型FPGA實現(xiàn)Viterbi譯碼器的設計

    記(n0,k0,m)為卷積碼編碼,該編碼共有2k0×m個狀態(tài),Viterbi譯碼器必須具備同樣的2k0×m個狀態(tài)發(fā)生,且每個狀態(tài)必須有
    發(fā)表于 07-15 20:53 ?1650次閱讀
    基于XC6SLX16-2CSG-324型FPGA<b class='flag-5'>實現(xiàn)</b><b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>的設計

    淺談FPGA的指針反饋式低功耗Viterbi譯碼器設計

    為了滿足復雜的無線通信系統(tǒng)功耗以及性能要求,提出并設計了一種指針反饋式Viterbi譯碼器。該譯碼器使相鄰時刻的
    的頭像 發(fā)表于 04-28 09:35 ?1869次閱讀
    淺談FPGA的指針反饋式低功耗<b class='flag-5'>Viterbi</b><b class='flag-5'>譯碼器</b>設計