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