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