基于FPGA的RS485接口誤碼測試儀的設(shè)計(jì)
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請求刷新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)后再返回給誤碼測試儀。誤碼測試儀對輸入的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所示。
評論