當(dāng)前位置:首頁 > 電源 > 數(shù)字電源
[導(dǎo)讀]傳統(tǒng)的Flash讀寫是通過CPU軟件編程實(shí)現(xiàn),其讀寫速度較慢,且占用CPU資源,另外由于Flash芯片本身功能指令較多,使得對芯片進(jìn)行直接操作變得非常困難。

本文提出一個(gè)基于FPGASPI Flash讀寫硬件實(shí)現(xiàn)方案,該方案利用硬件對SPI Flash進(jìn)行控制,能夠非常方便地完成Flash的讀寫、擦除、刷新及預(yù)充電等操作,同時(shí)編寫的SPI Flash控制器IP核能夠進(jìn)行移植和復(fù)用,作為SOC芯片的功能模塊。SPI Flash控制器采用VHDL語言進(jìn)行編寫,在Modelsim 6.5g上通過功能仿真,并且在XUPV5-LX110TFPGA開發(fā)板上通過硬件測試,實(shí)現(xiàn)結(jié)果表明方案的可行性。

1.引言

Flash是一種具有電可擦除的可編程ROM,按接口可以分為兩大類:并行Flash和串行Flash.并行Flash存儲(chǔ)量大,速度快;而串行Flash存儲(chǔ)量相對較小,但體積小,連線簡單,可減小電路面積,節(jié)約成本。SPI Flash是內(nèi)嵌SPI總線接口的串行Flash,它比起傳統(tǒng)的并行總線接口Flash,節(jié)省了很多的I/O口資源,從而為系統(tǒng)功能的擴(kuò)展提供了更多的可能。

隨著SPI Flash越來越多地應(yīng)用到各種領(lǐng)域,其傳統(tǒng)讀寫方式中讀寫速度不夠快、占用CPU資源以及操作不夠簡便靈活的缺點(diǎn)表現(xiàn)得更為突出,如何解決以上問題成為大家關(guān)注的焦點(diǎn)。利用硬件對SPI Flash進(jìn)行控制,能夠非常方便地完成Flash的讀寫、擦除、刷新及預(yù)充電等操作,且不占用CPU資源,同時(shí)編寫的SPI Flash控制器IP核能夠進(jìn)行移植和復(fù)用,作為SOC芯片的功能模塊。因此提出了一種基于FPGA的SPI Flash控制器的設(shè)計(jì)方案,并用VHDL實(shí)現(xiàn)。編寫的SPI Flash控制器IP核在Modelsim 6.5g上進(jìn)行了功能仿真,在FPGA開發(fā)板上進(jìn)行了測試驗(yàn)證,可作為功能模塊應(yīng)用于SOC芯片設(shè)計(jì)。

2.SPI Flash控制器設(shè)計(jì)

2.1 SPI Flash芯片選擇

本方案SPI Flash芯片采用GigaDevice公司的GD25Q系列,GD25Q系列SPI Flash包括4Mbit的GD25Q40,2M bit的GD25Q20,1M bit的GD25Q10以及521K bit的GD25Q512,這里將采用512K bit的GD25Q512.圖1為GD25Q系列SPIFlash(SOP8封裝)引腳排列圖。其中VCC和VSS分別為電源和地,其他6個(gè)引腳均可直接與F P G A的I / O引腳相連;寫保護(hù)引腳W P #和HOLD#掛起引腳用于數(shù)據(jù)保護(hù)和空閑模式的低功耗運(yùn)行,若不使用可將其置為高電平;CS#為片選信號,低電平時(shí)表示器件被選中,反之工作在待機(jī)狀態(tài);SO為串行數(shù)據(jù)輸出,數(shù)據(jù)在時(shí)鐘的下降沿輸出到Flash器件;SI為串行數(shù)據(jù)輸入,包括傳輸指令、地址和輸入數(shù)據(jù),輸入信號在時(shí)鐘的上升沿鎖存到Flash器件中。SCLK為串行時(shí)鐘,由FPGA提供。

 

 

