《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的RS485接口誤碼測試儀的設(shè)計(jì)和實(shí)現(xiàn)
基于FPGA的RS485接口誤碼測試儀的設(shè)計(jì)和實(shí)現(xiàn)
楊洪軍, 劉永亮
成都學(xué)院 電子信息工程學(xué)院, 四川 成都 610106
摘要: 介紹了一種基于FPGA的誤碼測試儀的設(shè)計(jì)原理、實(shí)現(xiàn)過程及調(diào)試經(jīng)驗(yàn)。該誤碼測試系統(tǒng)使用RS485接口,具有原理簡單、接口獨(dú)特、功能豐富等特點(diǎn),系統(tǒng)具有較好的可擴(kuò)展性。
關(guān)鍵詞: FPGA 誤碼測試儀 RS485 m序列
中圖分類號(hào): TN91
文獻(xiàn)標(biāo)識(shí)碼: A
Design and implementation of a BER detector with RS485 interface based on FPGA
YANG Hong Jun, LIU Yong Liang
School of Electronic Information Engineering, Chengdu University, Chengdu 610106, China
Abstract: The paper introduces the design, implementation and debugging of a BER detector with RS485 interface based on FPGA, which possesses the characteristics of simple principle, unique interface and multiple functions. And the whole system has a good expansibility due to the programmable characteristic of the FPGA device.
Key words : BER detector; FPGA; RS485; m series

    在數(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ù)手冊要求選擇合適的匹配電阻,否則會(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。