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