文獻標(biāo)識碼: A
在數(shù)字通信中,誤碼率BER(Bit Error Rate)是衡量通信系統(tǒng)質(zhì)量的一項重要指標(biāo)。無論是設(shè)備故障、傳播衰落、碼間干擾、臨近信道干擾等因素都可能造成系統(tǒng)性能惡化甚至造成通信中斷,其結(jié)果都可通過誤碼的形式表現(xiàn)出來[1]。因此,誤碼測試儀是現(xiàn)代通信系統(tǒng)的主要測試儀器之一。
目前,通常使用的傳統(tǒng)誤碼測試儀雖然具有測試內(nèi)容豐富、測試結(jié)果直觀等優(yōu)點,但是由于通信系統(tǒng)復(fù)雜程度的不斷增加,接口形式變化多樣以及一些非標(biāo)準碼率的應(yīng)用,使得傳統(tǒng)誤碼測試儀的使用受到了一定的限制。另一方面,近年來FPGA技術(shù)得到了迅速發(fā)展,使用FPGA設(shè)計電路具有很大的靈活性,可以大大提高集成度和設(shè)計速度,還可以簡化接口和控制,有利于提高系統(tǒng)的整體性能和工作可靠性。本文即介紹了一種基于FPGA的RS485接口誤碼測試儀的設(shè)計和實現(xiàn)。該設(shè)計具有系統(tǒng)簡單、功能可靠、接口獨特等特點,并且增加了傳統(tǒng)誤碼測試儀所沒有的測量系統(tǒng)傳輸延時的功能。
1 設(shè)計背景
本文所設(shè)計的誤碼測試儀主要用于測試某通信系統(tǒng)的誤碼性能。該通信系統(tǒng)是一個龐大復(fù)雜的系統(tǒng),本文主要介紹信道部分,包括基帶的信道編解碼和無線信道的收發(fā),其基本框圖如圖1所示。
為了在線路傳輸上保證良好的抗干擾能力,系統(tǒng)采用了RS485接口,選用了4.096 Mb/s的碼率。因此,為了測試圖1所示系統(tǒng)的誤碼性能,誤碼測試儀必須具有以下指標(biāo):
(1) 邏輯接口:RS485差分信號。
(2) 物理接口:DB9。
(3) 碼率:4.096 Mb/s。
傳統(tǒng)誤碼測試儀通常都不具備以上3項指標(biāo),本文設(shè)計的誤碼測試儀滿足了上述3項指標(biāo)。
2 誤碼測試原理
構(gòu)成誤碼測試儀的方案有多種形式,其基本工作過程可以概括為以下幾個步驟:
(1) 以某種方式產(chǎn)生和發(fā)送碼組相同的碼形,以相同相位的本地碼組作為比較標(biāo)準。
(2) 將本地碼組與接收碼組逐個進行比較,并輸出誤碼脈沖信號。
(3) 對誤碼脈沖信號進行統(tǒng)計,并給出相應(yīng)的誤碼率。
在通信工程應(yīng)用中,為了最大程度地模擬真實通信中的數(shù)據(jù)流的統(tǒng)計特性,通常采用二進制偽隨機序列。對于偽隨機序列有以下幾點要求[2]:
(1) 應(yīng)具有良好的偽隨機性,即應(yīng)具有和隨機序列類似的隨機性。
(2) 應(yīng)具有良好的自相關(guān)、互相關(guān)和部分相關(guān)特性,即要求自相關(guān)峰值尖銳,而互相關(guān)和部分相關(guān)值接近于零。這是為了接收端的準確檢測,以減小差錯。
(3) 要求隨機序列的數(shù)目足夠多,以保證在碼分多址的通信系統(tǒng)中,有足夠多的地址提供給不同的用戶。
根據(jù)本地碼組發(fā)生器的構(gòu)成方式不同,誤碼測試儀可分為多種類型,本文采用的是逐位檢測式,其使用的碼組為最大長度線形移位反饋寄存器序列,即m序列。其工作原理為:本地的m序列發(fā)生器產(chǎn)生的m序列和所接收的m序列進行逐位比較,若兩個m序列同步,則比較器輸出的是傳輸誤碼;若兩個m序列不同步,則比較器輸出的是由失步造成的誤碼。由于失步造成的誤碼較大(根據(jù)m序列的特性,其誤碼率應(yīng)為0.5),因此可根據(jù)誤碼率門限來區(qū)分檢測系統(tǒng)是否失步。若失步,則讓本地m序列發(fā)生器等待一個時鐘周期,再依次逐位比較,并逐位控制本地m序列發(fā)生器的等待時間,直到兩序列完全同步為止。
3 硬件設(shè)計
本系統(tǒng)用單片機作為主控芯片,由FPGA完成誤碼測試的工作,將得到的誤碼信息傳送給單片機,單片機進行誤碼率的計算后送液晶屏進行顯示。m序列的發(fā)送和接收都是通過RS485接口進行的。本系統(tǒng)單片機選用的是51系列的STC89LE58RD+,3.3 V供電,可以減小系統(tǒng)功耗。FPGA選用了Xilinx公司的SPARTNANII-E系列的XC2S300E,其內(nèi)部包括了30萬個邏輯門和其他豐富的資源,可以滿足本系統(tǒng)的需要。RS485接口芯片選用Analog Device公司的ADM4857,它是一款10 Mb/s碼率、全雙工的485接口芯片[3-4]。系統(tǒng)的硬件框圖如圖2所示。
4 軟件設(shè)計
軟件部分是該系統(tǒng)功能實現(xiàn)的核心,主要包括了單片機和FPGA兩大部分。
(1) 單片機軟件
單片機作為該系統(tǒng)的主控芯片,主要完成FPGA通信控制、誤碼率計算、液晶顯示控制等功能。開機后,單片機控制系統(tǒng)進入掛起狀態(tài),等待按下start按鈕。開始工作后,單片機每隔1 s向FPGA請求刷新1次誤碼數(shù)據(jù),F(xiàn)PGA則將誤碼數(shù)據(jù)通過SPI總線傳送給單片機。單片機將取得的誤碼數(shù)據(jù)換算成誤碼率連同得到的系統(tǒng)傳輸延遲時間一起送到LCD顯示。單片機軟件的流程圖如圖3所示。
(2) FPGA邏輯設(shè)計[5-6]
本系統(tǒng)大部分功能通過FPGA實現(xiàn),使用Verilog編寫程序。由于采用的是逐位比較式方案,因此,首先由m序列產(chǎn)生模塊產(chǎn)生4.096 Mb/s碼率的m序列,送入反相器作為源端。反相器是為了人為產(chǎn)生誤碼而設(shè)置的。當(dāng)按下按鍵時,反相器使能,將m序列1位反相后輸出,即相當(dāng)于產(chǎn)生了1個誤碼。m序列和時鐘同時輸出給被測系統(tǒng),經(jīng)被測系統(tǒng)后再返回給誤碼測試儀。誤碼測試儀對輸入的m序列和本地產(chǎn)生的m序列進行同步,同步以后,在固定寄存器中置入64位m序列數(shù)據(jù)。在源端,固定寄存器和移位寄存器不斷進行比較,直到兩者一致,則啟動延時計數(shù)器,同時接收端移位寄存器與固定寄存器進行比較,當(dāng)兩者一致時關(guān)閉計數(shù)器,此時計數(shù)器中的數(shù)值即為被測系統(tǒng)的延時。另一方面,同步以后,開始進行誤碼統(tǒng)計。若在設(shè)置的測試周期內(nèi)誤碼率大于設(shè)定的門限值,則認為失步,重新開始同步。最后,將誤碼數(shù)和系統(tǒng)延時數(shù)通過SPI接口送給單片機,進行誤碼率和系統(tǒng)延時的計算,將計算結(jié)果顯示在LCD上。SPI接口是通過軟件進行模擬的。整個FPGA內(nèi)部的模塊框圖如圖4所示。
5 系統(tǒng)設(shè)計仿真
對設(shè)計完成后的主要功能模塊進行了仿真以驗證其功能的正確性。
(1) m序列產(chǎn)生器仿真
本設(shè)計采用了23級m序列以確保偽隨機序列的特性,其本原多項式為f(x)=1+x5+x23,仿真波形如圖5所示。
(2) SPI接口仿真
FPGA與單片機之間采用SPI接口進行通信。外圍設(shè)備接口SPI通常有3~4條信號線,本文采用3線方式,即片選線SS、時鐘線SCK和數(shù)據(jù)線SDIO。SS為低時有效,在SCK的同步下傳送數(shù)據(jù),仿真波形如圖6所示。
(3) 系統(tǒng)仿真
系統(tǒng)開始工作并正確同步后,開始誤碼和延時的統(tǒng)計。每當(dāng)單片機發(fā)送1個請求數(shù)據(jù)信號,就送出當(dāng)前的誤碼數(shù)和延時數(shù),單片機進行計算后送顯示器顯示。系統(tǒng)仿真波形如圖7所示。
6 調(diào)試
調(diào)試是整個設(shè)計實現(xiàn)的關(guān)鍵步驟。經(jīng)過調(diào)試,最終實現(xiàn)了設(shè)計的所有功能。下面給出在設(shè)計和調(diào)試中的一些經(jīng)驗教訓(xùn)以供參考。
(1) 51單片機的Port 1端口默認情況下沒有上拉電阻,因此需要特別注意。在調(diào)試初期就是因為沒有在外部加上拉電阻而導(dǎo)致與FPGA通信不正常。
(2) RS485接口芯片對于差分線的輸入輸出阻抗匹配要求比較嚴格,需要根據(jù)手冊要求選擇合適的匹配電阻,否則會導(dǎo)致輸入輸出差分信號質(zhì)量嚴重劣化,影響系統(tǒng)正常工作。
(3) FPGA與單片機通信等功能需要特別注意時序的配合問題,否則可能導(dǎo)致通信不正常。可以通過選擇適當(dāng)?shù)挠|發(fā)沿來調(diào)整時序。
本文介紹了一種基于FPGA的RS485接口的誤碼測試儀的設(shè)計原理和實現(xiàn)過程。與傳統(tǒng)的誤碼測試儀相比,本誤碼測試儀具有原理簡單、接口獨特、可測試系統(tǒng)延時等特點。此外,由于FPGA良好的可擴展性,可以在不改變硬件電路的基礎(chǔ)上方便地增加或修改相應(yīng)的功能,增加了系統(tǒng)的可擴展性。
參考文獻
[1] 曹志剛,錢亞生. 現(xiàn)代通信原理[M]. 北京:清華大學(xué)出版社,2001.
[2] 段吉海,黃智偉. 基于CPLD/FPGA的數(shù)字通信系統(tǒng)建模與設(shè)計[M]. 北京:電子工業(yè)出版社,2004.
[3] Analog Devices Inc. ADM4850-7 Series Data Book[Z]. 2004.
[4] 牛思先,向征. 基于RS-422/485的串行異步通訊接口的設(shè)計和應(yīng)用[J]. 計算機工程與設(shè)計,2007(10).
[5] 夏宇聞. Verilog數(shù)字系統(tǒng)設(shè)計教程[M]. 北京:北京航空航天大學(xué)出版社,2003.
[6] 王誠,薛小剛,鐘信潮,等. FPGA/CPLD設(shè)計工具Xilinx ISE 5.X使用詳解[M]. 北京:人民郵電出版社,2003.