基于FPGA的SPI總線接口的實現
該芯片由一個微控制器控制,SPI接口有種工作模式分別為;CPOL=0,,CPHA=O和CPOL=1,CPHA=1,兩者區別為在SPI主端不傳數據時,時鐘的電平前者為0,后者為1。在里采用CPOL=0,CPHA=模式。
3. 2 工程環境設置及SPI接口設計
Lattice公司的FPGA工程開發EDA軟件名為ispLEVER,其7.2版本為較新版本。該版本集合了IPExpress,Reveal Logic Analyzer等實用工具,可用于添加Lattice公司開發的IP核以及在線邏輯仿真等。ispLEVER 7.2的默認仿真工具為Active-HDL仿真器,由于需要采用Model-Sim仿真器,因此安裝ModleSim 6.2b版本。對仿真軟件成功安裝后,加入pcsc_mti_work,pcsc_mti_work_revA,ecp2m_vlg和pmi_work四個仿真庫并進行編譯。編譯完成后啟動ispLEVER 7.2,在options菜單中修改環境變量和默認仿真工具,使得ModelSim連接圖標出現在工具欄中成為工程的仿真工具。
進入ispLEVER 7.2的編輯界面,開始建立工程,首先選擇器件型號,這里采用LatticeECP2M系列中的LFE2MSOE型號芯片,并選擇封裝類型為FPGAB-GA672,速度級別為-5。器件選定后,建立FLASH_contro]工程文件和testbench測試文件,同時用IP Express生成讀/寫RAM模塊。
在主程序中編寫RAM控制段和SPI接口控制程序段,用狀態機完成對RAM的控制,狀態機在idle,read,write和config之間跳轉。在向FLASH寫數據時,應先寫入寫使能指令,完成后寫入頁編程指令,隨后寫入地址,最后寫入數據;從FLASH讀數據的過程大致相同,但應首先寫入讀使能指令,然后寫入讀數據指令。應當注意的是讀指令的時鐘頻率低于寫指令,具體頻率要求可參照芯片說明手冊。
3.3 SPI接口功能驗證
在線邏輯分析儀(reveal logic analyzer)是較為先進的EDA工具,它能提類似于功能仿真的波形示意圖,這些波形是通過在FPGA芯片運行過程中實時抓取出來的。它真實地再現了FPGA芯片內部的動態信號狀況,使工程開發人員能直觀的發現問題,修正邏輯。仿真綜合通過后,將程序下載至FPGA芯片中,用Reveal Inserter插入在線邏輯分析信號,采樣點數設定為2 048個點,分析信號會在工程目錄中生成一個相關文件,綜合后將數據文件下載至Lattice芯片中,采用人工觸發后,即可在在線邏輯分析儀中觀察信號波形。截取的波形如圖4所示。
從圖4可看出,在時鐘C的8個有效周期寫入寫使能指令,寫使能指令通過D信號線串行進入FLASH芯片,指令的寫入過程應保證S信號低電平,8個周期的指令輸入完畢后S回復為高電平。在SPI總線主端的RAM控制信號由狀態機控制,instructions為8位的寄存器,用于存儲指令;RAMl_dout對應ram_wr的輸出端口。
圖5為數據指令后讀出數據的波形圖,數據從Q信號線讀出并進入ram_rd。在讀數據周期S保持低電平,數據的輸出在時鐘的下降沿發生,在讀指令完成后,state狀態寄存器回復至空閑狀態。
4 結語
SPI總線是當前流行的串行接口的一種,它滿足工程設計的要求,使開發人員能夠簡單迅速的完成設計工作,實現功能要求。將它與FPGA編程結合,利用FPGA的靈活性,使電子設計能夠在很短的周期內完成,符合當今電子設計的要求。本文通過實現帶有SPI總線接口的FLASH芯片功能,驗證了基于FPGA設計的SPI接口的正確,實現了FLASH芯片的讀/寫功能。
fpga相關文章:fpga是什么
評論