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