(来历:微计算机信息,作者:方耀湘,黎福海,胡跃辉)
在当今改动的市场环境中,产品是否便于现场晋级、便于灵敏运用,已成为产品进入市场的关键因素。而根据 SRAM结构的 FPGA器材的呈现,为体系规划者动态改动运转电路中的逻辑功用发明了条件,也为现场晋级等奠定了根底。但因为 SRAM的掉电易失性,体系每次上电时,有必要从头装备数据,只要在数据装备正确的情况下体系才干正常作业。
在实践项目使用中,选用SST89V564微处理器对FPGA进行快速高效的PPA数据装备,不只能够完结对 FPGA的上电发动装备,一起使用其 IAP技能还能够在 FPGA装备完今后,经过修正微处理器中的装备数据和参数来完结体系的在线晋级。
1.FPGA的 PPA装备进程
FPGA的在线装备办法一般有两类:一是经过下载电缆由计算机直接对其进行装备;二是经过微处理器对其进行装备。前者调试时十分便利,在使用现场是很不实践的,只合适产品的调试,而一般实践产品中选用微处理器对 FPGA进行装备。
FPGA器材 PPA装备时序如图 1所示,其间 nCS和 CS两个片选信号只需用一个,当选用 nCS作为片选信号操控装备,CS接高电平。其装备进程为微处理器在 nCONFIG引脚上发生一个最少 21µs的低脉冲,等候直至 nSTATUS和 CONF_DONE变低。此刻将 nCONFIG置高, nSTATUS会在 nCONFIG跳高后 4µs内跳高,则标明 FPGA能够装备了。
装备成功时,FPGA器材开释 CONF_DONE信号,由外部将其拉高。假如微处理器检测到该信号为高,则标明装备成功;不然,要对其从头装备。
2.根本硬件组成
2.1 SST89V564RD及接口规划
SST89V564RD是 SST公司的 8位集成 SUPERFLASH 存储器的 51 兼容 MCU,带有 1K字节片内 RAM和 72K字节片内 SUPERFLASH。其片内 Flash分红 Block0(64K字节)和 Block1(8K字节)两块,Block0和 Block1低 8K地址相同,程序运转时,可经过设置特功用寄存器 SFCF对低 8K字节的 Flash程序存储块进行切换,以使程序运转在 Block0或 Block1。微处理器与 FPGA的接口电路如图 2所示。
2.2 SST89V564RD微处理器片内 Flash使用区分
SST89V564RD微处理器片内 Flash两块( 64K+8K)中, Block1分红 64个扇区,每个扇区包含 128个字节,一共 8K字节;Block0分红 512个扇区,每个扇区包含 128个字节,一共 64K字节[2]。
微处理器两块 Flash地址使用区分为: Block0中,低地址段 0x0000~0x1FFF寄存对 Block1进行擦写的 IAP程序,高地址段 0x2000~0xFFFF寄存 FPGA装备数据。 Block1的一切空间用来寄存上电发动时对 FPGA进行装备以及装备完后的 IAP操作程序。微处理器默许下从 Block1发动。当程序运转在 IAP指令状况时,能够经过设置特功用寄存器 SFCF使程序运转在 Block0或 Block1,来对另一 Flash块进行擦写或晋级。
因为 Block0和 Block1的低 8K字节的地址相同,因而在编程使用程序到 Flash中时,编程器将 Block1的地址界说在 0x10000~0x11FFF地址段,在编译程序时需要将 Block1的程序定位在 0x10000~0x11FFF之间才干正确烧写。
3.软件规划
微处理器状况流程如图 3所示,在上电发动时,微处理器从 Block1发动,读取 Block1中 0x2000开端的装备数据,完结对 FPGA的装备。装备完结今后,微处理器处于 IAP状况,既能够经过串口 IAP指令来对 Block0高地址段的 FPGA装备数据进行擦写或晋级,也能够经过串口 IAP指令切换微处理器跳到 Block0中低地址段运转,来对 Block1中的程序进行擦写或晋级。
因为 Block0中低地址段寄存的仅仅对 Block1进行擦写的 IAP程序,因而无需擦写或晋级该部分程序。晋级只限于当更改 FPGA逻辑功用时晋级 Block0高地址段的装备数据,或许更改了 FPGA芯片时更改 Block1中的装备数据参数以及 Block0中高地址段的装备数据。当程序运转在 Block0中,要切换到 Block1运转从头装备 FPGA时,将发生复位信号,复位微处理器和 FPGA使微处理器从头对 FPGA进行装备。
硬件电路的规划只提供了接口作业的内核和根底,只要在软件的操控下,接口才干发挥作用,硬件电路与软件程序是严密相关的 。本规划中 FPGA选用 Altera公司的 EPF10K10ATC144-3,含有 576个逻辑单元和 6144个RAM位,其装备数据巨细为 15000Bytes,微处理器给EPF10K10ATC144-3的装备程序如下:
unsigned char FpgaConfig(void)
{
unsigned int iConfigDataByteCount;
unsigned char code * pConfigDataAddress;
pConfigDataAddress = 0x2000; //FPGA 装备数据的开始地址
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 装备数据为0x3A98(15000)字节,晋级成相同封装和引脚的
//EPF10K30ATC144-3 时,只需将0x3A98 改成0xC63E(50750)即可
{
CFG_CS_ = 1;
return ERROR;
}
}
CFG_CS_ = 1;
return SUCCESS;
}
在不更改硬件板的条件下,若更改 FPGA芯片晋级体系,晋级成含有 1728个逻辑单元和 12288个 RAM位的 EPF10K30ATC144-3芯片时,因为与 EPF10K10ATC144-3具有相同的封装和引脚摆放[3],因而硬件上能够直接替换 FPGA芯片来晋级,而软件上只需将 Block1程序中对 FPGA装备的数据巨细参数 15000改成 50750(见上程序注释)。而晋级芯片的装备数据,则直接经过串口 IAP将装备数据写入 Block0高地址段即可。因而,能十分便利的在线完结 FPGA内部逻辑乃至替换 FPGA芯片时的体系晋级。
4.定论
本文给出了根据 SST89V564RD处理器的 FPGA被迫并行异步装备的软硬件完结,该办法充分使用了 SST89V564RD的 IAP技能以及分块大容量的 Flash存储技能,能快速、便利、灵敏地对对 FPGA的内部逻辑功用进行在线晋级,还能够完结在晋级相同封装和引脚的 FPGA芯片时,进行整个体系的在线晋级。本办法也合适于其他相似的微处理器。
责任编辑:gt