基于A(yíng)T25T1024 FLASH的高速SPI接口設計
3 數據搬運時(shí)間
3.1 主機寫(xiě)片外FLASH的時(shí)間
本設計使用的存儲器AT25F1024緩沖數據寄存器大小2048位,寫(xiě)使能需要8個(gè)串行時(shí)鐘周期,向片外FLASH傳輸2048位數據需要2080個(gè)串行時(shí)鐘周期(包括了32位寫(xiě)指令的傳輸數據),這樣寫(xiě)一次需要時(shí)間為2088個(gè)時(shí)鐘周期,主機將1Mbits的FLASH填滿(mǎn),時(shí)間大約為2088 x50ns(串行時(shí)鐘40/2MHz)×512 (填滿(mǎn)1Mbits需要512次寫(xiě)操作)=53.4ms。讀1Mbits的FLASH需要的時(shí)間約為2080x50x512=53.2ms。圖5所示為主機寫(xiě)片外FLASH時(shí)序圖。

3.2 讀取數據并加載到片內DPRAM的時(shí)間
通過(guò)SO管腳讀取AT25F1024的過(guò)程按下面順序執行,當片選拉低選擇此器件之后,通過(guò)SI線(xiàn)發(fā)送讀指令,后面跟隨要讀的地址(三個(gè)字節地址),指令傳輸完之后,SI線(xiàn)上的任何數據將被忽略。指定地址的數據接著(zhù)被移出到SO線(xiàn)上。如果僅讀取一個(gè)字節,當數據讀出來(lái)之后,CS信號驅動(dòng)為高。讀指令繼續時(shí),字節地址自動(dòng)增加,并且數據不斷被搬運出來(lái)。
AT25F1024緩沖數據寄存器大小2048位,在本設計中,寫(xiě)使能需要32個(gè)串行時(shí)鐘周期,這樣讀取一次需要時(shí)間為2080個(gè)時(shí)鐘周期,將片內DPRAM(DPRAM大小14940字節)填滿(mǎn),時(shí)間大約為2080x50ns(串行時(shí)鐘40/2MHZ)x59(填滿(mǎn)片內DPRAM需要大約59次讀操作)=6.13ms。
4 結束語(yǔ)
本文從應用的實(shí)際需求出發(fā),在FPGA中實(shí)現了對外部FLASH進(jìn)行讀寫(xiě)的高速SPI接口,并已在某型板卡中成功應用。本文重點(diǎn)用有限狀態(tài)機的形式對各部分的工作原理和實(shí)現方法進(jìn)行了描述。在FPGA資源比較緊張,限制管腳的使用數目,對速率又有比較高的需求的情況下,利用此SPI接口進(jìn)行數據的加載或者固化,具有很高的應用價(jià)值。
評論