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