基于FPGA的卷積碼譯碼器的方案
出處:草原馬 發(fā)布于:2011-08-04 10:57:15
卷積碼是深度空間通信系統(tǒng)和無(wú)線(xiàn)通信系統(tǒng)中常用的一種差錯(cuò)控制編碼。它克服了分組碼由于以碼塊為單位編譯碼而使分組間的相關(guān)信息丟失的缺點(diǎn)。(2,1,8)卷積碼在2G、3G通信系統(tǒng)中得到了廣泛的運(yùn)用。CDMA/IS-95系統(tǒng)的前向信道[3]、CDMA20001x的前反向鏈路都使用了生成多項(xiàng)式為(561,753)碼率為1/2的(2,1,8)卷積碼。針對(duì)目前卷積碼譯碼器占用資源較多,工作頻率較低的缺點(diǎn),本文設(shè)計(jì)了一種新的基于FPGA的(2,1,8)卷積碼譯碼器。該譯碼器工作頻率高,輸出時(shí)延小,占用資源少。
1 (2,1,8)卷積碼譯碼器的總體設(shè)計(jì)
本文所實(shí)現(xiàn)的(2,1,8)卷積碼譯碼器是基于維特比算法的硬判決譯碼器。整個(gè)系統(tǒng)分為啟動(dòng)單元、中間處理單元、譯碼輸出單元3個(gè)單元模塊。系統(tǒng)總體結(jié)構(gòu)圖如圖1所示。對(duì)(2,1,8)卷積碼譯碼器,啟動(dòng)單元處理的是前8個(gè)輸入的碼字,中間處理單元處理的是后續(xù)輸入的碼字。譯碼輸出單元實(shí)現(xiàn)對(duì)譯碼器譯出碼字的輸出。本設(shè)計(jì)中,各狀態(tài)節(jié)點(diǎn)的路徑度量和幸存路徑均采用FPGA片內(nèi)的寄存器作為存儲(chǔ)主體,即采用的是寄存器交換法。這樣譯碼輸出時(shí)不用回溯,能極大提高譯碼器的譯碼速率。

2 (2,1,8)卷積碼譯碼器各模塊設(shè)計(jì)
2.1 啟動(dòng)單元模塊
?。?,1,8)卷積碼譯碼器共有256個(gè)狀態(tài)節(jié)點(diǎn)。在處理前8個(gè)輸入碼字中的第i(i為大于0且小于9的整數(shù))個(gè)碼字時(shí),只需對(duì)其中的2i個(gè)狀態(tài)節(jié)點(diǎn)進(jìn)行處理,而且轉(zhuǎn)移至這2i個(gè)狀態(tài)節(jié)點(diǎn)的前一狀態(tài)節(jié)點(diǎn)都各僅有一個(gè),其狀態(tài)轉(zhuǎn)移圖如圖2所示。因此并不需執(zhí)行比較和選擇操作。該單元的關(guān)鍵在于確定處理第i個(gè)碼元時(shí),需對(duì)哪些狀態(tài)節(jié)點(diǎn)的幸存路徑和路徑度量值更新。經(jīng)分析可知:在第i個(gè)碼元處理結(jié)束后。當(dāng)且僅當(dāng)某節(jié)點(diǎn)對(duì)應(yīng)的狀態(tài)值的二進(jìn)制形式的低(8-k)位比特均為0,譯碼器才可能到達(dá)該狀態(tài)節(jié)點(diǎn)。據(jù)此本文設(shè)計(jì)了如下的一種巧妙方法確定某狀態(tài)節(jié)點(diǎn)是否能到達(dá)。設(shè)置一個(gè)8bit位寬的寄存器型變量sd0。其初始值置為0x7f,即將其位置為0,每處理完一個(gè)碼元,就將sd0右移一位,在判斷狀態(tài)值為i的節(jié)點(diǎn)是否需要處理時(shí),將sd0與i進(jìn)行按位與運(yùn)算,若其結(jié)果為0,則該狀態(tài)節(jié)點(diǎn)需被處理,否則,直接進(jìn)入對(duì)下一狀態(tài)節(jié)點(diǎn)的判斷處理。

