<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的Viterbi譯碼器設(shè)計(jì)及實(shí)現(xiàn)

          基于FPGA的Viterbi譯碼器設(shè)計(jì)及實(shí)現(xiàn)

          作者: 時(shí)間:2014-11-10 來(lái)源:網(wǎng)絡(luò) 收藏

            卷積碼是廣泛應(yīng)用于衛(wèi)星通信、無(wú)線(xiàn)通信等各種通信系統(tǒng)的信道編碼方式。算法是一種最大似然譯碼算法。在碼的約束度較小時(shí),它比其它概率譯碼算法效率更高、速度更快,的硬件結(jié)構(gòu)比較簡(jiǎn)單。隨著可編程邏輯技術(shù)的不斷發(fā)展,其高密度、低功耗、使用靈活、設(shè)計(jì)快速、成本低廉、現(xiàn)場(chǎng)可編程和反復(fù)可編程等特性,使逐步成為設(shè)計(jì)的最佳方法。項(xiàng)目目的是用實(shí)現(xiàn)一個(gè)

          本文引用地址:http://www.ex-cimer.com/article/265114.htm

            一、譯碼器功能分析

            譯碼器是一種具有“翻譯”功能的邏輯電路,這種電路能將輸入二進(jìn)制代碼的各種狀態(tài),按照其原意翻譯成對(duì)應(yīng)的輸出信號(hào)。Viterbi譯碼器是以Viterbi算法為基礎(chǔ)設(shè)計(jì)的一種譯碼器,譯碼器主要由五部分組成:分支度量單元(Branch Metric Unit)、加比選單元(Add-Compare-Select Unit)、幸存路徑管理單元(Survivor Management Unit)、判輸出單元(Decide-Output Unit)和控制單元(Control Unit)。其整體結(jié)構(gòu)如圖1。

            

           

            圖1 譯碼器結(jié)構(gòu)框圖

            各單元之間的相互關(guān)系如下:接收到的輸入數(shù)據(jù)首先被送入各分支度量單元中計(jì)算出相應(yīng)的分支路徑距離;加比選單元將舊的狀態(tài)路徑度量與相應(yīng)的新產(chǎn)生的分支路徑距離相加,通過(guò)比較后選擇到達(dá)同一狀態(tài)的兩個(gè)路徑度量值中較小的分支來(lái)更新路徑度量;溢出處理防止加比選單元中的路徑度量累加值發(fā)生溢出;幸存路徑管理單元將加比選單元生成的路徑信息進(jìn)行存儲(chǔ)管理;判決輸出單元根據(jù)加比選單元選擇的路徑度量,從中選擇一個(gè)最小值,并輸出該最小值對(duì)應(yīng)的幸存路徑。所有這些單元都在控制單元的協(xié)調(diào)下工作。

            1 分支度量單元

            分支度量表征該分支接收到的碼元與期望碼元之間的差別。對(duì)于硬判決,這種差別指不同碼元的個(gè)數(shù)。硬判決分支度量值可以表示為:

            

           

            (式1)

            其中,y為接收碼字,c為本地卷積碼輸出碼字。對(duì)于碼率為1/2硬判決譯碼方式,編碼器輸出信號(hào)可能為00、01、10、11,其路徑度量取值(漢明距離)只有0、1、2三種可能,因此需要用一個(gè)2bit的寄存器來(lái)存儲(chǔ)分支度量值。

            在本文中,采用了4個(gè)ACS單元(每個(gè)ACS單元有兩個(gè)累加器)并行計(jì)算,因此需要8個(gè)分支度量單元并行計(jì)算8個(gè)條支路的度量值,并將度量值送至ACS中的累加器。

            2 加比選單元

            ACS單元用來(lái)累加路徑度量值并比較和選擇進(jìn)入某一狀態(tài)的兩條分支。本文中采用4個(gè)ACS單元并行計(jì)算,每16個(gè)狀態(tài)復(fù)用一個(gè)ACS結(jié)構(gòu),同時(shí)兼顧了面積和速度。

            

           

            圖 2 (2,1,7)卷積碼的狀態(tài)圖

            譯碼器的核心部分是ACS單元,傳統(tǒng)的譯碼器結(jié)構(gòu)每產(chǎn)生一位譯碼需要進(jìn)行2(n-1)次加比選運(yùn)算,即2×2(n-1)=2n次加法運(yùn)算和2(n-1)次比較選擇運(yùn)算。對(duì)于(2,1,7)卷積碼來(lái)說(shuō),需要進(jìn)行128加法運(yùn)算和64次比較選擇運(yùn)算,這將占用很多的資源并產(chǎn)生很大的功耗,因此,如果能夠通過(guò)改進(jìn)ACS單元的結(jié)構(gòu)來(lái)降低其規(guī)模和功耗,將會(huì)使整個(gè)譯碼器的硬件規(guī)模和功耗大大降低。

            從圖2所示的(2,1,7)卷積碼的狀態(tài)圖中可以看出:在T(i+1)時(shí)刻到達(dá)狀態(tài)S0和S1的是T(i)時(shí)刻的狀態(tài)S0和S32,……,在T(i+1)時(shí)刻到達(dá)狀態(tài)S62和S63的是T(i)時(shí)刻的狀態(tài)S31和S63。也就是說(shuō),T(i)時(shí)刻的狀態(tài)Sj和Sj+32會(huì)達(dá)到T(i+1)時(shí)刻的相鄰的兩個(gè)狀態(tài),并且這兩個(gè)狀態(tài)是S2j和S2j+1(31≥j≥0)。這也就是圖形單(ButterfllyUnit)。

            

           

            圖3 基二蝶形單元

            在圖3中,T(i)時(shí)刻的狀態(tài)Sj和Sj+32都是在輸入0的時(shí)候轉(zhuǎn)移到T(i+1)時(shí)刻的狀態(tài)S2j,在輸入1的時(shí)候轉(zhuǎn)移到T(i+1)時(shí)刻的狀態(tài)S2j+1。這也就意味著ACS單元中的比較器所比較的兩個(gè)路徑度量值(BM)來(lái)自數(shù)值上相差32的兩個(gè)狀態(tài)。路徑度量的計(jì)算就是分支度量加上與這條分支相連的前一時(shí)刻的狀態(tài)選擇的路徑度量,所以,新?tīng)顟B(tài)的路徑度量為:

            

           

            (式2)

            

           

            (式3)

          fpga相關(guān)文章:fpga是什么



          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: FPGA Viterbi 譯碼器

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();