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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

電子設(shè)計(jì) ? 來源:郭婷 ? 作者:電子設(shè)計(jì) ? 2019-05-03 09:00 ? 次閱讀

引言

自1955年Elias發(fā)明卷積碼以來,卷積碼作為一種高效的信道編碼已被用在許多現(xiàn)代通信系統(tǒng)中。卷積碼分為零比特卷積碼(Zero Tail CC,簡(jiǎn)稱ZTCC)和咬尾卷積碼(Tail Biting CC,簡(jiǎn)稱TBCC)兩種。ZTCC是指在編碼的時(shí)候,碼字后面要另外加上K(K為約束長(zhǎng)度)個(gè)0將編碼寄存器的最后狀態(tài)打出,而TBCC則是直接用碼字的最后K個(gè)比特將編碼寄存器初始化,從而提高編碼率?,F(xiàn)在的3G和4G通信標(biāo)準(zhǔn)中(比如WiMAX或LTE)都采用了TBCC信道編碼。關(guān)于TBCC的譯碼算法很多,其中比較經(jīng)典的譯碼算法有循環(huán)維特比算法(CVA)和BCJR算法。但上述算法由于解碼時(shí)延不固定和復(fù)雜度的原因,均不便于硬件實(shí)現(xiàn)。為此,本文提出了一種便于硬件實(shí)現(xiàn)的次優(yōu)解碼算法。

1 TBCC譯碼算法

1.1 最優(yōu)譯碼算法

TBCC的理論最優(yōu)譯碼算法是,對(duì)于每一個(gè)可能的初始狀態(tài)(3k)用維特比譯碼算法對(duì)所有可能的狀態(tài)進(jìn)行搜索,最后再根據(jù)最好的狀態(tài)進(jìn)行解碼。但是,這種算法的復(fù)雜度太高,不利于硬件實(shí)現(xiàn)。

1.2 次最優(yōu)譯碼算法

次最優(yōu)譯碼算法的經(jīng)典代表是CVA算法,此外還有其改進(jìn)的算法比如環(huán)繞維特比算法(WAVA)和雙向維特比算法(BVA)。它們的主要思路是利用圓形buffer將碼字?jǐn)U展成多個(gè)相同碼塊首尾相接的長(zhǎng)碼塊進(jìn)行譯碼。當(dāng)檢測(cè)到首尾狀態(tài)相等或者滿足自適應(yīng)迭代的停止條件時(shí),即完成譯碼;否則繼續(xù)進(jìn)行迭代。但該算法或其改進(jìn)的WAVA和BVA算法都存在這樣一個(gè)問題。那就是解碼的延遲不是固定的,而這非常不便于硬件實(shí)現(xiàn)。

所以,本文中提出固定延遲的譯碼算法,其基本思路是在碼塊的前Lt個(gè)符號(hào)補(bǔ)在符號(hào)的后面,將碼塊的后Lh個(gè)符號(hào)補(bǔ)在碼字的前面,這樣就構(gòu)成一個(gè)長(zhǎng)度為L(zhǎng)t+N+Lh的新碼塊(假設(shè)原碼字長(zhǎng)度為N),圖1所示是重構(gòu)的碼塊示意圖。該新碼塊可以按照ZTCC解碼一樣去解碼,然后從具有最小路徑度量(path metric)的狀態(tài)進(jìn)行回溯。

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

圖2所示是其譯碼算法流程圖。其中Lt和Lh參數(shù)的選擇應(yīng)根據(jù)仿真來確定。這里采用典型值:Lt=72,Lh=96。

2 TBCC譯碼算法的實(shí)現(xiàn)

2.1 分支度量(branch metric)的計(jì)算

維特比譯碼算法采用ML準(zhǔn)則,其分支度量可通過下式計(jì)算:

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

2.2 加-比較-選擇器(ACS)

圖3所示是ACS的狀態(tài)轉(zhuǎn)移蝶形圖。實(shí)際上,卷積碼的Trellis圖具有如下性質(zhì)(LTE中TBCC編碼約束長(zhǎng)度為7):

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

對(duì)于每一個(gè)狀態(tài),其前面的狀態(tài)為i<<1和(i<<1)+32;而對(duì)于每一個(gè)狀態(tài),其后面的狀態(tài)為(i>>1)%64和(i>>1+1)%64。

上述性質(zhì)在硬件實(shí)現(xiàn)時(shí)非常好用。由上述性質(zhì)可以給出路徑度量的計(jì)算式:

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

從上面的公式可以看出。計(jì)算一個(gè)蝶形圖需要4次加法和2次比較。圖4所示是ACS路徑度量蝶形圖。此外,操作時(shí)還可采用Andries的簡(jiǎn)化方法來減小硬件開銷,其公式如下:

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

