卷積碼+QPSK的中頻調(diào)制解調(diào)系統(tǒng)的FPGA實現(xiàn)
發(fā)布時間:2007/8/29 0:00:00 訪問次數(shù):706
摘要:提出了一個采用(2,1,7)卷積碼+QPSK的中頻調(diào)制解調(diào)方案,并在Xilinx公司的100萬門FPGA芯片上實現(xiàn)了該系統(tǒng)。該系統(tǒng)在信噪比SNR為6dB左右時可實現(xiàn)速率超過1Mbit/s、誤碼率小于10 -5的數(shù)據(jù)傳輸。
關鍵詞:卷積編碼 Viterbi譯碼 QPSK FPGA
在無線數(shù)據(jù)傳輸中,由于信道中的噪聲干擾,在接收端會引入一定的誤碼率(Bit Error Rate,BER)。高質(zhì)量的數(shù)據(jù)業(yè)務要求較低的BER。為了達到較低的BER,經(jīng)常采用信道編碼技術。卷積編碼和Viterbi譯碼是廣泛使用的信道編碼技術,具有一定的克服突發(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)的,結構簡單,體積小,功耗低。
(2)具有很好的實時性。對于1Mbit/s以上的數(shù)據(jù)速率,譯碼延遲不超過0.1ms。
(3)模塊化的設計使得系統(tǒng)具有一定的兼容性,只需要修改少量程序,即可實現(xiàn)各種卷積編碼和不同的調(diào)制中頻。
(4)與浮點算法的仿真性能相比較,采用定點算法的系統(tǒng)性能損失不大,并能在較低的信噪比提供可靠的數(shù)據(jù)傳輸。
1 系統(tǒng)總結構及硬件設計
圖1是中頻調(diào)制解調(diào)系統(tǒng)的工作流程圖。在發(fā)端,數(shù)據(jù)通過A/D轉換器采樣后進入FPGA,在其中完成(2,1,7)卷積編碼和QPSK調(diào)制后通過D/A轉換器輸出。在收端,接收到的信號通過A/D轉換器采樣后進入FPGA,在其中完成QPSK解調(diào)和Viterbi譯碼后通過D/A轉換器輸出。
圖2
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年提出的一種概率譯碼算法。其主要思想就是最大似然譯碼。譯碼時,將接收序列與根據(jù)編碼產(chǎn)生的網(wǎng)格圖上面的所有路徑進行比較,求出其漢明距離或歐式距離,選出具有最小距離的路徑,那么這條路徑上的序列與發(fā)送序列相同的可能性最大。在AWGN信道中,當使用歐式距離時,Viterbi算法的性能最好。因此,這種算法是最優(yōu)最大似然譯碼算法。Viterbi譯碼器分為硬判決譯碼器和軟判決譯碼器,軟判決譯碼器與硬判決譯碼器相比有2~3dB的增益,而譯碼器結構復雜度增加不大。
圖3
由Viterbi算法的基本原理可得典型的Viterbi譯碼器,如圖3所示。
分支路徑度量產(chǎn)生單元BMG(Branch Metric Generate)用于產(chǎn)生接收序列與狀態(tài)轉移分支上編碼輸出數(shù)據(jù)之間的距離。令長度為n的接收信號為R=(r1,…rn),與之相應的發(fā)送信號為C=(c1,…cn)。因為具有最小歐式距離的路徑也就是具有最大相關的路徑,所以定義分支路徑上的度量為:由于此分支路徑度量沒有平方運算,所以可將狀態(tài)轉移分支上的編碼輸出數(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譯碼器的設計中,則采用全并行的結構,ACSU模塊的個數(shù)等于網(wǎng)格圖上的狀態(tài)數(shù)N=2k-1。譯碼器開始工作時,給路徑度量設定一個初始化正值。在度量升級過程中,路徑度量的不斷累加會造成溢出。因為在度量升級時只是比較大小,所以在每次度量升級之后,所有的路徑度量值減去路徑度量值中的最小值,而不會影響路徑度量向的大小關系。同時,為了下次路徑度量升級不出現(xiàn)負值,需要對所有的度量值加上一個恒定常數(shù)。經(jīng)過歸一化處理后的路徑度量,其最大值與最小值相差不超過2 q(k-1)。
所以,對于q比特而軟判決編碼長度為k的Viterbi譯碼器,其路徑度量長度為q+log2(k-1)比特。
MLD(Most-Likelihood-Decision)模塊用于在所有狀態(tài)的路徑度量中找出最大值,具有最大路徑度量的幸存路徑便是最大似然路徑。在時刻L時,
摘要:提出了一個采用(2,1,7)卷積碼+QPSK的中頻調(diào)制解調(diào)方案,并在Xilinx公司的100萬門FPGA芯片上實現(xiàn)了該系統(tǒng)。該系統(tǒng)在信噪比SNR為6dB左右時可實現(xiàn)速率超過1Mbit/s、誤碼率小于10 -5的數(shù)據(jù)傳輸。
關鍵詞:卷積編碼 Viterbi譯碼 QPSK FPGA
在無線數(shù)據(jù)傳輸中,由于信道中的噪聲干擾,在接收端會引入一定的誤碼率(Bit Error Rate,BER)。高質(zhì)量的數(shù)據(jù)業(yè)務要求較低的BER。為了達到較低的BER,經(jīng)常采用信道編碼技術。卷積編碼和Viterbi譯碼是廣泛使用的信道編碼技術,具有一定的克服突發(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)的,結構簡單,體積小,功耗低。
(2)具有很好的實時性。對于1Mbit/s以上的數(shù)據(jù)速率,譯碼延遲不超過0.1ms。
(3)模塊化的設計使得系統(tǒng)具有一定的兼容性,只需要修改少量程序,即可實現(xiàn)各種卷積編碼和不同的調(diào)制中頻。
(4)與浮點算法的仿真性能相比較,采用定點算法的系統(tǒng)性能損失不大,并能在較低的信噪比提供可靠的數(shù)據(jù)傳輸。
1 系統(tǒng)總結構及硬件設計
圖1是中頻調(diào)制解調(diào)系統(tǒng)的工作流程圖。在發(fā)端,數(shù)據(jù)通過A/D轉換器采樣后進入FPGA,在其中完成(2,1,7)卷積編碼和QPSK調(diào)制后通過D/A轉換器輸出。在收端,接收到的信號通過A/D轉換器采樣后進入FPGA,在其中完成QPSK解調(diào)和Viterbi譯碼后通過D/A轉換器輸出。
圖2
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年提出的一種概率譯碼算法。其主要思想就是最大似然譯碼。譯碼時,將接收序列與根據(jù)編碼產(chǎn)生的網(wǎng)格圖上面的所有路徑進行比較,求出其漢明距離或歐式距離,選出具有最小距離的路徑,那么這條路徑上的序列與發(fā)送序列相同的可能性最大。在AWGN信道中,當使用歐式距離時,Viterbi算法的性能最好。因此,這種算法是最優(yōu)最大似然譯碼算法。Viterbi譯碼器分為硬判決譯碼器和軟判決譯碼器,軟判決譯碼器與硬判決譯碼器相比有2~3dB的增益,而譯碼器結構復雜度增加不大。
圖3
由Viterbi算法的基本原理可得典型的Viterbi譯碼器,如圖3所示。
分支路徑度量產(chǎn)生單元BMG(Branch Metric Generate)用于產(chǎn)生接收序列與狀態(tài)轉移分支上編碼輸出數(shù)據(jù)之間的距離。令長度為n的接收信號為R=(r1,…rn),與之相應的發(fā)送信號為C=(c1,…cn)。因為具有最小歐式距離的路徑也就是具有最大相關的路徑,所以定義分支路徑上的度量為:由于此分支路徑度量沒有平方運算,所以可將狀態(tài)轉移分支上的編碼輸出數(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譯碼器的設計中,則采用全并行的結構,ACSU模塊的個數(shù)等于網(wǎng)格圖上的狀態(tài)數(shù)N=2k-1。譯碼器開始工作時,給路徑度量設定一個初始化正值。在度量升級過程中,路徑度量的不斷累加會造成溢出。因為在度量升級時只是比較大小,所以在每次度量升級之后,所有的路徑度量值減去路徑度量值中的最小值,而不會影響路徑度量向的大小關系。同時,為了下次路徑度量升級不出現(xiàn)負值,需要對所有的度量值加上一個恒定常數(shù)。經(jīng)過歸一化處理后的路徑度量,其最大值與最小值相差不超過2 q(k-1)。
所以,對于q比特而軟判決編碼長度為k的Viterbi譯碼器,其路徑度量長度為q+log2(k-1)比特。
MLD(Most-Likelihood-Decision)模塊用于在所有狀態(tài)的路徑度量中找出最大值,具有最大路徑度量的幸存路徑便是最大似然路徑。在時刻L時,