可在線升級(jí)的FPGA并行配置方法的實(shí)現(xiàn)
硬件電路的設(shè)計(jì)只提供了接口工作的內(nèi)核和基礎(chǔ),只有在軟件的控制下,接口才能發(fā)揮作用,硬件電路與軟件程序是緊密相關(guān)的 [4]。本設(shè)計(jì)中 FPGA采用 Altera公司的 EPF10K10ATC144-3,含有 576個(gè)邏輯單元和 6144個(gè)RAM位,其配置數(shù)據(jù)大小為 15000Bytes,微處理器給EPF10K10ATC144-3的配置程序如下:本文引用地址:http://www.ex-cimer.com/article/191963.htm
unsigned char FpgaConfig(void)
{
unsigned int iConfigDataByteCount;
unsigned char code * pConfigDataAddress;
pConfigDataAddress = 0x2000; //FPGA 配置數(shù)據(jù)的起始地址
nCONFIG = 0;
while((nSTATUS==1) || (CONFIG_DONE == 1));
nCONFIG = 1;
while((nSTATUS==0);
iConfigDataByteCount = 0;
CFG_CS_ = 0;
while(CONFIG_DONE == 0)
{
while(RDYnBUSY == 0);
FPGA_CFG_ADDRESS = *pConfigDataAddress;
pConfigDataAddress++;
iConfigDataByteCount++;
if ((iConfigDataByteCount > 0x3A98) || ( nSTATUS==0) )
//EPF10K10ATC144-3 配置數(shù)據(jù)為0x3A98(15000)字節(jié),升級(jí)成相同封裝和引腳的
//EPF10K30ATC144-3 時(shí),只需將0x3A98 改成0xC63E(50750)即可
{
CFG_CS_ = 1;
return ERROR;
}
}
CFG_CS_ = 1;
return SUCCESS;
}
在不更改硬件板的條件下,若更改 FPGA芯片升級(jí)系統(tǒng),升級(jí)成含有 1728個(gè)邏輯單元和 12288個(gè) RAM位的 EPF10K30ATC144-3芯片時(shí),由于與 EPF10K10ATC144-3具有相同的封裝和引腳排列[3],因此硬件上可以直接更換 FPGA芯片來升級(jí),而軟件上只需將 Block1程序中對(duì) FPGA配置的數(shù)據(jù)大小參數(shù) 15000改成 50750(見上程序注釋)。而升級(jí)芯片的配置數(shù)據(jù),則直接通過串口 IAP將配置數(shù)據(jù)寫入 Block0高地址段即可。因此,能非常方便的在線完成 FPGA內(nèi)部邏輯甚至更換 FPGA芯片時(shí)的系統(tǒng)升級(jí)。
4.結(jié)論
本文給出了基于 SST89V564RD處理器的 FPGA被動(dòng)并行異步配置的軟硬件實(shí)現(xiàn),該方法充分利用了 SST89V564RD的 IAP技術(shù)以及分塊大容量的 Flash存儲(chǔ)技術(shù),能快速、方便、靈活地對(duì)對(duì) FPGA的內(nèi)部邏輯功能進(jìn)行在線升級(jí),還可以完成在升級(jí)相同封裝和引腳的 FPGA芯片時(shí),進(jìn)行整個(gè)系統(tǒng)的在線升級(jí)。本方法也適合于其他類似的微處理器。
評(píng)論