在計(jì)算各狀態(tài)節(jié)點(diǎn)的路徑度量BM時(shí),本設(shè)計(jì)采取了如下方案。預(yù)先計(jì)算出(2,1,8)卷積碼的256個(gè)狀態(tài)在輸入為0時(shí)的編碼結(jié)果,并將其存儲(chǔ)在一個(gè)由256個(gè)位寬為2bit的寄存器組中。處理接收的卷積碼碼字時(shí),首先計(jì)算出該碼字與(2,1,8)卷積碼的4個(gè)可能碼字00,01,10,11的不同的比特的位數(shù)。并分別存儲(chǔ)在對(duì)應(yīng)的4個(gè)2bit位寬的路徑度量寄存器l0,l1,l2,l3中。將狀態(tài)節(jié)點(diǎn)i和(i+128)的兩個(gè)路徑度量值分別記為BM0和BM1,節(jié)點(diǎn)i的BM0和BM1分別為編碼器處于狀態(tài)(2×i)和(2×i+1)且輸入為0時(shí)的輸出碼字與當(dāng)前時(shí)刻輸入碼字不同的比特?cái)?shù)。節(jié)點(diǎn)(i+128)的BM0和BM1分別為編碼器處于狀態(tài)(2×i)和(2×i+1)且輸入為1時(shí)的輸出碼字與當(dāng)前時(shí)刻輸入碼字不同的比特?cái)?shù)。且任何狀態(tài)節(jié)點(diǎn)的兩個(gè)路徑度量值BM0和BM1之和為2,據(jù)此就可得出各個(gè)狀態(tài)節(jié)點(diǎn)的BM0和BM1的值。
2.2 中間處理單元
中間處理單元的主體是加比選操作模塊。(2,1,8)卷積碼譯碼器處理完開(kāi)始的8?jìng)€(gè)碼元之后,其狀態(tài)轉(zhuǎn)移圖如圖3所示。此時(shí),到達(dá)每個(gè)狀態(tài)節(jié)點(diǎn)的路徑有兩條,到達(dá)狀態(tài)節(jié)點(diǎn)i和i+128的兩條路徑分別來(lái)自節(jié)點(diǎn)2×i和2×i+1,其中i為小于128的自然數(shù)。對(duì)狀態(tài)i和i+128對(duì)應(yīng)節(jié)點(diǎn)的幸存路徑和路徑度量值的更新就是要比較節(jié)點(diǎn)2×i和2×i+1的在前一碼元處理結(jié)束后的路徑度量與它們轉(zhuǎn)移至狀態(tài)i和i+128時(shí)對(duì)應(yīng)的路徑度量之和,并取其中較小者。

該單元需解決的一個(gè)關(guān)鍵問(wèn)題就是路徑度量的溢出問(wèn)題。若不對(duì)該問(wèn)題進(jìn)行處理,隨著譯碼序列長(zhǎng)度的增加,將根據(jù)各狀態(tài)的路徑度量寄存器存儲(chǔ)值的大小判斷各狀態(tài)路徑度量的相對(duì)大小發(fā)生錯(cuò)誤,從而使得譯碼出錯(cuò)。經(jīng)過(guò)對(duì)(2,1,8)卷積碼譯碼器網(wǎng)格圖的研究發(fā)現(xiàn):硬判決時(shí),256個(gè)狀態(tài)的路徑度量的值與值之差不會(huì)超過(guò)15,若用5比特位寬的寄存器型變量存儲(chǔ)各狀態(tài)的路徑度量,當(dāng)路徑度量值達(dá)到31即將溢出時(shí),路徑度量值一定不小于16,此時(shí)將所有256個(gè)狀態(tài)節(jié)點(diǎn)的路徑度量值均減去16,這樣就解決了溢出問(wèn)題。根據(jù)各狀態(tài)的路徑度量值的比特位是0還是1就可判斷其值是否大于等于16。
2.3 譯碼輸出單元
本設(shè)計(jì)譯碼輸出單元采取截短譯碼算法。即譯碼到達(dá)一定深度時(shí),就開(kāi)始輸出譯碼結(jié)果。該譯碼深度一般應(yīng)不小于5倍卷積碼的約束長(zhǎng)度。本設(shè)計(jì)中譯碼深度取為45。譯碼輸出采用任意狀態(tài)判決準(zhǔn)則。每個(gè)時(shí)刻將全0狀態(tài)的幸存路徑的比特位移出作為譯碼器輸出。采用任意狀態(tài)判決準(zhǔn)則能降低硬件的復(fù)雜度。
3 仿真結(jié)果及分析
采用EP1S20F484C5作為目標(biāo)器件,將譯碼器用Quartus2自帶的編譯器編譯綜合后的結(jié)果顯示:該譯碼器共占用了14226個(gè)邏輯單元LE,譯碼器的工作頻率可達(dá)102MHz,其輸出時(shí)延為47個(gè)時(shí)鐘周期。文獻(xiàn)[13]采用RAM作為幸存路徑的存儲(chǔ)主體實(shí)現(xiàn)的(2,1,8)卷積碼譯碼器,采用APEXEP20K200作為目標(biāo)芯片時(shí),共使用了2200個(gè)邏輯單元,和16塊RAM,譯碼器僅可支持40MHz的時(shí)鐘,完成一步約束長(zhǎng)度為9(256狀態(tài))的加、比、選操作需要132個(gè)時(shí)鐘周期。內(nèi)部的譯碼速度僅可達(dá)588kb/s。因此本設(shè)計(jì)僅用相對(duì)較少的硬件資源消耗換取了較大的譯碼速率的提高。
由糾錯(cuò)編碼的理論可知,當(dāng)線(xiàn)性分組碼的碼字間的距離為dmin時(shí),其多能糾正[(dmin-1)/2]個(gè)比特的錯(cuò)誤,運(yùn)算符[]表示不超過(guò)該數(shù)的整數(shù)。卷積碼中用自由距離df代替,生成多項(xiàng)式為(561,753)的(2,1,8)卷積碼的自由距離為df=12,因此其能糾正多為5個(gè)比特的突發(fā)錯(cuò)誤。
為驗(yàn)證所設(shè)計(jì)的卷積碼譯碼器的糾錯(cuò)性能,首先基于有限狀態(tài)機(jī)設(shè)計(jì)了一個(gè)編碼器,當(dāng)其輸入為111111111111111100000000時(shí),經(jīng)過(guò)一個(gè)時(shí)鐘周期的時(shí)延,編碼器輸出碼字為321201103333333301213223,將該序列的前5比特?cái)?shù)據(jù)取反后作為譯碼器的輸入,其仿真結(jié)果如圖4所示。