計(jì)算出需要2次加法。對(duì)于LTE中約束長(zhǎng)度為7的TBCC來說,總共有64個(gè)狀態(tài),可以分別在兩個(gè)蝶形圖里面使用(符號(hào)會(huì)有所變化),這樣,加法器就減小為32,加上每個(gè)路徑度量更新還需要一個(gè)加法器,這樣共需要的加法器為32+64=96,比之前未簡(jiǎn)化的算法少用了32個(gè)加法器。

2.3 回溯

回溯的深度(Trace back Depth)必須大于編碼深度(Coding Depth),這是因?yàn)椋?jīng)過回溯CD的長(zhǎng)度,所有的幸存路徑均會(huì)收斂。每次回溯時(shí),所有幸存路徑都需要從內(nèi)存里面讀出TD個(gè)狀態(tài),同時(shí)將有TD-CD個(gè)判斷之后的比特送入LIFO?;厮葜?,會(huì)有TD-CD的內(nèi)存空間可寫,另外在回溯時(shí),還需要TD-CD個(gè)內(nèi)存空間來保存進(jìn)來的數(shù)據(jù),這樣,內(nèi)存空間就共需TD+(TD-CD)=2TD-CD。在此可取典型值TD=96,CD=72。

2.4 FPGA的實(shí)現(xiàn)

本設(shè)計(jì)采用的FPGA芯片Altera的StratixIIIEP3SL340系列器件,其在QuartusII9.0下綜合出來的RTL視圖如圖5所示。其布線后所占用的資源如表l所列。

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

3 仿真驗(yàn)證

本文采用的開發(fā)流程是先在matlab下仿真出浮點(diǎn)算法的性能,然后根據(jù)系統(tǒng)要求用C實(shí)現(xiàn)定點(diǎn)模型,在和浮點(diǎn)的版本比較后,再采用Ver-ilog實(shí)現(xiàn)。由于用verilog做性能仿真比較慢,本文采用的仿真和驗(yàn)證方法是在定點(diǎn)C下做性能仿真,然后將C版本的輸入輸出作為黃金參考數(shù)據(jù),再用modelsim仿出vetilog版本的數(shù)據(jù)和參考數(shù)據(jù)做對(duì)比,如果數(shù)據(jù)完全一樣,則驗(yàn)證通過,否則調(diào)試verilog語言并追蹤錯(cuò)誤。

驗(yàn)證選擇的碼長(zhǎng)為1080,將TBCC解碼器放在4×4 MIMO接收機(jī)里,可得到如圖6所示的SNR曲線。

在FPGA上實(shí)現(xiàn)咬尾卷積碼的最優(yōu)算法設(shè)計(jì)

由圖6可知,在SNR很小的時(shí)候,TBCC解碼器的性能反而較硬判決會(huì)下降,這是由于SNR太小,TBCC已經(jīng)無法從很少的已知信息中糾正其他的錯(cuò)誤信息。而當(dāng)SNR較大時(shí),TBCC解碼器就可以從相對(duì)多的已知信息中糾正錯(cuò)誤信息。由圖6可見,在誤碼率為10-3以下時(shí),TBCC能夠獲得約2l dB的增益。

4 結(jié)束語

