HDTV接收機中Viterbi譯碼器的FPGA實現(xiàn)
數字電視地面廣播編碼正交頻分復用COFDM傳輸系統(tǒng)以其較強的抗多徑干擾性能、易于實現(xiàn)移動接收等優(yōu)點在HDTV的研究中占有很重要的地位。而COFDM系統(tǒng)中編、解碼技術是影響系統(tǒng)性能的一個重要因素。本文正是基于一種最大似然譯碼--Viterbi VB譯碼算法思想,從FPGA實現(xiàn)的角度探討在COFDM系統(tǒng)中內碼(收縮卷積碼)的解碼。
1 設計算法簡述
在HDTV地面廣播COFDM系統(tǒng)中,所用內碼為收縮卷積碼,除1/2主碼率外,還有2/3、3/4、5/6、7/8碼率的卷積編碼。在實際的傳輸信道中,噪聲一般是加性高斯白噪聲(AWGN),輸入AWGN信道的是二進制信號序列。為了充分利用信道輸出信號的信息,提高傳輸系統(tǒng)譯碼的可靠性,首先把信道的輸出信號量化,將Q電平量化序列輸入Viterbi譯碼器,因此本文采用的VB譯碼算法為軟判決譯碼算法。
1.1 主碼率1/2的卷積碼編碼
目前,在國際衛(wèi)星通信和很多通信系統(tǒng)中,(2,1,6)碼是首選的使用VB譯碼的標準卷積碼。由于該碼能使誤碼率達到最小,且能克服相位誤差,所以在HDTV地面廣播COFDM傳輸系統(tǒng)中,內碼采用(2,1,6)碼,它的子生成元為(171,133),均為八進制。對應的生成多項式G D=1+D+D2+D3+D6 1+D2+D3+D5+D6 df=10。其編碼器的實現(xiàn)框圖如圖1。
由于(2,1,6)碼有64個狀態(tài),為直觀起見,采用列表的方法來表述它的籬笆圖,如表1所示。
1.2 收縮卷積碼的實現(xiàn)
為了實現(xiàn)多碼率傳輸,在提高碼率的情況下不致使譯碼器的復雜性增加,在本設計中對(2,1,6)碼進行增信刪余(Puncctured)。如圖1所示,在經上述編碼后,對輸出碼字中的特定位置予以刪除。這樣可以產生碼率為2/3、3/4、5/6、7/8的較高碼率的卷積碼。
1.3 維特比譯碼算法簡述
Viterbi VB譯碼算法是一種最大似然譯碼算法。在收端的譯碼過程中,根據對接收碼元處理方式的不同,分為硬判決和軟判決譯碼。在同一譯碼算法下,雖然硬判決譯碼較軟判決譯碼簡單而易于實現(xiàn),但在性能上要損失2~3dB。因此本文的FPGA實現(xiàn)是基于軟判決來討論的。具體算法如下:
(1)從某一時間單位j=m開始,對進入每一狀態(tài)的所有長為j段分支的部分路徑,計算部分路徑度量。對64態(tài)的每個狀態(tài),挑選并儲存一條有最大度量的部分路徑及部分度量值作為留選路徑。
(2)j增加1,把此時刻進入每一狀態(tài)的所有分支度量與同這些分支相連的前一時刻的留選路徑的度量相加,得到此時刻進入每一狀態(tài)的留選路徑,加以存儲并刪去其它所有路徑。
(3)為了在FPGA 設計中達到較高的時鐘速度,本文在判決和輸出路徑寄存器的信息時,把所有64個路徑寄存器的第一段信息元取出,按大數判決準則輸出第一段信息元。
2 維特比譯碼的FPGA實現(xiàn)
本文是在Altera公司推出的Quartus電路仿真環(huán)境中,采用AHDL語言和原理圖仿真相結合的方法來完成VB譯碼器的FPGA實現(xiàn)。
2.1 譯碼器的整體實現(xiàn)方案
譯碼器的整體方案如圖2所示。
發(fā)端的數據經由信道傳輸過來,經過同步和信道估計,根據CSI信息對數據進行維特比量化,將量化后的信息解內交織后送入維特比解碼單元。
接收到前端的碼字后,首先須在發(fā)端的刪除位置上填充特定的虛假碼元,這一功能由Depuncture單元來完成。并由該單元產生量度計算禁止脈沖,送入主譯碼器,使譯碼器在譯碼時禁止對這些碼元作量度計算。
主譯碼器的譯碼輸出送到誤碼率監(jiān)控單元,通過對誤碼率的統(tǒng)計來判定數據是否為同步接收,同時將該信息送入自同步監(jiān)控單元,以供調整同步使用。當整個譯碼系統(tǒng)同步后,將輸出一同步標識,表示系統(tǒng)已經同步,同時通過同步單元維持同步態(tài)。
2.2 譯碼器分模塊的實現(xiàn)
2.2.1 R=1/2的維特比譯碼模塊
根據上述VB算法,對于一個軟判決譯碼器,應具備以下幾部分:
(1)度量值寄存器:用來存儲各路徑的度量值。其前級還應有一狀態(tài)發(fā)生器,產生64個狀態(tài)和分支值。
(2)累加器、比較器和判決器。分別用來進行軟距離的累加,比較各路徑度量值的大小并選擇輸出信息元的值。
(3)路徑寄存器:用來存儲幸存路徑。
模塊設計如圖3示。
分支度量值計算部分,首先根據接收的軟判決信息計算出每一時刻各分支度量值,在Depuncture模塊輸出禁止脈沖的位置不能進行度量值運算。將該結果送入加比選電路,由表1所得的各狀態(tài)間轉移時的輸出分別累加分支度量,并利用比較和選擇電路得到留選路徑,把此信息送入路徑寄存器。當路徑寄存器中64個狀態(tài)的路徑度量相等時,經過大數判決電路輸出譯碼信息,送入下級的誤碼監(jiān)控和自同步電路。