當前位置:首頁 > EDA > 電子設(shè)計自動化
[導讀]摘要:基于卷積碼的編譯碼原理,使用VHDL語言和FPGA芯片設(shè)計并實現(xiàn)了(2,1,3)卷積碼編譯碼器。其中譯碼器設(shè)計采用“截尾”的Vite-rbi譯碼算法,在支路量度計算、路徑量度和譯碼路徑的更新與存儲以及判決與

摘要:基于卷積碼的編譯碼原理,使用VHDL語言和FPGA芯片設(shè)計并實現(xiàn)了(2,1,3)卷積碼編譯碼器。其中譯碼器設(shè)計采用“截尾”的Vite-rbi譯碼算法,在支路量度計算、路徑量度和譯碼路徑的更新與存儲以及判決與輸出等環(huán)節(jié)的實現(xiàn)中采取了若干有效措施,節(jié)省了存儲空間,提高了設(shè)計性能。最后通過仿真驗證了設(shè)計的正確性與合理性。
關(guān)鍵詞:FPGA;卷積碼;編譯碼器;Viterbi譯碼器:VHDL

    由于卷積碼具有較好的糾錯性能,因而在通信系統(tǒng)中被廣泛使用。采用硬件描述語言VerilogHDL或VHDL和FPGA(Field Programmable Gate Array——現(xiàn)場可編程門陣列)進行數(shù)字通信系統(tǒng)設(shè)計,可在集成度、可靠性和靈活性等方面達到比較滿意的效果。
    文獻以生成矩陣G=[101,111]的(2,1,3)卷積碼為例,介紹了卷積碼編碼器的原理和VerilogHDL語言的描述方式;文獻采用VerilogHDL語言,對(2,1,7)卷積碼的Viterbi硬判決譯碼進行了FPGA設(shè)計。本文基于卷積碼編/譯碼的基本原理,使用VHDL語言和FPGA芯片設(shè)計并實現(xiàn)了(2,1,3)卷積碼編碼器及其相應的Viterbi譯碼器,通過仿真驗證了設(shè)計的正確性。

1 (2,1,3)卷積碼編碼器的設(shè)計
1.1 (2,1,3)卷積碼編碼器的原理
    卷積碼編碼器通常記作(n,k,N),對應于每段k個比特的輸入序列,輸出n個比特;這n個輸出比特不僅與當前的k個輸入比特有關(guān),而且還與以前的(N-1)k個輸入比特有關(guān)。(n,k,N)卷積碼編碼器包括:一個由Ⅳ段組成的輸入移位寄存器,每段有k級,共Nk位;一組n個模2加法器;一個由n級組成的輸出移位寄存器。整個編碼過程可以看成是輸入序列與由移位寄存器和模2加法器連接方式所決定的另一個序列的卷積。
    對于(2,1,3)卷積碼編碼器來說,n=2,k=1,N=3,即每輸入1個信息比特時經(jīng)編碼后產(chǎn)生2個輸出比特,輸出比特不僅與當前的1個輸入比特有關(guān).而且還與以前的2個輸入比特有關(guān)。(2,1,3)卷積編碼器框圖如圖1所示。


    由圖可以看出,輸出為:
   
1.2 設(shè)計思路
    編碼器為串入串出結(jié)構(gòu)。這里一共定義4個端口信號,它們分別是:
   
   
    當編碼使能start為0時不進行編碼,并將狀態(tài)state清零;start為1時進行編碼,此時每2個時鐘周期輸入一個新的信息比特,同時狀態(tài)信號改變,輸出2位已編碼比特,即每個時鐘周期輸出1位已編碼比特。

2 維特比譯碼器的設(shè)計
2.1 維特比譯碼器的原理
    卷積碼的譯碼一般采用維特比譯碼。維特比譯碼本質(zhì)上是對長度為L的二進制序列的最佳譯碼,需要對可能發(fā)送的2L個不同的序列的2L條路徑量度進行計算和比較,選取其中量度最小的一條作為幸存路徑。其基礎(chǔ)是基于網(wǎng)格圖的描寫,即對于不同的路徑的量度進行比較,如某一節(jié)點上發(fā)出的某條路徑已經(jīng)不可能獲得最大似然函數(shù),那么就放棄這條路徑,并在保存下來的路徑中重新選擇譯碼路徑,一直到最后,復雜度較高。維特比譯碼器實際上對各個可能路徑進行比較,比較原則是計算其路徑的對數(shù)似然函數(shù),而計算似然函數(shù)就是計算該路徑與接收序列之間的漢明距(量度)。譯碼過程的操作可歸納為“加-比-選”3個部分。
    實際的維特比譯碼中,譯碼幾步后可能的路徑便合為一條,因此,不必等全部譯出后再輸出,即譯碼一定長度后便可將已經(jīng)相同的部分輸出,這樣做可以大量節(jié)省譯碼所需路徑的存儲空間。只要保證譯碼深度在5~10倍的約束長度之間就不影響譯碼效果,這就是所謂的“截尾譯碼”。
2.2 結(jié)構(gòu)框圖
    維特比譯碼器的結(jié)構(gòu)框圖如圖2所示。


    在設(shè)計中。將框圖簡化為“加”(支路量度計算)、“比選”(路徑量度和譯碼路徑的更新與存儲)以及定時與控制三部分。
2.3 設(shè)計思路
2.3.1 端口及信號定義
    輸入輸出端口為:
   

    其中“比前路徑長度”中下劃線前的數(shù)字代表該路徑最后停在的狀態(tài),下劃線后的數(shù)字代表是由哪個狀態(tài)轉(zhuǎn)移過來的。如果是“0”則代表由狀態(tài)號較小的狀態(tài)轉(zhuǎn)移過來的那條路徑,反之如果為“1”則代表由狀態(tài)號較大的狀態(tài)轉(zhuǎn)移過來的那條路徑;“選后路徑長度”和“譯碼路徑”的序號表示該路徑最后停在的狀態(tài)號。圖3為維特比譯碼過程的網(wǎng)格圖。


2.3.2 定時與控制
    由時鐘控制,每個時鐘輸入一位,每兩個時鐘輸出一位,稱為一個譯碼周期。在每個譯碼周期的前一個時鐘周期內(nèi)完成“加”,此時譯碼狀態(tài)為“0”;在后一個時鐘周期內(nèi)完成“比和選”,譯碼狀態(tài)為“1”。
2.3.3 支路量度計算
    由于(2,1,3)卷積碼的形式已經(jīng)固定,因此,可以事先把支路量度表做好,如表1所示。譯碼器工作時可根據(jù)輸入通過查表得到“比前路徑長度”的增加值,暫存到addi_j中,而后統(tǒng)一加入“比前路徑長度”chni_j中。


2.3.4 路徑量度和譯碼路徑的更新與存儲
    在到達同一狀態(tài)的兩條路徑中選取路徑長度較小的作為幸存路徑,即在chnk_0和chnk_1中選擇較小的存入rlengthk(k=0~3)。
    由于每個狀態(tài)譯碼路徑的最后一位在每一步中是不變的,均是"0101”(狀態(tài)0~3),因此更新譯碼路徑時只需將選中的譯碼路徑向高位移一位后存儲即可。即進行如下判斷:
    1)對于新路徑0的判斷,如果chn0_0<=chn0_1則選擇舊路徑0,否則選擇舊路徑2;
    2)對于新路徑1的判斷,如果chn1_0<=chn1_1則選擇舊路徑0,否則選擇舊路徑2;
    3)對于新路徑2的判斷,如果chn2_0<=chn2_1則選擇舊路徑1,否則選擇舊路徑3;
    4)對于新路徑3的判斷,如果chn3_0<=chn3_1則選擇舊路徑1,否則選擇舊路徑3;
    其中chn0_0,chn0_1,chn1_0,chn1_l,chn2_0,chn2_1,chn3_0,chn3_1已由上一步得出。
2.3.5 判決與輸出
    譯碼深度為10,譯碼的輸出只需將譯碼路徑的最高位中出現(xiàn)較多的一位輸出,當“0”和“1”的個數(shù)相等時輸出任意一個。由圖4所示的卡諾圖可得,譯碼輸出的邏輯表達式為:
    dataout=(route0 (9) and routel (9)) 0r (route2 (9) and route3 (9))


2. 3.6 譯碼初始化
    由于剛開始譯碼的第一步和第二步,譯碼路徑并未完全展開,“加-比-選”與后面的步驟略有不同。因此設(shè)置一個譯碼步驟計數(shù)器step,對譯碼前兩步的“加”進行單獨處理,而不改變“比選”部分。
2.3.7 路徑量度的溢出
    由于路徑量度是一直累加的,如果不進行處理則計數(shù)器將溢出。設(shè)計中發(fā)現(xiàn),各條路徑之間的路徑量度相差不會太大。解決的辦法是:如果有一個路徑量度超過了某一門限,就將所有記錄的路徑量度減一個小量。在實際中,由于(2,1,3)卷積碼每一步譯碼后路徑量度最多增加2,因此為避免溢出,設(shè)置門限為8,當超過該門限時各路徑量度都減小2。這樣就可以用很少容量的寄存器保存任意長的路徑量度。

3 仿真結(jié)果
    仿真在MaxplusII10.2環(huán)境下進行,選擇FLEX1OK系列中的EPF10K30RC240-3器件。以下是部分仿真結(jié)果。
3.1 卷積碼編碼器仿真
    卷積碼編碼器的仿真波形如圖5所示。在編碼使能之后輸入序列data_in為110111001000…(每個bit持續(xù)2個時鐘周期),編碼輸出序列data_out為110101000110011111101100……(每個bit持續(xù)1個時鐘周期),結(jié)果與文獻中的例12-1完全一致。


3.2 維特比譯碼器仿真
    維特比譯碼器的仿真波形如圖6所示。其中圖(a)為輸入無誤碼時的情形,圖中輸入序列為1101010001100111…,譯碼輸出序列為110111 00…;圖(b)為輸入有誤碼時的情形,圖中假設(shè)輸入序列為1001010101100101…(其中黑體的bit為誤碼),則譯碼輸出序列仍為11011100…。


    由仿真結(jié)果可以看出。用上述方法設(shè)計的卷積碼編/譯碼器功能正確,并具有較好的糾錯能力。

4 結(jié)論
    本文用VHDL語言和FPGA芯片設(shè)計并實現(xiàn)了(2,1,3)卷積碼編碼器及維特比譯碼器。仿真結(jié)果表明,編/譯碼器的功能正確,達到設(shè)計要求。在設(shè)計中采用了模塊化結(jié)構(gòu),維特比譯碼器設(shè)計采用了截尾譯碼算法,節(jié)省了存儲空間。另外,設(shè)計中還較好的解決了譯碼過程中的支路度量計算、路徑量度和譯碼路徑的更新與存儲以及譯碼判決與輸出等關(guān)鍵技術(shù)問題。
    由于卷積碼具有相似的結(jié)構(gòu)和特點,所以文中(2,1,3)卷積碼編/譯碼器的設(shè)計思路,對其他形式的卷積碼編/譯碼器也是適用的。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