卷積編譯碼盤(pán)的設(shè)計(jì)與實(shí)現(xiàn)
摘要:本文簡(jiǎn)要介紹了(2,1,3)卷積碼的編譯碼設(shè)計(jì)與實(shí)現(xiàn)、編碼電路可以用FPGA實(shí)現(xiàn)。譯碼采用維特比譯碼算法,應(yīng)用高速數(shù)字信號(hào)處理器TMS320C50,實(shí)時(shí)完成高速處理任務(wù),核心算法用軟件實(shí)現(xiàn)。通過(guò)對(duì)算法進(jìn)行分解優(yōu)化,譯碼速度快。通過(guò)加載不同的譯碼軟件可以在同一硬件平臺(tái)上實(shí)現(xiàn)多種信道編譯碼算法。在工程中具有較高的應(yīng)用價(jià)值和發(fā)展遠(yuǎn)景。
本文引用地址:http://butianyuan.cn/article/242241.htm關(guān)鍵詞:維特比譯碼 卷積碼 DSP
引言
對(duì)于一般的線性分組碼(如循環(huán)碼、BCH碼等),它們的共同特點(diǎn)是:一個(gè)碼字的監(jiān)督單元僅與本碼組的k位信息碼元有關(guān),與其它碼字的碼元無(wú)關(guān)。而卷積碼的特點(diǎn)在于本組的碼元不僅與當(dāng)有輸入的k個(gè)信息有關(guān),而且還與前面m個(gè)時(shí)刻輸入的信息有關(guān)。卷積碼的糾錯(cuò)能力隨著m的增加而增大,而差錯(cuò)率隨著m的增加而指數(shù)下降。在編碼效率與設(shè)備復(fù)雜性相同的前提下,卷積碼的性能優(yōu)于分組碼。隨著大規(guī)模集成電路技術(shù)的發(fā)展,采用維特比譯碼的卷積編碼技術(shù)已成了廣泛采用的糾錯(cuò)方案。在本系統(tǒng)中,輸入卷積編碼器的信息序列是32Kbit/s的比特流,經(jīng)(2,1,3)卷積編碼器成為64Kbit/s的比特流,再經(jīng)擴(kuò)頻、調(diào)制、無(wú)線信道、解調(diào)、解擴(kuò),由卷積譯碼器經(jīng)譯碼判決還原出32Kbit/s的信息序列。實(shí)踐證明,在該系統(tǒng)中引入卷積編譯碼,大大提高了數(shù)據(jù)傳輸?shù)馁|(zhì)量。
(2,1,3)卷積碼最佳編碼器
編碼方案
實(shí)現(xiàn)(2,1,3)卷積編碼主要有兩種方法,其生成多項(xiàng)式分別為:
g(1)=(1 0 0 0)
g(2)=(1 1 0 1)
和g(1)=91 0 1 1)
g(1)=(1 1 1 1)
根據(jù)梅森(Mason)增益公式分別計(jì)算其生成函數(shù):
其中:
Δi恰似Δ那樣定義,但它只是和第i個(gè)前向路不相連的部分,即當(dāng)計(jì)算Δi時(shí),從圖中去掉第I個(gè)前向路徑上的所有狀態(tài)以及與這些狀態(tài)相連的所有分支。
計(jì)算出兩者的生成函數(shù)分別為
其中X是輸出符號(hào)中1的個(gè)數(shù),Y是輸入比特的權(quán)重,Z是分支輸入比特的持續(xù)時(shí)間(每一分支在任何時(shí)刻都為1。從生成函數(shù)的第一項(xiàng)X的冪次可以看出,第一種編碼方案(系統(tǒng)碼)的自由距離d=4。第二種編碼方案(最佳碼)的自由距離d=6。因此,我們選擇第二種編碼方案,它的自由距離最大。
(2,1,3)卷積碼編碼器的實(shí)現(xiàn)
根據(jù)前面的分析可知,(2,1,3)最佳卷積編碼器的生成多項(xiàng)式為:g(1)=(1 0 1 1)
g(2)=(1 1 1 1)
相應(yīng)的編碼電路示于圖1.
編碼器可完全由硬件電路實(shí)現(xiàn),這樣編碼延時(shí)可達(dá)到最小。編碼電路只需要m=3級(jí)移位寄存器,n=2個(gè)模2加法器以及用于編碼器串行輸出的多路器就可以了。
卷積譯碼器的設(shè)計(jì)
卷積碼的譯碼方式有三種:維特比譯碼、序列譯碼和門(mén)限譯碼。維特比譯碼具有最佳性能,但硬件實(shí)現(xiàn)復(fù)雜;門(mén)限譯碼(亦稱(chēng)大數(shù)邏輯譯碼)性能最差,但硬件簡(jiǎn)單,序列譯碼在硬件和性能方面介于維特比譯碼和門(mén)限譯碼之間??紤]到工程的需要和實(shí)際情況,需選擇造價(jià)低、性能好、結(jié)構(gòu)好、體積小、易于更新?lián)Q代的方法和設(shè)計(jì)產(chǎn)品。因此選用最佳卷積碼譯碼方式——維特比譯碼。
譯碼器的實(shí)現(xiàn)
考慮到維特比譯碼算法的硬件實(shí)現(xiàn)的復(fù)雜性和本系統(tǒng)要求對(duì)信號(hào)進(jìn)行處理的實(shí)時(shí)性,我們選用T公司DSP芯片TMS320C50作為譯碼器的CPU以實(shí)現(xiàn)軟件譯碼。TMS320C50是目前世界上速率最快的DSP芯片之一,其特點(diǎn)是運(yùn)算速率快、片內(nèi)資源豐富、體積小、開(kāi)發(fā)容易。實(shí)踐證明,對(duì)于約束長(zhǎng)度較短的(2,1,3)卷積碼,DSP實(shí)現(xiàn)是最佳方案,一片單周期指令為35ns的芯片TMS320C50PQ57,可以同時(shí)完成兩路維特比譯碼,而且外部電路簡(jiǎn)單,成本低。譯碼器框圖示于圖2.
TMS320C50具有兩路串口,每一路串口又分為接收發(fā)送兩部分,且這兩個(gè)部分可以并行工作,時(shí)序上可以被外部提供的并行工作,時(shí)序上可以被外部提供的幀同步脈沖來(lái)控制。我們實(shí)現(xiàn)的卷積譯碼器就是利用它的兩路串口來(lái)工作的,連續(xù)的數(shù)據(jù)流經(jīng)串口來(lái)工作的。連續(xù)的數(shù)據(jù)流經(jīng)串口接收,放到相應(yīng)的內(nèi)存單元中,在片內(nèi)經(jīng)過(guò)譯碼處理,現(xiàn)將譯碼判決的結(jié)果從串口的發(fā)送部分送到下一級(jí)。
譯碼算法
算法分解
眾所周知,維特比算法的核心思想是由狀態(tài)圖或刪格圖確定幸存路徑,如果在某一節(jié)點(diǎn)上發(fā)展某條路徑已不可能獲得最大似然函數(shù),那么就放棄這條路徑,然后在剩余的幸存路徑上重新選擇具有最小漢的明距的路徑。將此算法進(jìn)行分解即下面操作的重復(fù)。
如圖3所示,在某一時(shí)間單元,對(duì)于狀態(tài)Sn(n=0,1,2,…7)有兩個(gè)“前一狀態(tài)”,即編碼器可能從上一時(shí)間單元的狀態(tài)Sn1或狀態(tài)Sn2(n1,n2=0,1,2…,7;n1≠n2)進(jìn)入狀態(tài)Sn。將Sn1-Sn的n比特編碼輸出與當(dāng)前時(shí)間單元的n比特譯碼輸入相比較,不同的比特?cái)?shù)與狀態(tài)Sn1的部分路徑度量相加,便得到了從狀態(tài)Sn1進(jìn)入狀態(tài)Sn這條路徑的部分路徑度量;同查也對(duì)狀態(tài)Sn2進(jìn)行操作。比較新產(chǎn)生的兩個(gè)部分路徑度量,取度量較小的那條路徑為狀態(tài)Sn的幸存路徑。這一操作依次進(jìn)行下去,就完成了維特比算法的主步驟。
算法優(yōu)化
上述分解的實(shí)現(xiàn)是整個(gè)程序的關(guān)鍵,它的運(yùn)行效率直接關(guān)系到整個(gè)譯碼程序的運(yùn)行速度,因此必須進(jìn)行優(yōu)化,總體上以內(nèi)存空間換取運(yùn)行速度。之所以把以速度作為程序?qū)崿F(xiàn)上的第一指標(biāo),是因?yàn)樽g碼器需要實(shí)時(shí)地完成64Kbps比特流的譯碼,實(shí)時(shí)性是譯碼器的重要指標(biāo)。我們采用下述手段來(lái)進(jìn)行優(yōu)化:
從維特比算法步驟2的實(shí)現(xiàn)上可以看出,程序需要保留兩張表,一張(稱(chēng)為表1)存放前一時(shí)間單元各個(gè)幸存路徑及其度量,另一張表(稱(chēng)為表2)用來(lái)存放當(dāng)前時(shí)間單元新產(chǎn)生的各個(gè)幸存路徑及其度量。在每一個(gè)時(shí)間單元譯碼完畢,進(jìn)入下一個(gè)時(shí)間單元時(shí),都需要將表2的內(nèi)容拷貝到表1中,這是一個(gè)很大的開(kāi)銷(xiāo),而且的確是一個(gè)可以節(jié)省的開(kāi)銷(xiāo)。在程序中,是這樣來(lái)去除這個(gè)開(kāi)銷(xiāo)的:在時(shí)間單元X,表1存放時(shí)間單元x-1的幸存路徑及其度量,表2存放時(shí)間單元x新產(chǎn)生的幸存路徑及其度量;進(jìn)入到時(shí)間單元x+1,表1用來(lái)存放新產(chǎn)生的幸存路徑及其度量;再進(jìn)入到時(shí)間單元x+2,表2用來(lái)存放新產(chǎn)生的幸存路徑及其度量;……。這樣一來(lái),就可以免去兩個(gè)表之間的拷貝,不過(guò)這時(shí)需要有兩段程序。那么,不過(guò)這時(shí)需要有兩段程序。那么,我們?cè)谔幚砬耙欢螖?shù)據(jù)時(shí),把譯碼產(chǎn)生的幸存路徑有其度量存放在表1中;處理前一段數(shù)據(jù)時(shí),則把幸存路徑及其度量存放往表2中存放。就這樣交替進(jìn)行下去。
兩路譯碼程序
本系統(tǒng)實(shí)現(xiàn)的是兩路譯碼,要同時(shí)進(jìn)行兩路譯碼,實(shí)際上就是在C50上運(yùn)行一個(gè)兩任務(wù)的程序,最重要的是譯碼核心程序即要實(shí)現(xiàn)共享,又要盡可能做到兩路數(shù)據(jù)的獨(dú)立,這種設(shè)計(jì)是符合多任務(wù)原理的,兩路譯碼程序流程圖如圖4所示。
結(jié)語(yǔ)
我們研制出的這種性能是最佳的(2,1,3)卷積編譯碼器,編碼采用維特比算法,算法核心由軟件實(shí)現(xiàn),采用高速DSP作為CPU。實(shí)踐證明,在系統(tǒng)中引入卷積編譯碼,大大提高了數(shù)據(jù)傳輸?shù)馁|(zhì)量。
評(píng)論