0 参考资料
(1) Xilinx: Development System Reference Guide. dev.pdf, v10.1
在Xilinx的doc目录下有。
(2) Xilinx: Virtex FPGA Series Configuration and Readback. XAPP138 (v2.8) March 11, 2005
在Xilinx网站上有,链接https://www.xilinx.com/bvdocs/appnotes/xapp138.pdf
(3)Xilinx: Using a Microprocessor to Configure Xilinx FPGAs via Slave Serial or SelectMAP Mode.XAPP502 (v1.5) December 3, 2007
在Xilinx网站上有,链接https://www.xilinx.com/bvdocs/appnotes/xapp502.pdf
注:此外xapp139和xapp151也是和配置相关的。
(4)Xilinx: Virtex-4 Configuration Guide. UG071 (v1.5) January 12, 2007
(5) Tell me about the .BIT file format.
1 Xilinx配置过程
主要讲一下Startup Sequence。
Startup Sequence由8个状态组成.
除了7是固定的之外,其它几个的顺序是用户可设置的,而且Wait for DCM和DCI是可选的。
其中默认顺序如下:
这些在ISE生成bit文件时通过属性页设定。
这几个状态的具体含义如下:
Release_DONE : DONE信号变高
GWE : 使能CLB和IOB,FPGA的RAMs和FFs可以改变状态
GTS : 激活用户IO,之前都是高阻。
EOS : 表示配置结束
DCI_MATCH : 表示所有的DCI(Digitally Controlled Impedance)控制器已经把内部电阻和外部参考电阻匹配完毕。
DCM_LOCK : 表示所有的DCM已经锁定。这个选项默认是选中的。
因此,我们可以得出如下结论:
(1)FPGA最后的Startup过程有8个周期,其中DONE变高仅仅是第4个周期。因此,在DONE变高之后还需要再给3个CCLK。否则DONE虽然变高了,FPGA程序并没有正确运行。
(2)ISE 会在设计中搜索用户是否使用了DCI,如果是,FPGA会使用2个周期的Start Up Phase,等待DCI匹配上。即FPGA会在那儿等待,直到DCI匹配上。如果我们在上位机读取了配置文件,获得了文件大小,我们把它写到负责加载V4 的SP3里,然后CCLK时钟就不给了。这就产生问题,因为DCI匹配需要时间,我们的问题就是,过了一段时间,DCI匹配完毕了,但是CCLK却没有 了,因此FPGA一直处在Start UP的前2个Phase上,不会到DONE。导致无法配置成功。
看xilinx Development System Reference Guide(dev.pdf)中,写到
B