2.2 SPI Flash指令操作

GDQ25系列SPI Flash指令較多,所有指令都是8位,操作時(shí)先將片選信號CS#拉低選中器件,然后輸入8位操作指令字節(jié),串行數(shù)據(jù)在片選信號CS#拉低后的第一個(gè)時(shí)鐘的上升沿被采樣,SPI Flash啟動(dòng)內(nèi)部控制邏輯,自動(dòng)完成相應(yīng)操作。有些操作在輸入指令后需要輸入地址字節(jié)和偽字節(jié),最后操作完成后再將片選信號拉高。

2.3 SPI Flash控制器設(shè)計(jì)原理

SPI Flash控制器必須能夠產(chǎn)生SPI Flash芯片執(zhí)行各操作(如寫使能、刷新、預(yù)充電、讀芯片ID、讀取狀態(tài)寄存器、寫狀態(tài)寄存器、扇區(qū)擦除、塊擦除、整體擦除、讀取數(shù)據(jù)、快速讀取數(shù)據(jù)、頁面編程)時(shí)所需指令時(shí)序,用戶只需要輸入對應(yīng)操作的8位指令值及對應(yīng)的操作地址值,SPI接口與SPI Flash的數(shù)據(jù)傳輸將由SPI Flash控制器內(nèi)部狀態(tài)機(jī)控制執(zhí)行。

3.SPI Flash控制器實(shí)現(xiàn)

3.1 SPI Flash測試系統(tǒng)

本文設(shè)計(jì)的SPI Flash測試系統(tǒng)由用戶端、FPGA和SPI Flash構(gòu)成,系統(tǒng)框圖如圖2所示,其中FPGA選用Xilinx公司Virtex5系列芯片(Virtex-5 XC5VLX110T),SPI Flash芯片采用GigaDevice公司的GD25Q系列512K bit容量的GD25Q512.

 

 

SPI Flash控制器由VHDL編寫,主要為SPIFlash芯片提供串行時(shí)鐘,將從用戶端輸入的數(shù)據(jù)(包括指令字節(jié)、地址字節(jié)和數(shù)據(jù)字節(jié))寄存起來并在串行時(shí)鐘的控制下通過spi_dout信號線逐位輸出到SPI Flash芯片中,同樣將從SPI Flash芯片中讀出的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)送給用戶端。此外,SPI Flash控制器還必須在用戶通過sel、addr以及wr組合發(fā)出的操作命令下產(chǎn)生一系列的控制信號,并在這些控制信號的作用下根據(jù)狀態(tài)機(jī)的轉(zhuǎn)換方向進(jìn)行動(dòng)作并且輸出相應(yīng)的結(jié)果。

3.2 SPI Flash控制器控制狀態(tài)機(jī)

由于SPI Flash操作命令較多,并且很多操作命令之間存在相同的操作步驟,所以利用狀態(tài)機(jī)進(jìn)行控制能夠準(zhǔn)確有條理地完成對SPI Flash的操作。分析GDQ25系列SPI Flashdatasheet,可將SPI Flash控制器的工作狀態(tài)劃分為空閑狀態(tài)(IDLE)、傳輸指令狀態(tài)(TxCMD)、傳輸高字節(jié)地址狀態(tài)(TxADD_H)、傳輸中間字節(jié)地址狀態(tài)(TxADD_M)、傳輸?shù)妥止?jié)地址狀態(tài)(TxADD_L)、傳輸偽字節(jié)狀態(tài)(TxDummy)、傳輸數(shù)據(jù)狀態(tài)(TxDATA)和接收數(shù)據(jù)狀態(tài)(RxDATA)。除此以外,由于所有接收到的指令值都寄存在指令寄存器內(nèi),當(dāng)一條指令執(zhí)行完畢時(shí)需要將指令寄存器清空,以便接收下一條用戶指令,所以設(shè)定一個(gè)清除指令狀態(tài)(CLR_CMD)作為每一操作完成后的收尾狀態(tài)。當(dāng)狀態(tài)機(jī)進(jìn)入CLR_CMD狀態(tài)后,表示當(dāng)前操作已經(jīng)完成,正將指令寄存器指令值清空;當(dāng)狀態(tài)機(jī)進(jìn)入IDLE狀態(tài)時(shí),用戶可輸入下一操作指令,對SPI Flash進(jìn)行下一操作。考慮到SPI Flash的響應(yīng)時(shí)間,在以上工作狀態(tài)中間插入了一些等待狀態(tài)(WAIT)。

4.SPI Flash控制器驗(yàn)證

SPI Flash控制器IP核在Modelsim 6.5g上能夠通過功能仿真,下面分析一下SPI Flash頁面編程操作及數(shù)據(jù)讀取操作的功能仿真。

4.1 頁面編程操作

頁面編程操作仿真波形如圖3所示,圖中截取輸入00H和01H數(shù)據(jù)的波形,最多可連續(xù)輸入一頁256字節(jié)數(shù)據(jù)。當(dāng)用戶輸入頁面編程指令02H,狀態(tài)機(jī)進(jìn)入txcmd狀態(tài),頁編程指令02H通過spi_dout傳輸給SPI Flash.當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),指令傳輸完畢,狀態(tài)機(jī)在等待后進(jìn)入txadd_h狀態(tài),同時(shí)tx_bit_cnt被清零,需寫入數(shù)據(jù)的對應(yīng)存儲(chǔ)空間的起始地址高字節(jié)值89H被傳輸。當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),高字節(jié)地址值89H被傳輸完畢,狀態(tài)機(jī)在等待后進(jìn)入txadd_m狀態(tài),同時(shí)tx_bit_cnt被清零,同上,地址中間字節(jié)67H和45H被傳輸。當(dāng)add_h、add_m和add_l寄存器的值依次傳輸完畢,狀態(tài)機(jī)進(jìn)入wait6狀態(tài),等待用戶輸入需寫入SPI Flash的數(shù)據(jù)。當(dāng)用戶設(shè)定{sel,addr,wr}為10001b,狀態(tài)機(jī)進(jìn)入txdata狀態(tài),同時(shí)tx_new_data被置高,表示要傳輸新寫入的數(shù)據(jù)。在txdata狀態(tài)下,控制器將傳輸寫入的第1字節(jié)數(shù)據(jù)00H,當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),第1字節(jié)數(shù)據(jù)00H被傳輸完畢,tx_new_data被拉低,tx_empty被拉高,表示當(dāng)前沒有可傳輸?shù)臄?shù)據(jù),狀態(tài)機(jī)進(jìn)入wait6狀態(tài),等待新數(shù)據(jù)寫入。直到用戶再次設(shè)定{sel,addr,wr}為10001b,狀態(tài)機(jī)再次進(jìn)入txdata狀態(tài),同時(shí)tx_new_data被置高,表示寫入的第2字節(jié)數(shù)據(jù)01H將要傳輸。當(dāng)tx_bit_cnt計(jì)數(shù)到8,第2字節(jié)數(shù)據(jù)傳輸完畢,tx_new_data被拉低,tx_empty被拉高,狀態(tài)機(jī)進(jìn)入wait6狀態(tài)。由于GDQ25系列SPI Flash頁面編程一次最多可寫入256字節(jié)數(shù)據(jù),所以用戶在寫入數(shù)據(jù)時(shí),應(yīng)注意最多寫入256次數(shù)據(jù),否則超過的數(shù)據(jù)將覆蓋開始的數(shù)據(jù)。當(dāng)狀態(tài)機(jī)處于wait6狀態(tài)而用戶想結(jié)束頁面編程時(shí),可向控制器輸入NOP指令強(qiáng)制結(jié)束當(dāng)前頁面編程操作。狀態(tài)機(jī)在接收到NOP指令后將進(jìn)入clr_cmd狀態(tài)和idle空閑態(tài),等待下一條指令的到來。當(dāng)頁面編程操作還沒結(jié)束時(shí),busy將一直被置高。

 

 

