case(mode)
conf_mode1: address<=23'h000000;
…… //初始化该模式起始地址
endcase
clk_start<=0;
end
configure:
begin
if(clk_start==0)
count3<=count3+1;
if(count3>=2000) //进入配置模式后延时100us 开始写数据
clk_start<=1;
if(clk_start==1)
begin
DCLK<=~DCLK;
if(DCLK==0) begin address<=address+1;DATA_OUT<=datain;end
end
end
init: begin …… end //配置完成,进入初始化工作状态
user_mode: begin …… end //初始化完成,进入用户工作状态
endcase
end
endmodule
程序代码在 QUARTUSⅡ6.0下的仿真时序如图 5所示。其简要工作过程是,外部 conf_start信号启动一次配置,EPM7064A将 nCONFIG和 nSTATUS信号拉低, FPGA进入复位状态,根据 mode取得相应的 Flash初始地址,复位完成 FPGA将 nSTATUS释放,延时大约 100us后 EPM7064开始给 FPGA提供时钟和数据,直到将配置数据全部写入 FPGA,配置完成后 FPGA将 CONF_DONE释放,表明配置完成, FPGA进入初始化状态,经过内部初始化后, INIT_DONE变高,表明 FPGA进入工作状态,各引脚将根据用户定义的状态工作。若配置过程中 nSTATUS被 FPGA拉低,则表明有配置错误,重新进行配置,在任何工作状态下外部指令都可以再次启动配置。
3.2 配置文件的获取
在 FPGA的工程设计编译后产生的 .pof和.sof文件只能直接用于在 PS模式下对 FPGA进行
配置,要用 Flash存储配置数据,需要将配置数据转换成 .hexout或.hex格式, QUARTUSⅡ6.0提供两种方法得到所需的文件[2],一是编译时改变编译选项自动生成所需文件,二是将已有配置文件转换为所需文件格式。
4 结束语
本文的创新点在于将可重构配置方法成功应用于某导航接收机中,充分利用了硬件资源。这种可重构配置方法能根据指令自动更改 FPGA配置程序,重构系统功能,实现了多模式导航体制融为一体,系统灵活性和可扩展性大大增强,以较低的成本实现复杂系统,具有一定的工程实用价值。