基于FPGA的RS485接口誤碼測試儀的設(shè)計和實現(xiàn)
(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序列進(jìn)行同步,同步以后,在固定寄存器中置入64位m序列數(shù)據(jù)。在源端,固定寄存器和移位寄存器不斷進(jìn)行比較,直到兩者一致,則啟動延時計數(shù)器,同時接收端移位寄存器與固定寄存器進(jìn)行比較,當(dāng)兩者一致時關(guān)閉計數(shù)器,此時計數(shù)器中的數(shù)值即為被測系統(tǒng)的延時。另一方面,同步以后,開始進(jìn)行誤碼統(tǒng)計。若在設(shè)置的測試周期內(nèi)誤碼率大于設(shè)定的門限值,則認(rèn)為失步,重新開始同步。最后,將誤碼數(shù)和系統(tǒng)延時數(shù)通過SPI接口送給單片機(jī),進(jìn)行誤碼率和系統(tǒng)延時的計算,將計算結(jié)果顯示在LCD上。SPI接口是通過軟件進(jìn)行模擬的。整個FPGA內(nèi)部的模塊框圖如圖4所示。
5 系統(tǒng)設(shè)計仿真
對設(shè)計完成后的主要功能模塊進(jìn)行了仿真以驗證其功能的正確性。
(1) m序列產(chǎn)生器仿真
本設(shè)計采用了23級m序列以確保偽隨機(jī)序列的特性,其本原多項式為f(x)=1+x5+x23,仿真波形如圖5所示。
(2) SPI接口仿真
FPGA與單片機(jī)之間采用SPI接口進(jìn)行通信。外圍設(shè)備接口SPI通常有3~4條信號線,本文采用3線方式,即片選線SS、時鐘線SCK和數(shù)據(jù)線SDIO。SS為低時有效,在SCK的同步下傳送數(shù)據(jù),仿真波形如圖6所示。
(3) 系統(tǒng)仿真
系統(tǒng)開始工作并正確同步后,開始誤碼和延時的統(tǒng)計。每當(dāng)單片機(jī)發(fā)送1個請求數(shù)據(jù)信號,就送出當(dāng)前的誤碼數(shù)和延時數(shù),單片機(jī)進(jìn)行計算后送顯示器顯示。系統(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單片機(jī)的Port 1端口默認(rèn)情況下沒有上拉電阻,因此需要特別注意。在調(diào)試初期就是因為沒有在外部加上拉電阻而導(dǎo)致與FPGA通信不正常。
(2) RS485接口芯片對于差分線的輸入輸出阻抗匹配要求比較嚴(yán)格,需要根據(jù)手冊要求選擇合適的匹配電阻,否則會導(dǎo)致輸入輸出差分信號質(zhì)量嚴(yán)重劣化,影響系統(tǒng)正常工作。
(3) FPGA與單片機(jī)通信等功能需要特別注意時序的配合問題,否則可能導(dǎo)致通信不正常。可以通過選擇適當(dāng)?shù)挠|發(fā)沿來調(diào)整時序。
本文介紹了一種基于FPGA的RS485接口的誤碼測試儀的設(shè)計原理和實現(xiàn)過程。與傳統(tǒng)的誤碼測試儀相比,本誤碼測試儀具有原理簡單、接口獨特、可測試系統(tǒng)延時等特點。此外,由于FPGA良好的可擴(kuò)展性,可以在不改變硬件電路的基礎(chǔ)上方便地增加或修改相應(yīng)的功能,增加了系統(tǒng)的可擴(kuò)展性。
評論