淺談FPGA的SPI總線接口的實(shí)現(xiàn)
出處:王玨文 金偉信 蔡一兵 顏莉萍 發(fā)布于:2011-08-27 18:48:32
引言
串行接口已成為當(dāng)前傳輸接口的發(fā)展趨勢(shì),原因在于串行的高速率傳輸性能和較簡單的線路連接。在已知的外圍器件連接端口中,有USB,wishbone和并行端口。其中SPI接口總線基于串行傳輸?shù)乃枷?,已?jīng)制定成為標(biāo)準(zhǔn),成為常用的外圍器件連接方式。針對(duì)FLASH這種常用的外圍存儲(chǔ)器件,有多種接口可供選擇,然而具有SPI接口的FLASH芯片硬件連接方便,通過FPGA編程可以便捷地實(shí)現(xiàn)FLASH的存取功能。因此基于FPGA的具有SPI總線接口的FLASH功能實(shí)現(xiàn)為工程設(shè)計(jì)提供了一種原型,為進(jìn)一步的工程開發(fā)奠定了基礎(chǔ)。
1 SPI總線介紹
1.1 SPI總線簡介
SPI目前有3種規(guī)格SPI的處理流程大同小異,以目前使用多的SPI-4為例來說明SPI的原理。它在發(fā)送接口和接收接口都有各自的數(shù)據(jù)通道和流控狀態(tài)信息通道,其數(shù)據(jù)通道和流控狀態(tài)信息通道是獨(dú)立的并且是點(diǎn)對(duì)點(diǎn)通信。數(shù)據(jù)是以包的形式發(fā)送,根據(jù)數(shù)據(jù)包中的內(nèi)嵌地址可支持高達(dá)256個(gè)端口,以下分別說明基本協(xié)議及數(shù)據(jù)通道和流控狀態(tài)信息的處理過程。
同步外設(shè)接口(serial peripheral,interface,SPI)是由摩托羅拉公司開發(fā)的全雙工同步串行總線。SPT是一種串行同步通信協(xié)議,由1個(gè)主設(shè)備和1個(gè)或多個(gè)從設(shè)備組成,主設(shè)備啟動(dòng)一個(gè)與從設(shè)備的同步通信,從而完成數(shù)據(jù)的交換。
1.2 SPI總線接口及時(shí)序
SPI接口由數(shù)字串行接口(serial digital interface)的首字母縮寫。 串行接口是把數(shù)據(jù)字的各個(gè)比特以及相應(yīng)的數(shù)據(jù)通過單一通道順序傳送的接口。由于串行數(shù)字信號(hào)的數(shù)據(jù)率很高,在傳送前必須經(jīng)過處理。SDO(串行數(shù)據(jù)輸出),SCK(串行移位時(shí)鐘),CS(從使能信號(hào))四種信號(hào)構(gòu)成,CS決定了惟一的與主設(shè)備通信的從設(shè)備,如沒有CS信號(hào),則只能存在一個(gè)從設(shè)備,主設(shè)備通過產(chǎn)生移位時(shí)鐘來發(fā)起通信。通信時(shí),數(shù)據(jù)由SDO輸出,SDI輸入,數(shù)據(jù)在時(shí)鐘的上升沿或下降沿從SDO輸出,在緊接著的下降沿或上升沿由SDI讀入,這樣經(jīng)過8/16次時(shí)鐘改變,完成8/16位數(shù)據(jù)的傳輸。
在SPI傳輸中,數(shù)據(jù)是同步進(jìn)行發(fā)送和接收的。數(shù)據(jù)傳輸?shù)臅r(shí)鐘基于來自主處理器的時(shí)鐘脈沖,摩托羅拉沒有定義任何通用SPI時(shí)鐘規(guī)范。然而,常用的時(shí)鐘設(shè)置基于時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)兩個(gè)參數(shù);CPOL定義SPI串行時(shí)鐘的活動(dòng)狀態(tài),而CPHA定義相對(duì)于數(shù)據(jù)位的時(shí)鐘相位。
SPI模塊為了與外設(shè)進(jìn)行數(shù)據(jù)交換,根據(jù)外設(shè)工作要求,其輸出串行同步時(shí)鐘極性和相位可以進(jìn)行配置,時(shí)鐘極性(CPOL)對(duì)傳輸協(xié)議沒有大的影響。如果CPOL=0,串行同步時(shí)鐘的空間狀態(tài)為低電平;如果CPOL=1,串行同步時(shí)鐘的空間狀態(tài)為高電平。時(shí)鐘相位(CPHA)能夠配置用于選擇兩種不同的傳輸協(xié)議之一進(jìn)行數(shù)據(jù)傳輸。如果CPHA=0,在串行同步時(shí)鐘的個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣;如果CPHA=1,在串行同步時(shí)鐘的第二個(gè)跳變沿(上升或下降)數(shù)據(jù)被采樣。SPI主模塊和與之通信的外設(shè)時(shí)鐘相位與極性應(yīng)該一致。SPI接口時(shí)序如圖1所示。

