可在線升級的FPGA并行配置方法的實現(xiàn)
2.2 SST89V564RD微處理器片內 Flash應用劃分
SST89V564RD微處理器片內 Flash兩塊( 64K+8K)中, Block1分成 64個扇區(qū),每個扇區(qū)包括 128個字節(jié),總共 8K字節(jié);Block0分成 512個扇區(qū),每個扇區(qū)包括 128個字節(jié),總共 64K字節(jié)[2]。
微處理器兩塊 Flash地址應用劃分為: Block0中,低地址段 0x0000~0x1FFF存放對 Block1進行擦寫的 IAP程序,高地址段 0x2000~0xFFFF存放 FPGA配置數(shù)據。 Block1的所有空間用來存放上電啟動時對 FPGA進行配置以及配置完后的 IAP操作程序。微處理器默認下從 Block1啟動。當程序運行在 IAP命令狀態(tài)時,可以通過設置特功能寄存器 SFCF使程序運行在 Block0或 Block1,來對另一 Flash塊進行擦寫或升級。
由于 Block0和 Block1的低 8K字節(jié)的地址相同,因此在編程應用程序到 Flash中時,編程器將 Block1的地址定義在 0x10000~0x11FFF地址段,在編譯程序時需要將 Block1的程序定位在 0x10000~0x11FFF之間才能正確燒寫。
3.軟件設計
微處理器狀態(tài)流程如圖 3所示,在上電啟動時,微處理器從 Block1啟動,讀取 Block1中 0x2000開始的配置數(shù)據,完成對 FPGA的配置。配置完成以后,微處理器處于 IAP狀態(tài),既可以通過串口 IAP指令來對 Block0高地址段的 FPGA配置數(shù)據進行擦寫或升級,也可以通過串口 IAP指令切換微處理器跳到 Block0中低地址段運行,來對 Block1中的程序進行擦寫或升級。
由于 Block0中低地址段存放的只是對 Block1進行擦寫的 IAP程序,因此無需擦寫或升級該部分程序。升級只限于當更改 FPGA邏輯功能時升級 Block0高地址段的配置數(shù)據,或者更改了 FPGA芯片時更改 Block1中的配置數(shù)據參數(shù)以及 Block0中高地址段的配置數(shù)據。當程序運行在 Block0中,要切換到 Block1運行重新配置 FPGA時,將產生復位信號,復位微處理器和 FPGA使微處理器重新對 FPGA進行配置。
評論