有客戶認為Ti60F100內部flash容量比較小,只有16Mb,需要外掛flash.這里我們提供了內部flash和外部flash分別操作的方案。
該程序是通過SOC操作4線的外部flash和內部flash.程序先經過外部flash的擦除,寫入和讀出操作,再經過外部flash的擦除,寫入和讀出操作,每次讀出后會進行數據的比較以判斷寫入和讀出的數據是否一致。
硬件方案如下:
由于使用的RSICV是softjtag操作,所以使用了兩個下載器。在硬件設計外外掛一片64Mb的flash。
外部flash管腳分配
flash管腳 | FPGA pin | FPGA name | flash管腳 |
Flash_cs_n | A4 | GPIOT_P_01 | CS# |
Flash_cck | J2 | GPIOL_N_01_CCK | SCLK |
Flash_cdi0 | H2 | GPIOL_P_03_CDI0 | SI |
Flash_cdi1 | H1 | GPIOL_N_03_CDI1 | SO |
Flash_cdi2 | G4 | GPIOL_P_05 | WP# |
Flash_cdi3 | G3 | GPIOL_N_05 | HOLD#RESET# |
IO的連接方案如下:
內flash與外部flash除片選信號分開外,對于4線flash,IO[3:2]是分開的,其余信號都是共用。SOC操作flash時,我們通過一個GPIO來控制flash的選擇
可能會有人有疑問為什么內外flash的管腳能夠共用呢?因為內部flash的管腳也拉到GPIO上面的原因。如下圖SSL_N,CCK,CDI0,1和都是與內部flash相通的。
外部flash的data2,data3及cs_n的接口配置。
IO Configure |
ext_flash_cs_n | ext_flash_data2 | Ext_flash_data3 | ||||
Mode | outout | inout | Inout | ||||
I/O Standard | 1.8V lvcmos | 1.8V lvcmos | 1.8V lvcmos | ||||
IN | OUT | OE | IN | OUT | OE | ||
Connection Type | normal | normal | - | - | normal | - | - |
Register Option | register | register | register | register | Register | Register | register |
Clock Pin Name | soc_clk | soc_clk | soc_clk | soc_clk | Soc_clk | soc_clk | Soc_clk |
Pull Option | Weak pullup | None | - | - | None | - | |
Drive Strenght | 12mA | - | 4mA | - | - | 4mA | - |
Enable Fast Slew Rate | - | - | - | - | - | - | - |
IO | GPIOT_P_01 | GPIOL_P_05 | GPIOL_N_05 |
添加SPI flash block,如下圖,使能Enable Register Interface, Read/Write Width設置為4。
FPGA通過GPIO來控制操作內部與外部flash,如下圖,通過gpio_0來控制選擇內部flash還外部flash,int_flash_select為高,表示選擇內部flash,為低則選擇外部flash。
調試
程序經過擦除-->寫入-->讀出操作后,內存0x20000的數據為下圖所示。
程序經過擦除-->寫入-->讀出操作后,內存0x20000的數據為下圖所示。
-
FlaSh
+關注
關注
10文章
1621瀏覽量
147751
發布評論請先 登錄
相關推薦
評論