摘 要:在現(xiàn)代EDA外圍電子器件的接口中存在多種標(biāo)準(zhǔn),已知的一些接口協(xié)議存在速度慢、協(xié)議復(fù)雜等問題。SPI總線是能夠克服上述缺點的一種外圍串行總線,其能很好地滿足要求。通過使用Lattice公司的FPGA芯片以及工程開發(fā)軟件,特別是在線邏輯分析儀這一先進的EDA工具,實現(xiàn)了基于FPGA的SPI接口的連接。將FPGA編程的靈活性和SPI總線的易用性結(jié)合,實現(xiàn)了FLASH的存取功能。同時也為同類型接口的芯片應(yīng)用提供了一個原型,為進一步的工程設(shè)計提供了支持。
關(guān)鍵詞: FPGA; FLASH; SPI; 在線邏輯分析
中圖分類號:TN710; TP336 文獻標(biāo)識碼:A
文章編號:1004-373X(2010)14-0102-03
Implementation of SPI Bus Interface Based on FPGA
WANG Jue-wen1, JIN Wei-xin2, CAI Yi-bing2, YAN Li-ping2
(1. PLA University of Science and Technology, Nanjing 210007, China; 2. CEDSEC, Beijing 100141, China)
Abstract: There are many standards in the scope of interfaces for peripheral electronic devices in the field of modern EDA. Some known interface protocols perform an unsatisfactory role with their low speed or complexity. SPI bus is a popular peripheral serial bus which can satisfy the practical demand. By using Lattice FPGA and its EDA software, especially the on-line logic analyzer which is an advanced EDA tool, the connection of SPI bus interface based on FPGA was implemented. The access function of FLASH was realized in combination with the flexibility of FPGA programming and the adaptability of SPI bus. At the same time, it can be taken as a prototype, which can be used in a further profound exploitation in EDA projection.
Keywords: FPGA; FLASH; SPI; on-line logic analysis
0 引 言
串行接口已成為當(dāng)前傳輸接口的發(fā)展趨勢,原因在于串行的高速率傳輸性能和較簡單的線路連接。在已知的外圍器件連接端口中,有USB,wishbone和并行端口。其中SPI接口總線基于串行傳輸?shù)乃枷耄呀?jīng)制定成為標(biāo)準(zhǔn),成為常用的外圍器件連接方式。針對FLASH這種常用的外圍存儲器件,有多種接口可供選擇,然而具有SPI接口的FLASH芯片硬件連接方便,通過FPGA編程可以便捷地實現(xiàn)FLASH的存取功能。因此基于FPGA的具有SPI總線接口的FLASH功能實現(xiàn)為工程設(shè)計提供了一種原型,為進一步的工程開發(fā)奠定了基礎(chǔ)。
1 SPI總線介紹
1.1 SPI總線簡介
同步外設(shè)接口(serial peripheral interface,SPI)是由摩托羅拉公司開發(fā)的全雙工同步串行總線。SPI是一種串行同步通信協(xié)議,由1個主設(shè)備和1個或多個從設(shè)備組成,主設(shè)備啟動一個與從設(shè)備的同步通信,從而完成數(shù)據(jù)的交換。
1.2 SPI總線接口及時序
SPI接口由SDI(串行數(shù)據(jù)輸入),SDO(串行數(shù)據(jù)輸出),SCK(串行移位時鐘),CS(從使能信號)四種信號構(gòu)成,CS決定了惟一的與主設(shè)備通信的從設(shè)備,如沒有CS信號,則只能存在一個從設(shè)備,主設(shè)備通過產(chǎn)生移位時鐘來發(fā)起通信。通信時,數(shù)據(jù)由SDO輸出,SDI 輸入,數(shù)據(jù)在時鐘的上升沿或下降沿從SDO輸出,在緊接著的下降沿或上升沿由SDI讀入,這樣經(jīng)過8/16次時鐘改變,完成8/16位數(shù)據(jù)的傳輸。
在SPI傳輸中,數(shù)據(jù)是同步進行發(fā)送和接收的。數(shù)據(jù)傳輸?shù)臅r鐘基于來自主處理器的時鐘脈沖,摩托羅拉沒有定義任何通用SPI時鐘規(guī)范。然而,最常用的時鐘設(shè)置基于時鐘極性(CPOL)和時鐘相位(CPHA)兩個參數(shù)。CPOL定義SPI串行時鐘的活動狀態(tài),而CPHA定義相對于數(shù)據(jù)位的時鐘相位。CPOL和CPHA的設(shè)置決定了數(shù)據(jù)取樣的時鐘沿。
SPI模塊為了與外設(shè)進行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時鐘極性和相位可以進行配置,時鐘極性(CPOL)對傳輸協(xié)議沒有大的影響。如果CPOL=0,串行同步時鐘的空閑狀態(tài)為低電平;如果CPOL=1,串行同步時鐘的空閑狀態(tài)為高電平。時鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時鐘的第一個跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)時鐘相位與極性應(yīng)該一致。SPI接口時序如圖1所示。
圖1 SPI接口時序圖
2 基于FPGA的SPI接口設(shè)計
SPI接口適用于主芯片與從芯片的連接,在一個FPGA系統(tǒng)中,充當(dāng)主芯片的為FPGA可編程芯片,而FLASH芯片作為外圍從芯片通過SPI接口連接至FPGA芯片。該系統(tǒng)選用Lattice公司的FPGA芯片,該公司的產(chǎn)品線齊全,其中ECP2M系列芯片功能全面,開發(fā)成本低廉。ECP2M系列芯片支持SPI接口,通過硬件電路的簡單設(shè)計即可完成SPI接口的物理連接,進一步利用Lattice的工程開發(fā)EDA軟件進行FPGA編程,實現(xiàn)SPI接口控制。對接口的設(shè)計采用RAM作為讀/寫緩沖,完成主程序和FLASH之間的數(shù)據(jù)交換,各模塊結(jié)構(gòu)示意圖如圖2所示。
圖2 模塊結(jié)構(gòu)示意圖
圖2中ram wr寫端口數(shù)據(jù)寬度設(shè)置為32位,地址深度設(shè)為128位;讀端口為1位位寬,這是由SPI端口的串行性決定的;ram rd讀端口與ram wr寫端口相對應(yīng)。RAM模塊如圖3所示。
3 SPI接口實現(xiàn)及FLASH功能驗證
3.1 M25P64串行FLASH芯片介紹
M25P64串行芯片由STMicro公司生產(chǎn),它具有64 Mb容量,最高時鐘頻率可達50 MHz同時采用SPI總線接口。該FLASH芯片的存儲空間劃分為128區(qū),每區(qū)為65 536 B[1]。在芯片中,其中D為數(shù)據(jù)串行輸入端;C為時鐘輸入;S 為低電平有效片選信號;W 和HOLD 分別為寫保護和暫停保持輸入,Q為串行輸出端。該芯片的指令豐富,功能完備,常用的指令如:讀/寫?yīng)鼓堋⒆x/寫狀態(tài)寄存器、讀數(shù)據(jù)、頁編程以及區(qū)塊擦除等。
圖3 RAM模塊示意圖
該芯片由一個微控制器控制,SPI接口有種工作模式分別為CPOL=0,CPHA=0和CPOL=1,CPHA=1,兩者區(qū)別為在SPI主端不傳數(shù)據(jù)時,時鐘的電平前者為0,后者為1。在這里采用CPOL=0,CPHA=0模式。
3.2 工程環(huán)境設(shè)置及SPI接口設(shè)計
Lattice公司的FPGA工程開發(fā)EDA軟件名為ispLEVER,其7.2版本為較新版本。該版本集合了IPExpress,Reveal Logic Analyzer等實用工具,可用于添加Lattice公司開發(fā)的IP核以及在線邏輯仿真等。ispLEVER 7.2的默認(rèn)仿真工具為Active-HDL仿真器,由于需要采用ModelSim仿真器,因此安裝ModleSim 6.2b版本。對仿真軟件成功安裝后,加入pcsc mti work,pcsc mti work revA,ecp2m vlg和pmi work四個仿真庫并進行編譯。編譯完成后啟動ispLEVER 7.2,在“options”菜單中修改環(huán)境變量和默認(rèn)仿真工具,使得ModelSim連接圖標(biāo)出現(xiàn)在工具欄中成為工程的仿真工具。
進入ispLEVER 7.2的編輯界面,開始建立工程,首先選擇器件型號,這里采用LatticeECP2M系列中的LFE2M50E型號芯片,并選擇封裝類型為FPGABGA672,速度級別為-5。器件選定后,建立FLASH control工程文件和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)當(dā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 在線邏輯分析儀截圖(一)
從圖4可看出,在時鐘C的8個有效周期寫入寫使能指令,寫使能指令通過D信號線串行進入FLASH芯片,指令的寫入過程應(yīng)保證S信號低電平,8個周期的指令輸入完畢后S回復(fù)為高電平。在SPI總線主端的RAM控制信號由狀態(tài)機控制,instructions為8位的寄存器,用于存儲指令;RAM1 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)。
圖5 在線邏輯分析儀截圖(二)
4 結(jié) 語
SPI總線是當(dāng)前流行的串行接口的一種,它滿足工程設(shè)計的要求,使開發(fā)人員能夠簡單迅速的完成設(shè)計工作,實現(xiàn)功能要求。將它與FPGA編程結(jié)合,利用FPGA的靈活性,使電子設(shè)計能夠在很短的周期內(nèi)完成,符合當(dāng)今電子設(shè)計的要求。本文通過實現(xiàn)帶有SPI總線接口的FLASH芯片功能,驗證了基于FPGA設(shè)計的SPI接口的正確,實現(xiàn)了FLASH芯片的讀/寫功能。
參考文獻
[1]ST Microelectronics. M25P64 data sheet[R]. [ 2005-05-11] . http://www.ALLDATASHEET.com. 2005.
[2]MICHAEL Ciletti D.Verilog HDL高級數(shù)字設(shè)計[M].北京:電子工業(yè)出版社,2005.
[3]卓興旺.基于Verilog HDL的數(shù)字系統(tǒng)應(yīng)用設(shè)計[M].北京:國防工業(yè)出版社,2007.
[4]BERGERON Janick. Writing testbenches: functional verification of HDL models[M]. [ S.l.] : Kluwer Academic Publishers. 2003.
[5]PALNITKAR Samir.Verilog HDL數(shù)字設(shè)計與綜合[M].2版.北京:電子工業(yè)出版社,2004.
[6]IEEE. IEEE STD164-2001: IEEE standard verilog hardware description language[S]. USA: IEEE, 2001.
[7]Xilinx. UART參考設(shè)計[ EB/OL] .[ 2006-11-21] . http://www.fpga.com.cn/freeip.htm.