FPGA實戰(zhàn)開發(fā)技巧(10)
5.5.3 SPI串行Flash配置模式
1.SPI串行配置介紹
串行Flash的特點是占用管腳比較少,作為系統(tǒng)的數(shù)據(jù)存貯非常合適,一般都是采用串行外設(shè)接口(SPI 總線接口)。Flash 存貯器與EEPROM根本不同的特征就是EEPROM可以按字節(jié)進(jìn)行數(shù)據(jù)的改寫,而Flash只能先擦除一個區(qū)間,然后改寫其內(nèi)容。一般情況下,這個擦除區(qū)間叫做扇區(qū)(Sector),也有部分廠家引入了頁面(Page) 的概念。選擇Flash產(chǎn)品時,最小擦除區(qū)間是比較重要的指標(biāo)。在寫入Flash時,如果寫入的數(shù)據(jù)不能正好是一個最小擦除區(qū)間的尺寸,就需要把整個區(qū)間的數(shù)據(jù)全部保存另外一個存貯空間,擦除這個空間,然后才能重新對這個區(qū)間改寫。大多數(shù)Flash工藝更容易實現(xiàn)較大的擦除區(qū)間,因此較小擦除區(qū)間的Flash 其價格一般會稍貴一些。此外,SPI是標(biāo)準(zhǔn)的4線同步串行雙向總線,提供控制器和外設(shè)之間的串行通信數(shù)據(jù)鏈路,廣泛應(yīng)用于嵌入式設(shè)備中。
本文引用地址:http://2s4d.com/article/201710/365610.htm賽靈思公司的新款FPGA都支持SPI接口。SPI總線通過4根信號線來完成主、從之間的通信,典型的SPI系統(tǒng)中常包含一個主設(shè)備以及至少一個從設(shè)備,在FPGA應(yīng)用場合中,FPGA芯片為主設(shè)備,SPI 串行FLASH為從設(shè)備。4個SPI接口信號的名稱和功能如表5-2所示。
表5-2 SPI接口信號列表
一個主芯片和一個從芯片的通信接口如圖5-24所示。FPGA通過SCLK控制雙方通信的時序,在SS_n為低時,F(xiàn)PGA通過MOSI 信號線將數(shù)據(jù)傳送到FLASH,在同一個時鐘周期中,F(xiàn)LASH通過SOMI將數(shù)據(jù)傳輸?shù)紽PGA芯片。無論主、從設(shè)備,數(shù)據(jù)都是在時鐘電平跳轉(zhuǎn)時輸出,并在下一個相反的電平跳轉(zhuǎn)沿,送入另外一個芯片。
圖5-24 SPI接口連接示意圖
其中SCLK信號支持不同的速率,一般常采用20MHz。通過SPI 接口中的CPOL和CPHA這兩個比特定義了4種通信時序。其中,CPOL信號定義了SCLK的空閑狀態(tài),當(dāng)CPOL為低時,SCLK的低電平為空閑狀態(tài),否則其空閑狀態(tài)為高電平;CPHA定義了數(shù)據(jù)有效的上升沿位置,當(dāng)其為低時,數(shù)據(jù)在第1 個電平跳轉(zhuǎn)沿有效,否則數(shù)據(jù)在第2個電平跳轉(zhuǎn)沿有效。其相應(yīng)的時序邏輯如圖5-25所示。
圖5-27 CPHA為低時SPI的總線時序示意圖
圖5-28 CPHA為高時SPI的總線時序示意圖
可以通過增加片選信號SS_n的位寬來支持多個從設(shè)備,SS_n的位寬等于從設(shè)備的個數(shù)。對于某時刻被選中的從設(shè)備和主設(shè)備而言,其讀寫時序邏輯和圖5-29一樣。
圖5-29 多個從芯片的連接電路圖
SPI串行FLASH作為一種新興的高性能非易失性存儲器,其有效讀寫次數(shù)高達(dá)百萬次,不僅引腳數(shù)量少、封裝小、容量大,可以節(jié)約電路板空間,還能夠降低功耗和噪聲。從功能上看,可以用于代碼存儲以及大容量的數(shù)據(jù)和語音存儲,對于以讀為主,僅有少量擦寫和寫入時間的應(yīng)用來說,支持分區(qū)( 多頁) 擦除和頁寫入的串行存儲是最佳方案。
2.SPI串行FLASH配置電路
SPI串行配置模式常用于已采用了SPI串行FLASH PROM的系統(tǒng),在上電時將配置數(shù)據(jù)加載到FPGA中,這一過程只需向SPI串行發(fā)送一個4字節(jié)的指令,其后串行FLASH中的數(shù)據(jù)就像PROM配置方式一樣連續(xù)加載到FPGA中。一旦配置完成,SPI中的額外存儲空間還能用于其它應(yīng)用目的。
1)SPI 配置電路
雖然SPI接口是標(biāo)準(zhǔn)的4線接口,但不同的SPI FLASH PROM芯片采用了不同的指令協(xié)議。FPGA芯片通過變量選擇信號VS[2:0] 來定義FPGA和SPI FLASH的通信方式、FPGA的讀指令以及在有效接收數(shù)據(jù)前插入的冗余比特數(shù)。常用SPI FLASH與FPGA的有效操作配置如表5-3所示,其余的VS[2:0] 配置留有它用。
表5-3 賽靈思芯片所支持的SPI FLASH存儲器以及配置列表
從整體上看來,控制SPI串行閃存比較容易,只需要使用簡單的指令就能完成讀取、擦除、編程、寫使能/禁止以及其它功能。所有的指令都是通過4 個SPI 引腳串行移位輸入的。
圖5-30 支持快讀寫的串行FLASH配置電路示意圖
不同型號的FPGA芯片具有數(shù)目不同的從設(shè)備片選信號,因此所掛的串行芯片數(shù)目也就不一樣。例如:Spartan-3E系列FPGA芯片只有1位SPI從設(shè)備片選信號,因此只能外掛一片SPI串行FLASH芯片。在SPI串行FLASH配置模式下,M[2:0]=3’b001。FPGA 上電后,通過外部SPI 串行FLASH PROM完成配置,配置時鐘信號由FPGA芯片提供時鐘信號,支持兩類業(yè)界常用的FLASH。
圖5-30給出了Spartan3E系列FPGA支持0X0B快速讀寫指令的STMicro 25系列PROM的典型配置電路。其中的Flash芯片需要Flash編程器來加載配置數(shù)據(jù);單片的FPGA芯片構(gòu)成了完整的JTAG鏈,僅用來測試芯片狀態(tài),以及支持JTAG在線調(diào)試模式,與SPI配置模式?jīng)]有關(guān)系。
從中可以看出,SPI Flash容量大,適合于大規(guī)模設(shè)計場合。但由于SPI配置需要專門的Flash編程器,且操作起來比較麻煩,不適合在產(chǎn)品研發(fā)階段調(diào)試FPGA芯片,因此一般還會添加JTAG鏈專門用于在線調(diào)試。
圖5-31 Atmel SPI串行FLASH配置電路示意圖
圖5-31給出了Spartan3E系列FPGA支持SPI協(xié)議的Atmel公司“C”、“D”系列串行Flash芯片的典型配置電路。這兩個系列的FLASH芯片可以工作在很低溫度,具有短的時鐘建立時間。同樣,單片的FPGA芯片構(gòu)成了完整的JTAG鏈,僅用來測試芯片狀態(tài),以及支持JTAG在線調(diào)試模式,與SPI 配置模式?jīng)]有關(guān)系。
表5-3給出了SPI配置接口的連線說明,每個SPI Flash PROM采用的名字略有不同,SPI Flash PROM的寫保護(hù)信號和保持控制信號在FPGA配置階段是不用的。其中HOLD管腳在配置階段必須為高,為了編程Flash存儲器,寫保護(hù)信號必須為高。
評論