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