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