4.2 數(shù)據(jù)讀取操作

讀數(shù)據(jù)指令仿真波形如圖4所示。當(dāng)用戶輸入讀數(shù)據(jù)指令03H,狀態(tài)機(jī)進(jìn)入txcmd狀態(tài),讀數(shù)據(jù)指令通過spi_dout傳輸給SPI Flash.

 

 

當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),指令傳輸完畢,狀態(tài)機(jī)等待后進(jìn)入txadd_h狀態(tài),傳輸要讀出數(shù)據(jù)所在存儲(chǔ)空間起始地址的高字節(jié),同時(shí)tx_bit_cnt清零,以為下一個(gè)傳輸作準(zhǔn)備。地址高字節(jié)寄存器add_h數(shù)值56H通過spi_dout傳輸給SPI Flash,當(dāng)tx_bit_cnt計(jì)數(shù)到8時(shí),狀態(tài)機(jī)進(jìn)入txadd_m狀態(tài),傳輸?shù)刂分虚g字節(jié),同理,控制器在狀態(tài)txadd_m和狀態(tài)txadd_l狀態(tài)下完成傳輸?shù)刂分虚g字節(jié)34H和地址低字節(jié)12H.當(dāng)24位地址傳輸完畢,狀態(tài)機(jī)在等待后進(jìn)入rxdata狀態(tài),接收從spi_din輸入的第一字節(jié)數(shù)據(jù)01H.當(dāng)rx_bit_cnt計(jì)數(shù)到8時(shí),控制器完成第1字節(jié)數(shù)據(jù)的接收,rx_data顯示為01H,狀態(tài)機(jī)狀態(tài)轉(zhuǎn)換為wait8狀態(tài),等待用戶設(shè)定{sel,addr,wr}以接收第2字節(jié)。當(dāng)用戶設(shè)定{sel,addr,wr}為10000b時(shí),狀態(tài)機(jī)再次進(jìn)入rxdata狀態(tài),接收從spi_din輸入的第2字節(jié)數(shù)據(jù)02H,同時(shí)rx_ready被拉低,rx_empty被拉高,rd_data被拉高,表示將要讀出新輸入的數(shù)據(jù)。當(dāng)rx_bit_cnt計(jì)數(shù)到8時(shí),第2字節(jié)數(shù)據(jù)接收完畢,rx_ready被拉高,rx_empty為低,rd_data顯示新接收的字節(jié)數(shù)據(jù)02H,狀態(tài)機(jī)經(jīng)等待后重新進(jìn)入wait8狀態(tài),等待用戶再次設(shè)定{sel,addr,wr}值,接收第3字節(jié)數(shù)據(jù)值,同理,可讀出SPI Flash內(nèi)部所有數(shù)據(jù)。

當(dāng)狀態(tài)機(jī)處于wait8狀態(tài)而用戶想退出讀數(shù)據(jù)操作時(shí),可向控制器輸入NOP指令強(qiáng)制結(jié)束當(dāng)前讀數(shù)據(jù)操作。狀態(tài)機(jī)在接收到NOP指令后將進(jìn)入clr_cmd狀態(tài)和idle空閑態(tài),等待下一條指令的到來。當(dāng)讀數(shù)據(jù)操作還沒結(jié)束時(shí),busy將一直置高。

5.結(jié)語

目前SPI Flash控制器IP核已經(jīng)在XUPV5-LX110T FPGA開發(fā)板上通過硬件測試,并且將作為功能模塊應(yīng)用于SOC芯片設(shè)計(jì)。實(shí)踐證明,基于FPGA的SPI Flash控制器能夠簡化SPI Flash讀寫操作流程,從而提高SPI Flash的讀寫速度,而操作時(shí)不占用CPU資源的特點(diǎn),將使SPIFlash的讀寫更有優(yōu)勢。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