有客戶認(rèn)為Ti60F100內(nèi)部flash容量比較小,只有16Mb,需要外掛flash.這里我們提供了內(nèi)部flash和外部flash分別操作的方案。
該程序是通過SOC操作4線的外部flash和內(nèi)部flash.程序先經(jīng)過外部flash的擦除,寫入和讀出操作,再經(jīng)過外部flash的擦除,寫入和讀出操作,每次讀出后會進(jìn)行數(shù)據(jù)的比較以判斷寫入和讀出的數(shù)據(jù)是否一致。
硬件方案如下:
由于使用的RSICV是softjtag操作,所以使用了兩個(gè)下載器。在硬件設(shè)計(jì)外外掛一片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的連接方案如下:
內(nèi)flash與外部flash除片選信號分開外,對于4線flash,IO[3:2]是分開的,其余信號都是共用。SOC操作flash時(shí),我們通過一個(gè)GPIO來控制flash的選擇
可能會有人有疑問為什么內(nèi)外flash的管腳能夠共用呢?因?yàn)閮?nèi)部flash的管腳也拉到GPIO上面的原因。如下圖SSL_N,CCK,CDI0,1和都是與內(nèi)部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設(shè)置為4。
FPGA通過GPIO來控制操作內(nèi)部與外部flash,如下圖,通過gpio_0來控制選擇內(nèi)部flash還外部flash,int_flash_select為高,表示選擇內(nèi)部flash,為低則選擇外部flash。
調(diào)試
程序經(jīng)過擦除-->寫入-->讀出操作后,內(nèi)存0x20000的數(shù)據(jù)為下圖所示。
程序經(jīng)過擦除-->寫入-->讀出操作后,內(nèi)存0x20000的數(shù)據(jù)為下圖所示。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1610瀏覽量
147601
發(fā)布評論請先 登錄
相關(guān)推薦
評論