《電子技術(shù)應用》
您所在的位置:首頁 > 可編程邏輯 > 業(yè)界動態(tài) > 采用(2,1,7)卷積碼+QPSK的中頻調(diào)制解調(diào)系統(tǒng)的FPGA實現(xiàn)

采用(2,1,7)卷積碼+QPSK的中頻調(diào)制解調(diào)系統(tǒng)的FPGA實現(xiàn)

2008-08-12
作者:羅常青, 安建平,, 沈業(yè)兵

  摘 要: 提出了一個采用(2,1,7)卷積碼+QPSK的中頻調(diào)制解調(diào)" title="調(diào)制解調(diào)">調(diào)制解調(diào)方案,,并在Xilinx公司的100萬門FPGA芯片上實現(xiàn)了該系統(tǒng)。該系統(tǒng)在信噪比SNR為6dB左右時可實現(xiàn)速率超過1Mbit/s,、誤碼率小于10-5的數(shù)據(jù)傳輸。
  關(guān)鍵詞: 卷積編碼" title="卷積編碼">卷積編碼 Viterbi譯碼 QPSK FPGA


  在無線數(shù)據(jù)傳輸中,,由于信道中的噪聲干擾,,在接收端會引入一定量的誤碼率(Bit Error Rate,BER),。高質(zhì)量的數(shù)據(jù)業(yè)務要求較低的BER,。為了達到較低的BER,經(jīng)常采用信道編碼技術(shù),。卷積編碼和Viterbi譯碼是廣泛使用的信道編碼技術(shù),,具有一定的克服突發(fā)錯誤的能力,可以降低信道的誤碼率,,帶來很高的編碼增益,。信道編碼的引入在提供糾錯能力的同時,還擴展了信號的帶寬,。為了保證頻帶的利用率,,本文采用QPSK調(diào)制方式,使數(shù)據(jù)調(diào)制在中頻載波上,實現(xiàn)數(shù)據(jù)的可靠傳輸,。
  本文所述的中頻調(diào)制解調(diào)系統(tǒng)具有以下特點:
  (1)所有算法(編碼,、調(diào)制、解調(diào)和譯碼)都是在Xilinx公司的FPGA芯片中實現(xiàn)的,,結(jié)構(gòu)簡單,,體積小,功耗低。
  (2)具有很好的實時性,。對于1Mbit/s以上的數(shù)據(jù)速率,,譯碼延遲不超過0.1ms。
  (3)模塊化的設計使得系統(tǒng)具有一定的兼容性,,只需要修改少量程序,,即可實現(xiàn)各種卷積編碼和不同的調(diào)制中頻。
  (4)與浮點算法的仿真性能相比較,,采用定點算法的系統(tǒng)性能損失不大,,并能以較低的信噪比提供可靠的數(shù)據(jù)傳輸。
1 系統(tǒng)總體結(jié)構(gòu)及硬件設計
  圖1是中頻調(diào)制解調(diào)系統(tǒng)的工作流程圖,。在發(fā)端,,數(shù)據(jù)通過A/D轉(zhuǎn)換器采樣后進入FPGA,在其中完成(2,1,7)卷積編碼和QPSK調(diào)制后通過D/A轉(zhuǎn)換器輸出,。在收端,,接收到的信號通過A/D轉(zhuǎn)換器采樣后進入FPGA,在其中完成QPSK解調(diào)和Viterbi譯碼后通過D/A轉(zhuǎn)換器輸出,。


2 系統(tǒng)的FPGA實現(xiàn)
  系統(tǒng)主要分為編譯碼和調(diào)制解調(diào)兩大部分,,下面分別敘述這兩部分的原理及設計。
2.1 卷積編碼與Viterbi譯碼的FPGA實現(xiàn)
2.1.1 (2,1,7)卷積編碼
  典型的(n,,m,,k)卷積碼編碼器是指輸入位數(shù)為m、輸出位數(shù)為n,、約束長度為k的卷積碼編碼器,,其編碼速率為m/n。一個(2,,1,,7)的卷積碼編碼器如圖2所示,可用六個移位寄存器實現(xiàn),。


