FPGA直接烧写.bit文件失败但是可以通过PROM配置的情况

最近遇到一个问题,直接往FPGA里烧写bit文件有时候能成功,有时候不能成功。假如先往PROM里写程序,不断电,再通过JTAG往FPGA里写程序,就一定烧不进去。

直接上结论:

在Generate Programming File的选项里把Enable Internal Done Pipe的选项勾选上,或许问题就可以解决了。
在这里插入图片描述

原理

FPGA 的配置寄存器中有一个叫COR寄存器(配置选项寄存器)。这个寄存器的第25位是DONE_PIPE。VIRTEX II 系列的手册里对这一位的描述是这样的:
Add a pipeline stage for the DONEIN signal. The DONEIN signal reflects the logic level on the DONE pin, not whether the device has released the DONE pin. This pipeline stage can be useful if the rise time on the DONE pin is slow, which could otherwise cause configuration to fail.

翻译过来是
为DONEIN信号添加管道级。DONEIN信号反映的是DONE引脚上的逻辑电平,而不是设备是否释放了DONE引脚。如果DONE引脚上的上升时间很慢,则此管道阶段非常有用,否则可能导致配置失败。

关于这些寄存器的说明可以看英文原版手册或者我复制粘贴的一篇VIRTEX II系列FPGA手册的翻译。
VIRTEX II 系列FPGA的配置部分文档的翻译阅读参考

ISE的默认选项里是不选中这个DONE_PIPE的(或者至少我用的10.1版本是这样的)。

问题的发现

发现问题的方法说简单很简单,说复杂很复杂。
用逻辑分析仪抓JTAG下载信号,把数据存下来然后自己在EXCEL里写公式,把JTAG状态机和FPGA里的一些寄存器解析出来。
在这里插入图片描述
在EXCEL里发现我在CFG_IN指令下发送的数据是这样的:
在这里插入图片描述
在这里插入图片描述

0xAA995566是同步字
0x30012001选中的是COR寄存器
0xA0BF3D是往寄存器中写入的内容
很明显第25位写入的是0,也就是DONE_PIPE没有选中
当我尝试着在生成选项里勾选DONG_PIPE之后,下载就成功了。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值