基于VHDL語言的卷積碼編解碼器的設(shè)計
數(shù)字信息在有噪信道中傳輸時,會受到噪聲干擾的影響,誤碼總是不可避免的。為了在已知信噪比的情況下達到一定的誤碼率指標(biāo),在合理設(shè)計基帶信號,選擇調(diào)制、解調(diào)方式,并采用頻域均衡或時域均衡措施的基礎(chǔ)上,還應(yīng)采用差錯控制編碼等信道編碼技術(shù),使誤碼率進一步降低。卷積碼和分組碼是差錯控制編碼的2種主要形式,在編碼器復(fù)雜度相同的情況下,卷積碼的性能優(yōu)于分組碼,因此卷積碼幾乎被應(yīng)用在所有無線通信的標(biāo)準(zhǔn)之中,如GSM ,IS95和CDMA2000的標(biāo)準(zhǔn)中。
目前,VHDL語言已成為EDA領(lǐng)域首選的硬件設(shè)計語言,越來越多的數(shù)字系統(tǒng)設(shè)計使用 VHDL語言來完成。原因是通過VHDL描述的硬件系統(tǒng)“軟核”便于存檔,程序模塊的移植和AS C設(shè)計源程序的交付更為方便。因此,他在IP核的應(yīng)用等方面擔(dān)任著不可或缺的角色。在某擴頻通信系統(tǒng)中,我們使用VHDL語言設(shè)計了(2,1,6)卷積碼編解碼器,并經(jīng)過了在FPGA芯片上的驗證實驗。
2 卷積編碼器
卷積碼通常記作(n0,k0,m),其編碼效率為k0/n0,m稱為約束長度。(n0 ,k0,m)卷積碼可用k0個輸入、n0個輸出、輸入存儲為m的線性有限狀態(tài)移位寄存器及模2加法計數(shù)器電路來實現(xiàn),卷積碼的編碼方法有3種運算方式:離散卷積法;生成矩陣法;多項式乘積法。此外,卷積碼的編碼過程還可以用狀態(tài)圖、碼樹圖和網(wǎng)格圖來描述。本文設(shè)計的編碼器考慮到硬件電路的實現(xiàn),選擇了多項式乘積法。本系統(tǒng)所選卷積編碼器如圖1所示,該卷積編碼器為(2,1,6)自正交卷積編碼器。
3 大數(shù)邏輯解碼器
卷積碼的解碼可分為代數(shù)解碼與概率解碼2類。大數(shù)邏輯解碼器是代數(shù)解碼最主要的解碼方法,他既可用于糾正隨機錯誤,又可用于糾正突發(fā)錯誤,但要求卷積碼是自正交碼或可正交碼。 本文所選(2,1,6)系統(tǒng)自正交卷積碼的大數(shù)邏輯解碼器如圖2所示。
圖2中,I端輸入信息碼元,P端輸入校驗碼元。解碼器把接收到的R(D)中的每一段信息元送入編碼器中求出本地檢驗元,與其后面收到的檢驗元模2加。若兩者一致,則求出的伴隨式分量si為0,否則為1。把加得的值送入伴隨式寄存器中寄存。當(dāng)接收完7個碼段后開始對第 0碼段糾錯,若此時大數(shù)邏輯門的輸出為1,則說明第0碼 段的信息元有錯。這時正好第0子組的信息元移至解碼器的輸出端,從而糾正他們。同時,糾錯信號也反饋至伴隨式 寄存器修正伴隨式,以消去此錯誤對伴隨式的影響。如果大數(shù)判決門沒有輸出,則說明第0子組的信息元沒有錯誤,這時從編碼器中直接把信息元輸出 。
4卷積碼編解碼器的VHDL設(shè)計
4.1VHDL設(shè)計的優(yōu)點與設(shè)計方法
與傳統(tǒng)的自底向上的設(shè)計方法不同,VHDL設(shè)計是從系統(tǒng)的總體要求出發(fā),采用自頂向下( toptodown)的設(shè)計方法。其程序結(jié)構(gòu)特點是將一項工程 設(shè)計(或稱設(shè)計實體),分成外部(即端口)和內(nèi)部(即功能、算法)。在對一個設(shè)計實體定義了外部端口后,一旦內(nèi)部開發(fā)完成,其他的設(shè)計就可以直接調(diào)用這個實體。
本設(shè)計所用VHDL設(shè)計平臺是Altera的MAX+PlusⅡ EDA軟件。MAX+PlusⅡ界面友好,使用便捷;他支持VHDL,原理圖,V語言文本文件,以及波形與EDIF等格式的文件作為設(shè)計輸入;并支持這些文件的任意混合設(shè)計;具有門級仿真器,可以進行功能仿真和時序仿真,能夠產(chǎn)生精確地仿真結(jié)果;支持除APEX20K,APXⅡ,Mercury,Excalibur和Stratix系列之外的所有Altera FPGA/CPLD大規(guī)模邏輯器件。設(shè)計中采用的FPGA器件是Altera的FLEX系列芯片F(xiàn)LEX 10K20。用MAX+PlusⅡ軟件進行VHDL設(shè)計的過程是:
(1)用Text Editor編寫VHDL程序。
(2)用Compiler編譯VHDL程序。
(3)用Waveform Editor,Simulater仿真驗證VHDL程序。
(4)用Timing Analyzer進行芯片的時序分析。
(5)用Floorplan Editor安排芯片管腳位置。
(6)用Programer下載程序至芯片F(xiàn)LEX10K20。
在實際的開發(fā)過程中,以上個步驟需反復(fù)進行,直至將既定的VHDL設(shè)計通過所有的測試為止 。
4.2卷積編碼器VHDL頂層建模(top level)及系統(tǒng) 功能仿真
4.2.1卷積編碼器各功能模塊及頂層建模端口的VHDL描述
LIBRARY IEEE;
用MAX+PlusⅡ編譯后生成的編碼器圖形符號如圖3所示。
4.2.2卷積編碼器VHDL頂層建模的VHDL仿真波形
卷積編碼器VHDL仿真波形如圖4所示。仿真前設(shè)置輸入信息序列datain=“1111”,速率為32 kP/s,對應(yīng)時鐘為31. 25μs。仿真結(jié)果表明,卷積編碼輸出dataout =“1111101 0010000000001”,相應(yīng)速率為64 kP/s,與理論分析結(jié)果一致。
4.3卷積解碼器VHDL頂層建模的VHDL端口描述
4.3.1卷積解碼器各功能模塊及頂層建模端口的VHDL描述
LIBRARY IEEE;
用MAX+PlusⅡ編譯后生成的解碼器圖形符號如圖5所示。
4.3.2卷積解碼器VHDL頂層建模的VHDL仿真波形
卷積解碼器VHDL仿真波形如圖6所示。其中待解碼信元datain=“11111010010000000001” ,速率為64kP/s,對應(yīng)時鐘為15.625μs。仿真結(jié)果表明,解碼信元輸出dataout =“111 1”,相應(yīng)速率為32kP/s。實際仿真還驗證了當(dāng)卷積解碼器輸入的待解碼信元中有錯碼時的糾錯情況,與理論分析結(jié)果一致。
5結(jié)語
將通過仿真的VHDL程序下載到FPGA芯片F(xiàn)LEX10K20上,并在實際擴頻系統(tǒng)中用于差錯控制 ,取得了較為滿意的效果。
參考文獻
[1]王新梅,肖國鎮(zhèn).糾錯碼—原理與方法[M].西安:西安電子科技大學(xué)出版社,2001.
[2]褚振勇,翁木云.FPGA設(shè)計及應(yīng)用[M]. 西安:西安電子科技大學(xué)出版社,2002.
[3]潘 松,王國棟.VHDL實用教程[M].成都:電子科技大學(xué)出版社,2 000
評論