基于FPGA的Viterbi譯碼器設(shè)計(jì)
摘要:卷積碼及其Viterbi譯碼是現(xiàn)代通信系統(tǒng)中常用的一種信道編碼方法。文中介紹了Viterbi譯碼算法的原理,分析了Viterbi譯碼器的結(jié)構(gòu),然后用Verilog語(yǔ)言設(shè)計(jì)了一種基于Altera公司的EP3C120F780C8芯片的(2,l,7)Viterbi譯碼器,同時(shí)給出了時(shí)序仿真圖。
關(guān)鍵詞:卷積碼;Virelbi譯碼;FPGA
0 引言
在現(xiàn)代通信系統(tǒng)中,要使信號(hào)能夠更可靠地在信道中傳輸,往往需要我們?cè)谛诺谰幋a中采用糾錯(cuò)碼來(lái)降低信號(hào)受噪聲的影響,以降低傳輸?shù)恼`碼率。這種方法叫做差錯(cuò)控制編碼或糾錯(cuò)編碼,其思想是在發(fā)送端的信息碼元序列中增加一些監(jiān)督碼元,這些監(jiān)督碼與信碼之間有一定的關(guān)系,接收端可以利用這種關(guān)系由信道譯碼器來(lái)發(fā)現(xiàn)或糾正錯(cuò)誤的碼元。
1 卷積碼
前向糾錯(cuò)(FEC)是目前常用的一種差錯(cuò)控制方法,在這種方法中,發(fā)送端發(fā)送能夠被糾錯(cuò)的碼,接收端則在收到這些碼后,通過(guò)糾錯(cuò)譯碼器來(lái)發(fā)現(xiàn)其中的錯(cuò)誤并自動(dòng)糾正接收碼字中的錯(cuò)誤。在前向糾錯(cuò)方法中,卷積碼及其Viterbi譯碼是常用的信道編碼方案。
卷積碼通常用(n,k,N)表示,其中n為輸出信息比特,k為輸入信息比特,N為約束長(zhǎng)度,卷積碼的編碼效率為Rc=k/n,圖1所示為(2,l,7)卷積碼的編碼器框圖。
(2,1,7)卷積碼編碼器由6個(gè)延時(shí)器(圖l中的D模塊,可用寄存器實(shí)現(xiàn))和兩個(gè)模二加法器組成,它的編碼約束度為7,碼率為1/2。即輸入端輸入1比特信息,輸出端輸出2比特編碼信息,并分為上、下兩路并行輸出。
2 Viterbi譯碼器原理
近年來(lái),維特比算法具有很大的發(fā)展,目前在數(shù)字通信的前向糾錯(cuò)系統(tǒng)中用的較多。Viterbi譯碼的基本原理是把已接收到的序列與所有可能的發(fā)送序列進(jìn)行比較,選擇其中碼距最小的一個(gè)序列作為發(fā)送序列。下面以(2,1,3)卷積碼編碼器的編出碼為例,來(lái)說(shuō)明Viterbi解碼的方法和過(guò)程。圖2所示是該碼的狀態(tài)圖。
評(píng)論