2.1.2 Viterbi譯碼
  Viterbi譯碼算法是Viterbi于1967年提出的一種概率譯碼算法。其主要思想就是最大" title="最大">最大似然譯碼[1],。譯碼時,,將接收序列與根據(jù)編碼產(chǎn)生的網(wǎng)格圖上面的所有路徑進行比較,求出其漢明距離或歐式距離,選出具有最小距離的路徑,,那么這條路徑上的序列與發(fā)送序列相同的可能性最大,。在AWGN信道中,當使用歐式距離時,,Viterbi算法的性能最好,。因此,這種算法是最優(yōu)最大似然譯碼算法[2],。Viterbi譯碼器" title="譯碼器">譯碼器分為硬判決譯碼器和軟判決" title="軟判決">軟判決譯碼器,,軟判決譯碼器與硬判決譯碼器相比有2~3dB的增益,而譯碼器結(jié)構(gòu)復雜度增加不大[1],。
  由Viterbi算法的基本原理可得典型的Viterbi譯碼器,,如圖3所示。


  分支路徑度量產(chǎn)生單元BMG(Branch Metric Generate)用于產(chǎn)生接收序列與狀態(tài)轉(zhuǎn)移分支上編碼輸出數(shù)據(jù)之間的距離,。令長度為n的接收信號為,,與之相應的發(fā)送信號為。因為具有最小歐式距離的路徑也就是具有最大相關(guān)的路徑,,所以定義分支路徑上的度量為:,。由于此分支路徑度量沒有平方運算,所以可將狀態(tài)轉(zhuǎn)移分支上的編碼輸出數(shù)據(jù)存儲在查找表內(nèi),,這樣只需進行加減和查表運算,,大大減小了實現(xiàn)的復雜程度。以上計算公式中數(shù)值為連續(xù)值,, 而本設計采用的是軟判決譯碼器,,故只需對輸入的接收信號進行均勻量化即可(量化比特數(shù)為q)。
  加比選單元ACS(Add-Compare-Select)模塊包括若干個單個狀態(tài)加比選模塊ACSU,,一個ACSU模塊執(zhí)行一個狀態(tài)的路徑度量升級,。ACSU模塊的具體個數(shù)根據(jù)譯碼器的速率要求而定。對于低速的譯碼器,,為了節(jié)約芯片的面積,,可以使用較少的ACSU模塊進行時分復用;而在高速Viterbi譯碼器的設計中,,則采用全并行的結(jié)構(gòu),,ACSU模塊的個數(shù)等于網(wǎng)格圖上的狀態(tài)數(shù)N=2k-1。譯碼器開始工作時,,給路徑度量設定一個初始化正值,。在度量升級過程中,路徑度量的不斷累加會造成溢出,。因為在度量升級時只是比較大小,,所以在每次度量升級之后,,所有的路徑度量值減去路徑度量值中的最小值,而不會影響路徑度量間的大小關(guān)系,。同時,,為了下次路徑度量升級不出現(xiàn)負值,需要對所有的度量值加上一個恒定常數(shù),。經(jīng)過歸一化處理后的路徑度量,,其最大值與最小值相差不超過2q(k-1)。
  所以,,對于q比特而軟判決編碼長度為k的Viterbi譯碼器,,其路徑度量長度為q+log2(k-1)比特[3]
  MLD(Most-Likelihood-Decision)模塊用于在所有狀態(tài)的路徑度量中找出最大值,,具有最大路徑度量的幸存路徑便是最大似然路徑,。在時刻L時,MLD電路判決最大似然路徑,,將其末端節(jié)點狀態(tài)送至TB模塊,。同時為了保證下次的路徑度量升級不出現(xiàn)負值,還要找出最小值送到PMMI模塊,,在其中進行歸一化處理,。
  PMMI模塊和SPMI模塊分別是ACS模塊與路徑度量存儲器PMM(Path Metric Memory)之間和幸存路徑存儲器SPM(Survivor Path Memory)與MLD模塊之間的接口模塊。同時,,TB(TraceBack)模塊也通過SPMI模塊讀取幸存路徑存儲器信息,。針對不同的存儲方式,SPMI和PMMI的復雜程度也不同,。ACSU模塊的復用程度越高,,其接口電路越復雜[4]
  TB模塊從SPM中讀取當前時刻64條路徑的幸存信息,,根據(jù)末端狀態(tài)可以找到相應的最大似然路徑在時刻t的幸存信息,,從而找到t-1時刻最大似然路徑上的狀態(tài)。依此類推,,直至找到最大似然路徑在t-L+1時刻的狀態(tài),,狀態(tài)的最高位即為譯碼輸出。
  FPGA可以實現(xiàn)流水線操作,,而各個模塊可以同時進行工作,,所以需要控制模塊處理各個模塊間的時序關(guān)系。每個子模塊都有一個控制信號,,使得輸入數(shù)據(jù)可以在各個模塊之間進行流水操作,。
  由于本方案是基于各個功能單元自上至下設計的,靈活性較大,,稍加修改子模塊,,便可以用于實現(xiàn)各種卷積碼的Viterbi譯碼器,。
