本篇简单介绍Xilinx的A7 FPGA板卡在连接着下载器时,无法从flash中读取配置信息。
在测试新的FPGA板卡时,发现板卡连接着下载器时,无法从flash中读取配置好的数据。
经过多次尝试,发现以下几个现象:
····不连接下载器时,重启板卡后,直接可以获取到flash内的内容。
····连接下载器时,且打开着vivado的下载界面时,重启板卡后,无法获取到flash内的内容。
····连接下载器时,关闭着vivado的下载器界面时,重启板卡后,可以获取到flash内的内容。
经过查询,从xilinx的官网上,得到以下信息:
Vivado 2016.1以后的硬件管理器新增的功能:当某个板卡断电或电缆断开时,Vivado会关闭硬件管理器中的硬件目标。
当板卡重新通电或重新连接电缆时,Vivado将自动尝试在硬件管理器中重新打开硬件目标。除了重新打开硬件目标,硬件管理器将尝试刷新所有设备寄存器,包括读取配置状态寄存器。
由于这种新行为,如果满足以下所有条件,则可能会出现间歇性配置故障:
····使用除JTAG以外的任何配置接口
····Vivado硬件管理器已打开,并连接了Digilent或Xilinx USB编程电缆
····主板重启或通电。
如果使用了任何配置接口(除了JTAG ),并且还连接了JTAG电缆,则配置可能会被JTAG链自动检测和/或寄存器读取中断,并且不会在加电或重启时完成配置。
产生这种问题的深入分析
该问题可能在三种情况下发生:
····设备通电或重启。脉冲PROGRAM_B不会导致此问题,因为Vivado硬件管理器不会看到电缆断开,并执行电缆自动检测。
····用户发出“刷新硬件设备“命令
····用户插入JTAG电缆
解决方案如下:
1)设置以下参数,禁用通电检测set_param labtools.auto_update_hardware 0注意:您需要创建一个Vivado_init.tcl脚本并在其中添加上述参数。
关于Vivado_init.tcl的其他信息:当您启动Xilinx设计工具时,它会寻找Vivado_init.tcl两个不同位置的初始化脚本:
1)在软件安装中:安装目录/viva do/version/scripts/viva do _ init . TCL安装目录是Vivado设计套件的安装目录。
2)在本地用户目录中:对于Windows 7:% APPDATA % Roaming Xilinx viva do viva do _ init . TCL对于Linux:$HOME/。Xilinx/Vivado/Vivado_init.tcl 如果Vivado_init.tcl存在于这两个位置,Vivado首先从安装目录获取文件,然后从您的主目录获取文件。如需更多信息,请参阅(UG894)中的加载和运行Tcl脚本一章使用Tcl脚本的Vivado设计套件用户指南.https://docs.amd.com/access/sources/dita/map?Isla test = true & URL = ug 894-vivado-TCL-scripting & ft:locale = en-US2)在通电或重启之前,拔下电缆。
3)减缓轮询的发生。例如,要每小时轮询一次,请使用以下选项启动hw_server:hw_server -e "set jtag-poll-delay 3600000000"This command should be called in the CMD window instead of Vivado Tcl console.
4)按如下方式在JTAG模式下关闭并重新打开目标,以防止发生任何轮询,然后恢复到正常模式: a)在JTAG模式下关闭并重新打开目标:set tmp_target [ get_hw_targets -filter { IS_OPENED == 1 }]close_hw_target $tmp_targetopen_hw_target -jtag_mode on $tmp_targetset_property LOCK true [get_property HW_JTAG $tmp_target]b)一旦部件启动,恢复到正常模式:set_property LOCK false [get_property HW_JTAG $tmp_targetclose_hw_target $tmp_targetopen_hw_target $tmp_target
上述方式,欢迎小伙伴进行验证(笔者暂未验证,以上信息来自xilinx的官方网站)。
本篇内容中有部分资源来源于网络,如有侵权,请联系作者。
1957
