基于FPGA的RS485接口誤碼測試儀的設計
3 硬件設計
本系統用單片機作為主控芯片,由FPGA完成誤碼測試的工作,將得到的誤碼信息傳送給單片機,單片機進(jìn)行誤碼率的計算后送液晶屏進(jìn)行顯示。m序列的發(fā)送和接收都是通過(guò)RS485接口進(jìn)行的。本系統單片機選用的是51系列的STC89LE58RD+,3.3 V供電,可以減小系統功耗。FPGA選用了Xilinx公司的SPARTNANII-E系列的XC2S300E,其內部包括了30萬(wàn)個(gè)邏輯門(mén)和其他豐富的資源,可以滿(mǎn)足本系統的需要。RS485接口芯片選用Analog Device公司的ADM4857,它是一款10 Mb/s碼率、全雙工的485接口芯片[3-4]。系統的硬件框圖如圖2所示。
4 軟件設計
軟件部分是該系統功能實(shí)現的核心,主要包括了單片機和FPGA兩大部分。
(1) 單片機軟件
單片機作為該系統的主控芯片,主要完成FPGA通信控制、誤碼率計算、液晶顯示控制等功能。開(kāi)機后,單片機控制系統進(jìn)入掛起狀態(tài),等待按下start按鈕。開(kāi)始工作后,單片機每隔1 s向FPGA請求刷新1次誤碼數據,FPGA則將誤碼數據通過(guò)SPI總線(xiàn)傳送給單片機。單片機將取得的誤碼數據換算成誤碼率連同得到的系統傳輸延遲時(shí)間一起送到LCD顯示。單片機軟件的流程圖如圖3所示。
(2) FPGA邏輯設計[5-6]
本系統大部分功能通過(guò)FPGA實(shí)現,使用Verilog編寫(xiě)程序。由于采用的是逐位比較式方案,因此,首先由m序列產(chǎn)生模塊產(chǎn)生4.096 Mb/s碼率的m序列,送入反相器作為源端。反相器是為了人為產(chǎn)生誤碼而設置的。當按下按鍵時(shí),反相器使能,將m序列1位反相后輸出,即相當于產(chǎn)生了1個(gè)誤碼。m序列和時(shí)鐘同時(shí)輸出給被測系統,經(jīng)被測系統后再返回給誤碼測試儀。誤碼測試儀對輸入的m序列和本地產(chǎn)生的m序列進(jìn)行同步,同步以后,在固定寄存器中置入64位m序列數據。在源端,固定寄存器和移位寄存器不斷進(jìn)行比較,直到兩者一致,則啟動(dòng)延時(shí)計數器,同時(shí)接收端移位寄存器與固定寄存器進(jìn)行比較,當兩者一致時(shí)關(guān)閉計數器,此時(shí)計數器中的數值即為被測系統的延時(shí)。另一方面,同步以后,開(kāi)始進(jìn)行誤碼統計。若在設置的測試周期內誤碼率大于設定的門(mén)限值,則認為失步,重新開(kāi)始同步。最后,將誤碼數和系統延時(shí)數通過(guò)SPI接口送給單片機,進(jìn)行誤碼率和系統延時(shí)的計算,將計算結果顯示在LCD上。SPI接口是通過(guò)軟件進(jìn)行模擬的。整個(gè)FPGA內部的模塊框圖如圖4所示。
評論