由圖4中的仿真波形可看出:經(jīng)過(guò)47個(gè)時(shí)鐘周期的延遲之后,譯碼器糾正了輸入碼元5個(gè)比特的錯(cuò)誤,正確譯出了信息碼字。從而說(shuō)明該譯碼器設(shè)計(jì)正確。
4 結(jié)語(yǔ)
本文基于FPGA技術(shù)設(shè)計(jì)了一種(2,1,8)卷積碼的硬判決維特比譯碼器。該譯碼器以FPGA片內(nèi)的寄存器作為路徑度量和幸存路徑的存儲(chǔ)單元,經(jīng)分析得出了路徑度量單元的位寬,有效降低了對(duì)芯片資源的消耗。采用截短譯碼算法,降低了硬件的復(fù)雜度。采取了一種巧妙的方法實(shí)現(xiàn)了譯碼器的啟動(dòng)過(guò)程單元。綜合和仿真結(jié)果表明:該譯碼器用較少的硬件資源消耗就換取了極大的譯碼速度的提高。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫(kù)電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫(kù)電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫(kù)電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類(lèi)作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問(wèn)題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 工業(yè)5G技術(shù)在智能制造中的應(yīng)用與實(shí)踐解析2025/12/31 10:57:21
- 工業(yè)以太網(wǎng)交換機(jī)選型與現(xiàn)場(chǎng)應(yīng)用技術(shù)指南2025/12/18 10:48:14
- 無(wú)線(xiàn)傳輸電路基礎(chǔ),射頻前端設(shè)計(jì)、天線(xiàn)匹配與鏈路預(yù)算計(jì)算2025/10/27 13:55:50
- ASK 解調(diào)的核心要點(diǎn)與實(shí)現(xiàn)方式2025/9/5 16:46:17
- 雙偶極子天線(xiàn):結(jié)構(gòu)、特性與應(yīng)用全解析2025/9/3 10:29:21
- 編碼器的工作原理及作用1
- 超強(qiáng)整理!PCB設(shè)計(jì)之電流與線(xiàn)寬的關(guān)系2
- 三星(SAMSUNG)貼片電容規(guī)格對(duì)照表3
- 電腦藍(lán)屏代碼大全4
- 國(guó)標(biāo)委發(fā)布《電動(dòng)汽車(chē)安全要求第3部分:人員觸電防護(hù)》第1號(hào)修改單5
- 通俗易懂談上拉電阻與下拉電阻6
- 繼電器的工作原理以及驅(qū)動(dòng)電路7
- 電容單位8
- 跟我學(xué)51單片機(jī)(三):?jiǎn)纹瑱C(jī)串口通信實(shí)例9
- 一種三極管開(kāi)關(guān)電路設(shè)計(jì)10









