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

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