基于FPGA的PEX8311的LBS控制器的實現(xiàn)
2.4 LBS狀態(tài)機設計
LBS共設計有4個狀態(tài):IDLE,START,DO,BUSY。其狀態(tài)轉移圖如圖2所示。本文引用地址:http://m.butianyuan.cn/article/190888.htm
IDLE:空閑狀態(tài)。
START:當ADS地址選通有效時進入此狀態(tài),進行地址空間判斷。
DO:當?shù)刂房臻g有效,并且傳輸條件滿足時進入傳輸狀態(tài),每個時鐘判斷條件,當條件滿足時繼續(xù)該狀態(tài),當條件不滿足時,進入BUSY等待狀態(tài),傳輸結束(BLAST有效)進入IDLE狀態(tài)。
BUSY:當數(shù)據沒準備好時,在BUSY狀態(tài)等待,當數(shù)據準備好后進入DO狀態(tài),當超時后進入IDLE狀態(tài),實時退出。
2.5 LBS狀態(tài)機工作流程
FPGA作為LBS的邏輯控制器,負責協(xié)調好與DDR_FIFO數(shù)據和PEX8311之間的時序關系。系統(tǒng)接收數(shù)據時,首先由驅動程序向PEX8311發(fā)送復位信號,通過LRESET復位LBS本地端的FPGA,清空FPGA內部DDR_FIFO內部數(shù)據,并將HF和FF標志置為無效,然后等待數(shù)據的輸入。FPGA讀入DDR數(shù)據后,首先將DDR數(shù)據寫入DDR_FIFO中,當DDR_FIFO中的數(shù)據達到半滿狀態(tài)時,HF標志位有效,通過FPGA向PEX8311發(fā)出DMA中斷請求。PC機響應中斷后,設置DMA傳輸模式,傳輸字節(jié)數(shù)及地址信號等。PEX8311通過LHOLD申請控制本地總線,此時FPGA發(fā)出的LHOLDA響應信號后獲得本地總線的控制權,并立即進入連續(xù)字節(jié)突發(fā)模式的Block DMA周期即由IDLE狀態(tài)到START狀態(tài)。FPGA在收到有效的LW/R讀信號和ADS地址選通信號后,進入DO狀態(tài),同時發(fā)出Ready本地準備好應答信號,使能DDR_FIFO的讀允許REN和輸出允許OE。在傳輸最后一個數(shù)據時,PEX8311發(fā)出BLAST信號,F(xiàn)PGA配置DDR_FIFO讀使能和輸出使能無效,并取消Ready從而結束DMA周期。PC系統(tǒng)發(fā)送數(shù)據時,F(xiàn)PGA將計算機通過PCIe傳過來的LBS數(shù)據寫入PC_FIFO中,再輸出寫入到DDR中。
2.6 LBS狀態(tài)機核心編碼設計
按照上述4個狀態(tài)進行Verilog設計,經過仿真和上板調試,效果很好,下面是狀態(tài)機設計程序,仿真時序圖如圖3,圖4所示。
評論