該解碼器已經(jīng)用在MIMO接收機(jī)的FPGA版本中。并且經(jīng)過實(shí)驗(yàn)室測(cè)試,能夠成功的解碼出咬尾卷積編碼,并具有較好的性能。另外,該解碼器在實(shí)現(xiàn)上用的硬件資源很少,這可為整個(gè)系統(tǒng)的集成奠定基礎(chǔ)。

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

    關(guān)注

    1625

    文章

    21623

    瀏覽量

    601242
  • 解碼器
    +關(guān)注

    關(guān)注

    9

    文章

    1129

    瀏覽量

    40637
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119817
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    卷積編碼是什么?如何實(shí)現(xiàn)卷積編碼?

    卷積碼的原理是卷積碼保證格形起始和終止于某個(gè)相同的狀態(tài)。它具有不要求傳輸任何額外比特的優(yōu)點(diǎn)。
    發(fā)表于 08-21 09:11 ?8004次閱讀
    <b class='flag-5'>咬</b><b class='flag-5'>尾</b><b class='flag-5'>卷積</b>編碼是什么?如何<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>咬</b><b class='flag-5'>尾</b><b class='flag-5'>卷積</b>編碼?

    什么是卷積碼? 什么是卷積碼的約束長(zhǎng)度?

    小。與分組不同,卷積碼編碼后的n 個(gè)碼元不僅與當(dāng)前段的k 個(gè)信息元有關(guān),還與前面的N ?1段信息有關(guān),各碼字間不再是相互獨(dú)立的,碼字中互相關(guān)聯(lián)的碼元個(gè)數(shù)為n ? N 。同樣,譯碼過程中不僅
    發(fā)表于 05-30 16:06

    FPGA卷積碼的提問

    請(qǐng)問各位大神,我想問一下用FPGA卷積碼有什么注意的地方?
    發(fā)表于 04-07 12:57

    大佬們,問一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度,畢設(shè)選了這個(gè)

    求助!大佬們,問一下用FPGA實(shí)現(xiàn)卷積碼編解碼的難度。
    發(fā)表于 10-16 23:26

    卷積碼的Viterbi高速譯碼方案

    本文探討了無線通信中廣泛涉及的差錯(cuò)控制問題,介紹了卷積碼的編譯碼原理。提出了一種卷積碼編碼,及其高速Viterbi譯碼的實(shí)現(xiàn)方案,對(duì)譯碼的各個(gè)組成部分作了分析,并在FPGA
    發(fā)表于 07-21 17:20 ?22次下載

    卷積碼/Viterbi譯碼,卷積碼/Viterbi譯碼是什么

    卷積碼/Viterbi譯碼,卷積碼/Viterbi譯碼是什么意思 卷積碼一個(gè)二進(jìn)制分組(n,k)當(dāng)中,包含k個(gè)信息位,
    發(fā)表于 03-18 14:09 ?2277次閱讀

    卷積碼,卷積碼是什么意思

    卷積碼,卷積碼是什么意思 卷積碼一個(gè)二進(jìn)制分組(n,k)當(dāng)中,包含k個(gè)信息位,組長(zhǎng)度為
    發(fā)表于 03-19 16:46 ?1898次閱讀

    卷積碼,什么是卷積碼

    卷積碼,什么是卷積碼 卷積碼一個(gè)二進(jìn)制分組(n,k)當(dāng)中,包含k個(gè)信息位,組長(zhǎng)度為n
    發(fā)表于 04-03 12:11 ?7225次閱讀

    LTE中Tail-biting卷積碼的譯碼器設(shè)計(jì)

    本文設(shè)計(jì)的譯碼器,利用Tail-biting卷積碼的循環(huán)特性,采用固定延遲的算法與維特比算法結(jié)合,FPGA
    發(fā)表于 08-05 11:57 ?4641次閱讀
    LTE中Tail-biting<b class='flag-5'>卷積碼</b>的譯碼器設(shè)計(jì)

    基于FPGA卷積碼譯碼器的方案

    卷積碼是深度空間通信系統(tǒng)和無線通信系統(tǒng)中常用的一種差錯(cuò)控制編碼。它克服了分組由于以塊為單位編譯碼而使分組間的相關(guān)信息丟失的缺點(diǎn)。(2,1,8)卷積碼
    發(fā)表于 10-12 15:05 ?1645次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>卷積碼</b>譯碼器的方案

    基于Viterbi算法卷積碼性能分析

    本文主要對(duì)卷積碼編碼和Viterbi譯碼進(jìn)行MATLAB實(shí)現(xiàn),并在此基礎(chǔ)分析移位寄存器對(duì)糾錯(cuò)能力的影響。論文首先根據(jù)MATLAB的存儲(chǔ)特點(diǎn)及函數(shù)特征,主要介紹卷積編碼的原理,同時(shí)給出
    發(fā)表于 01-13 16:56 ?39次下載
    基于Viterbi<b class='flag-5'>算法</b>的<b class='flag-5'>卷積碼</b>性能分析

    基于 Vertibi算法卷積碼解碼設(shè)計(jì)實(shí)現(xiàn)

    信道編碼研究的初期,人們探索、研究出各種各樣的編碼構(gòu)造方法,其中包括卷積碼。
    的頭像 發(fā)表于 08-20 17:26 ?4909次閱讀
    基于 Vertibi<b class='flag-5'>算法</b>的<b class='flag-5'>卷積碼</b>解碼設(shè)計(jì)<b class='flag-5'>實(shí)現(xiàn)</b>

    卷積碼編碼譯碼程序仿真程序 卷積碼應(yīng)用詳解

    卷積碼是一種差錯(cuò)控制編碼,由P.Elias于1955年發(fā)明。因?yàn)閿?shù)據(jù)與二進(jìn)制多項(xiàng)式滑動(dòng)相關(guān)故稱卷積碼。
    發(fā)表于 08-21 10:34 ?4041次閱讀
    <b class='flag-5'>卷積碼</b>編碼譯碼程序仿真程序 <b class='flag-5'>卷積碼</b>應(yīng)用詳解

    分組卷積碼的區(qū)別 詳解分組卷積碼

    卷積碼是1955年由Elias等人提出的,是一種非常有前途的編碼方法。
    發(fā)表于 08-21 11:07 ?3w次閱讀
    分組<b class='flag-5'>碼</b>和<b class='flag-5'>卷積碼</b>的區(qū)別 詳解分組<b class='flag-5'>碼</b>和<b class='flag-5'>卷積碼</b>

    卷積碼編碼及譯碼算法的基本原理

    卷積碼是一種信道糾錯(cuò)編碼,通信中具有廣泛的應(yīng)用。發(fā)送端根據(jù)生成多項(xiàng)式進(jìn)行卷積碼編碼,接收端根據(jù)維特比(Viterbi)譯碼
    的頭像 發(fā)表于 04-28 15:02 ?1.2w次閱讀