2.2 QPSK調(diào)制與解調(diào)的FPGA實現(xiàn)
  QPSK調(diào)制模塊由成形濾波和上變頻兩部分組成。成形濾波具有兩個功能,,即限帶和抗碼間干擾。成形濾波采用查表的方式實現(xiàn),,四倍內(nèi)插,,升余弦滾降。成形后的數(shù)據(jù)與NCO產(chǎn)生的本地載波進行上變頻運算,。
  QPSK解調(diào)的結(jié)構(gòu)框圖如圖4所示,。解調(diào)模塊由下變頻、低通濾波,、根升余弦濾波和載波同步幾部分組成,。I、Q兩路的調(diào)制信號先經(jīng)過本地載波NCO下變頻,,再通過低通濾波器LPF得到基帶信號,。基帶信號需要進行相應的根升余弦濾波,。由于本地載波與發(fā)端載頻之間有一定的偏差,,所以要根據(jù)解調(diào)后的信號估計頻差并修改本地載波 NCO的參數(shù),實現(xiàn)載波同步,。數(shù)據(jù)經(jīng)過根升余弦濾波后進行差分解碼,,解調(diào)后送入譯碼器單元。


3 系統(tǒng)性能分析與結(jié)論
  綜上所述,,系統(tǒng)主要功能都是在FPGA內(nèi)完成的,。本文選擇Xilinx公司的100萬門FPGA芯片XC2V1000,在ISE 6.2i環(huán)境下進行編程開發(fā),。系統(tǒng)的資源占用情況如表1所示,。


  為了測試系統(tǒng)在噪聲下的誤碼率性能,在發(fā)端和收端之間引入噪聲源,,在70MHz中頻上進行數(shù)據(jù)傳輸,。使用誤碼率分析儀進行現(xiàn)場測試,獲得的測試誤碼率曲線如圖5所示,。為了方便比較,,圖中給出了未編碼傳輸系統(tǒng)的理想誤碼率曲線。由于定點實現(xiàn),、定時同步,、載波同步等誤差因素,調(diào)制解調(diào)的實現(xiàn)損耗將近1dB,;而viterbi譯碼的量化輸入和截短譯碼(本方案采用3比特量化和64步截短譯碼)帶來的實現(xiàn)損失約為1 dB,。(2,1,7)卷積碼的編碼增益約為5~6dB[1],所以測試誤碼率曲線與未編碼傳輸系統(tǒng)的理想誤碼率曲線之間的差距是3~4dB,。換言之,本系統(tǒng)的實現(xiàn)增益為3~4dB,。


  綜上所述,,本系統(tǒng)設計簡單、功耗低,、性能良好,,可在中頻范圍內(nèi)進行高速數(shù)據(jù)的可靠傳輸。在不改變系統(tǒng)結(jié)構(gòu)的情況下,,稍加修改可廣泛應用于其它類型的編碼調(diào)制系統(tǒng)中,。
參考文獻
1 王新梅,肖國鎮(zhèn).糾錯碼-原理與方法[M].西安:西安電子科技大學出版社,,1991
2 Shuji Kubota, Shuzo Kato. Novel Viterbi Decoder VLSI Implementation and its Performance. IEEE Transactions On Communications,,1993;41(8)
3 胡愛群,,龐 康,,蘇 杰等. K=9卷積碼的Viterbi譯碼算法及其FPGA實現(xiàn). 應用科學學報,1998,;16(2)
4 汪曉巖,,胡慶生,孫榮久等. Viterbi譯碼器的硬件實現(xiàn). 微電子學,,2002(32)

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點,。轉(zhuǎn)載的所有的文章,、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有,。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者,。如涉及作品內(nèi)容、版權(quán)和其它問題,,請及時通過電子郵件或電話通知我們,,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失,。聯(lián)系電話:010-82306118,;郵箱:[email protected]