2008年11月19日星期三

成功生成的 Bitstream 当下载到FPGA时,出错的原因及解决方法

成功生成的 Bitstream 当下载到FPGA时,出错
这很令人愤怒。如果一个大的系统通过 ISE 两个小时以上的综合。BITSTREAM 成功生成了,但下载到 FPGA 时却报错。以下是两个不同的报错。
Attemp to Download full Bitstream
Checking Local 1 Range/Remap Register............Success
FPGA-Erase complete
Startsequenz found, starting programming.......
Preparing for Interrupt..........................Success
ERROR ! Done timeout!
Init is LOW, but should be HIGH, this could indicate a CRC-error

Attemp to Download full Bitstream .
Checking Local 1 Range/Remap Register............Success
ERROR !
Init timeout

我们先讨论其产生原因。
会发生这种情况,常常是我生成2个Bitstream并且分别下载到相邻的FPGA上。这两个Bitstream可以单独放置在FPGA上毫无问题,但是就是不可以分别下载到相邻的 FPGA 上(已经通过多次实验证明),但是通常我需要这两个FPGA模块进行通信交流。

产生原因可能有2个:可能是在LINUX的机器上,不同的时间,综合ISE工具产生的结果是不同的。这个看是很荒谬的原因是我的导师告诉我的,他有多次经历。我在昨天也做了实验,同样一个VHDL设计在不同的时段(不同的LINUX机器)进行综合,新的Bitstream就可以用了。
另一个原因是:可能FPGA的模块的输出和输入没有正确的MAP & ROUTING。一直两个FPGA模块无法对应上。

解决方法:
目前只能进行多次综合,在不同的时段或使用不同的LINUX综合机器。
新的解决方法,如果发现我将在后续发布。
最新的解决方法:
1.请查看ise Project里的FPGA constrain文档是否有正确放置在top 文档下。
2.有时候要先删除旧的FPGA constrain文档,然后再加上一遍,这可能是ise的bug吧,我的导师告诉我的。
3.如果可以的话,请删除和你Project无关的vhd或verilog文档,它们可能会对你的综合产生影响。

没有评论: