基于SPI FLASH的FPGA多重配置

网络与存储 时间:2014-02-12来源:摘自《电子发烧友》

  重载模块首先要调用ICAP核。ICAP原语在Xilinx的编译软件ISE中调用,调用路径为Edit→LanguageTemplates,VHDL/Verilog→Device Primitive Instantia-tion→Virtex5FPGA→Config/BSCAN Components→In-ternal Config Access Por(t ICAP_VIRTEX5)。

  ICAP_VIRTEX5调用接口如下:

  ICAP核支持X8,X16,X32三种数据带宽模式。在整个FPGA重配置的过程中并没有用到ICAP核的输出,因此在重载模块的状态机控制程序中不关注BUSY,O信号的值,可以不对它们赋值。用户程序在使用接口时只需对CE,CLK,I,WRITE4个信号不断赋值来发送命令。

  在调用了ICAP核接口之后,通过Verilog编码的方式实现状态机。通过状态机发送IPROG指令给ICAP核,ICAP核在接收到这些指令后会根据指定的地址自动加载配置文件。

  IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用程序进行复位,复位过程中除专用配置管脚和JTAG管脚,其他输入/输出管脚均为高阻态。完成复位操作后,将默认的加载地址用热启动地址寄存器(Warm Boot Start Address,WB-STAR)中的新地址替换。

  在发送IPROG指令之前,需要对ICAP核进行预配置。重载控制模块在收到触发信号后,第一个时钟周期将ICAP核的WRITE信号和CE信号置高,第二个周期将WRITE信号置底,CE信号置高,第三个周期将WRITE信号置底,CE信号也置底。接着在下面的8个时钟周期里,将指令队列中的控制命令逐个发出。状态机指令流程如图3所示。

状态机指令流程图

  在状态机发送IPROG指令的过程中,为了保证ICAP核接收到正确的指令,每一个发送出去的命令和数据必须遵循SelectMAP数据顺序。SelectMAP数据顺序是将每个指令都按字节划分,划分后每个字节的数据都按比特位翻转。如果为“X32”模式,则划分为4个字节,每个字节进行位翻转。图4以“X16”为例说明Se-lectMAP数据顺序。

Se-lectMAP数据顺序
1 2 3

关键词: FPGA Virtex5 FLASH ICAP IPROG 寄存器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版