2 基于FPGA的SPI接口設(shè)計(jì)
FPGA即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB輸出輸入模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。 現(xiàn)場(chǎng)可編程門陣列(FPGA)是可編程器件。與傳統(tǒng)邏輯電路和門陣列(如PAL,GAL及CPLD器件)相比,F(xiàn)PGA具有不同的結(jié)構(gòu),F(xiàn)PGA利用小型查找表(16×1RAM)來實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了即可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。
SPI接口適用于主芯片與從芯片的連接,在一個(gè)FPGA系統(tǒng)中,充當(dāng)主芯片的為FPGA可編程芯片,而FLASH芯片作為外圍從芯片通過SPI接口連接至FPGA芯片。該系統(tǒng)選用Lattice公司的FPGA芯片,該公司的產(chǎn)品線齊全,其中ECP2M系列芯片功能全面,開發(fā)成本低廉。ECP2M系列芯片支持SPI接口,通過硬件電路的簡單設(shè)計(jì)即可完成SPI接口的物理連接,進(jìn)一步利用Lattice的工程開發(fā)EDA軟件進(jìn)行FPGA編程,實(shí)現(xiàn)SPI接口控制。目前進(jìn)入我國并具有廣泛影響的EDA軟件有:multiSIM7(原EWB的版本)、PSPICE、OrCAD、PCAD、Protel、Viewlogic、Mentor、Graphics、Synopsys、LSIIogic、Cadence、MicroSim等等。這些工具都有較強(qiáng)的功能,一般可用于幾個(gè)方面,例如很多軟件都可以進(jìn)行電路設(shè)計(jì)與仿真,同進(jìn)還可以進(jìn)行PCB自動(dòng)布局布線,可輸出多種網(wǎng)表文件與第三方軟件接口。對(duì)接口的設(shè)計(jì)采用RAM作為讀/寫緩沖,完成主程序和FLASH之間的數(shù)據(jù)交換,各模塊結(jié)構(gòu)示意圖如圖2所示。

圖2中ram_wr寫端口數(shù)據(jù)寬度設(shè)置為32位,地址深度設(shè)為128位;讀端口為1位位寬,這是由SPI端口的串行性決定的;ram_rd讀端口與ram _wr寫端口相對(duì)應(yīng)。RAM模塊如圖3所示。
3 SPI接口實(shí)現(xiàn)及FLASH功能驗(yàn)證
3.1 M25P64串行FLASH芯片介紹
M25P64串行芯片由STMicro公司生產(chǎn),它具有64 Mb容量,時(shí)鐘頻率可達(dá)50 MHz同時(shí)采用SPI總線接口。該FLASH芯片的存儲(chǔ)空間劃分為128區(qū),每區(qū)為65 536 B。在芯片中,其中D為數(shù)據(jù)串行輸入端;C為時(shí)鐘輸入;
為低電平有效片選信號(hào);
和
分別為寫保護(hù)和暫停保持輸入,Q為串行輸出端。該芯片的指令豐富,功能完備,常用的指令如:讀/寫使能、讀/寫狀態(tài)寄存器、讀數(shù)據(jù)、頁編程以及區(qū)塊擦除等。

該芯片由一個(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工程開發(fā)EDA軟件名為ispLEVER,其7.2版本為較新版本。該ispLEVER 是Lattice 公司推出的一套EDA軟件。提供設(shè)計(jì)輸入、HDL綜合、驗(yàn)證、器件適配、布局布線、編程和在系統(tǒng)設(shè)計(jì)調(diào)試。設(shè)計(jì)輸入可采用原理圖、硬件描述語言、混合輸入三種方式。能對(duì)所設(shè)計(jì)的數(shù)字電子系統(tǒng)進(jìn)行功能仿真和時(shí)序仿真。軟件中含有不同的工具,適用于各個(gè)設(shè)計(jì)階段。軟件包含Synplicity公司的"Synplify"、Exemplar Logic公司的"Leonado"綜合工具和Lattice的ispVM器件編程工具。ispLEVER軟件提供給開發(fā)者一個(gè)有力的工具,用于設(shè)計(jì)所有萊迪思可編程邏輯產(chǎn)品。軟件不僅支持所有Lattice公司的ispLSI 、MACH、ispGDX、ispGAL、GAL器件 ,還支持萊迪思新FPGA、FPSC、ispXPGATM和ispXPLDTM產(chǎn)品系列。這使得ispLEVER的用戶能夠設(shè)計(jì)所有Lattice公司的業(yè)界的FPGA、FPSC、CPLD產(chǎn)品而不必學(xué)習(xí)新的設(shè)計(jì)工具。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è)仿真庫并進(jìn)行編譯。編譯完成后啟動(dòng)ispLEVER 7.2,在"options"菜單中修改環(huán)境變量和默認(rèn)仿真工具,使得ModelSim連接圖標(biāo)出現(xiàn)在工具欄中成為工程的仿真工具。
進(jìn)入ispLEVER 7.2的編輯界面,開始建立工程,首先選擇器件型號(hào),這里采用LatticeECP2M系列中的LFE2MSOE型號(hào)芯片,并選擇封裝類型為FPGAB-GA672,速度級(jí)別為-5。器件選定后,建立FLASH_contro]工程文件和testbench測(cè)試文件,同時(shí)用IP Express生成讀/寫RAM模塊。
在主程序中編寫RAM控制段和SPI接口控制程序段,用狀態(tài)機(jī)完成對(duì)RAM的控制,狀態(tài)機(jī)在idle,read,write和config之間跳轉(zhuǎn)。在向FLASH寫數(shù)據(jù)時(shí),應(yīng)先寫入寫使能指令,完成后寫入頁編程指令,隨后寫入地址,寫入數(shù)據(jù);從FLASH讀數(shù)據(jù)的過程大致相同,但應(yīng)首先寫入讀使能指令,然后寫入讀數(shù)據(jù)指令。
3.3 SPI接口功能驗(yàn)證
在線邏輯分析儀(reveal logic analyzer)是較為先進(jìn)的EDA工具,它能提類似于功能仿真的波形示意圖,這些波形是通過在FPGA芯片運(yùn)行過程中實(shí)時(shí)抓取出來的。邏輯分析儀是利用時(shí)鐘從測(cè)試設(shè)備上采集和顯示數(shù)字信號(hào)的儀器,主要作用在于時(shí)序判定。由于邏輯分析儀不像示波器那樣有許多電壓等級(jí),通常只顯示兩個(gè)電壓(邏輯1和0),因此設(shè)定了參考電壓后,邏輯分析儀將被測(cè)信號(hào)通過比較器進(jìn)行判定,高于參考電壓者為High,低于參考電壓者為Low,在High與 Low之間形成數(shù)字波形。它真實(shí)地再現(xiàn)了FPGA芯片內(nèi)部的動(dòng)態(tài)信號(hào)狀況,使工程開發(fā)人員能直觀的發(fā)現(xiàn)問題,修正邏輯。仿真綜合通過后,將程序至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è)有效周期寫入寫使能指令,寫使能指令通過D信號(hào)線串行進(jìn)入FLASH芯片,指令的寫入過程應(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é)語
SPI總線是當(dāng)前流行的串行接口的一種,它滿足工程設(shè)計(jì)的要求,使開發(fā)人員能夠簡單迅速的完成設(shè)計(jì)工作,實(shí)現(xiàn)功能要求。將它與FPGA編程結(jié)合,利用FPGA的靈活性,使電子設(shè)計(jì)能夠在很短的周期內(nèi)完成,符合當(dāng)今電子設(shè)計(jì)的要求。本文通過實(shí)現(xiàn)帶有SPI總線接口的FLASH芯片功能,驗(yàn)證了基于FPGA設(shè)計(jì)的SPI接口的正確,實(shí)現(xiàn)了FLASH芯片的讀/寫功能。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場(chǎng)網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場(chǎng)網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場(chǎng)網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 什么是氫氧燃料電池,氫氧燃料電池的知識(shí)介紹2025/8/29 16:58:56
- SQL核心知識(shí)點(diǎn)總結(jié)2025/8/11 16:51:36
- 等電位端子箱是什么_等電位端子箱的作用2025/8/1 11:36:41
- 基于PID控制和重復(fù)控制的復(fù)合控制策略2025/7/29 16:58:24
- 什么是樹莓派?一文快速了解樹莓派基礎(chǔ)知識(shí)2025/6/18 16:30:52
- PCB基材選型與性能適配核心技術(shù)規(guī)范
- 過采樣技術(shù)與數(shù)字濾波如何共同提升 ADC 的有效位數(shù)
- MOSFET寄生參數(shù)對(duì)電路性能的影響
- 集成與分立方案:電機(jī)驅(qū)動(dòng)電源設(shè)計(jì)如何選?
- 汽車電子連接器應(yīng)用與要求
- PCB埋盲孔設(shè)計(jì)與工藝適配核心技術(shù)規(guī)范
- 如何提高M(jìn)OSFET在惡劣環(huán)境下的可靠性?
- 繼電器觸點(diǎn)壽命及可靠性分析
- 可重構(gòu)濾波器技術(shù):滿足多標(biāo)準(zhǔn)通信系統(tǒng)的靈活需求
- 磁集成技術(shù)在小型化電源設(shè)計(jì)中的應(yīng)用









