硬件器件编程 当编程文件与硬件器件相关联后 , 即可在“硬件 (Hardware) ”窗口中右键单击器件并选择“器件编程 (Program Device)”菜单项来执行硬件器件编程。您也可以使用 program_hw_device Tcl 命令。例如 , 要对 JTAG 链中的首个 器件执行编程, 请使用以下 Tcl 命令 : program_hw_devices [lindex [get_hw_devices] 0] 当进度对话框指示编程进度达 100% 完成时 , 您可通过在“硬件器件属性 (Hardware Device Properties) ”窗口中检验 状态是否为“完成 (DONE) ”来检查硬件器件编程是否成功。 您还可使用 get_property Tcl 命令来检查 DONE 状态。例如 , 要检查 JTAG 链中的首个器件 ( 即 Kintex ® -7 器件 ) 的 DONE 状态 , 请使用以下 Tcl 命令 : get_property REGISTER.IR.BIT5_DONE [lindex [get_hw_devices] 0] 在 Versal 器件上使用的命令与此处命令略有不同 , 因为 DONE 状态寄存器不同。索引值为 1 需理解为 get_hw_devices 返回的首个器件 , 并且在单器件用例中 , 将表示为 arm_dap 。 get_property REGISTER.JTAG_STATUS.BIT[34]_DONE [lindex [get_hw_devices] 1] 如果您使用其它方法执行硬件器件编程 ( 例如 , 使用闪存器件或外部器件编程器 ), 那么也可以通过右键单击“刷新器 件 (Refresh Device) ”菜单项或者通过运行 refresh_hw_device Tcl 命令来刷新硬件器件的状态。这样可以刷新器件 的各种属性, 包括但不限于 DONE 状态。 重要提示 ! 对于非 Versal 架构 , 如果您的设计包含调试核 , 请确保 JTAG 时钟比 Debug Hub 时钟慢 2.5x 倍。 重要提示 ! 用户扫描链 (User SCAN Chain) : 对于非 Versal 架构 , 默认情况下 , Vivado 编程器会尝试检测设计中 指定的用户扫描链上的调试核。它通过向器件发出 JTAG_CHAIN 1 命令来执行检测。如果您已编程的器件所含 的设计没有任何调试核或者所含调试核的用户扫描链为 2 、 3 或 4 , 那么您将看到 1 条警告。 重要提示 ! 用户扫描链 : 每个 Versal 器件的 Control, Interfaces, and Processing System (CIPS) BSCAN 端口都对 应于 1 条不同的用户扫描链。默认情况下 , Vivado 编程器在扫描 MicroBlaze Debug Module (MDM) 核时 , 仅扫 描用户扫描链 2 和 4 。如果 MicroBlaze Debug Module 连接到 CIPS 上的 BSCAN_0 或 BSCAN_2 端口 , 则需更 新用户掩码以包含这些扫描链, 如下所示。 要判定用户扫描链设置 , 对于非 Versal 架构 , 请打开已实现的设计并使用 : get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub] 您可在 Vivado 硬件管理器中更改用户扫描链。请注意 , BSCAN_SWITCH_USER_MASK 是位掩码值。请参阅下图。 或者, 您可在执行 hw_server 启动时 , 指定用户扫描链作为选项。 hw_server -e "set bscan-switch-user-mask <user-bit-mask>" 提示 : 对于早于 Vivado 2016.3 的设计 , 赛灵思建议手动启动 hw_server 并包含 -e"set xsdb-userbscan <C_USER_SCAN_CHAIN scan_chain_number>", 以检测位于用户扫描链的 2 或 4 上的 Debug Hub。 比特流分配错误消息 Vivado 硬件管理器在以下情况下会显示“ incorrect bitstream assignment ”消息 : • 对镜像进行编程时 , 尝试使用为其它 FPGA 或 ACAP 生成的比特流或可编程器件镜像来进行编程。 例如 , 尝试使用 XCVU190 比特流对 XCKU115 进行编程时 , 会显示以下错误消息。 解决方案是为要编程的 FPGA 或 ACAP 指定正确的比特流。 尝试使用针对其它硅片版本生成的镜像对器件进行编程 • 对器件进行编程时 , 不支持使用针对其它硅片版本生成的比特流进行编程 , 此操作可能无法正常执行 , 并且可能导致器件损坏。 ○ 例如 , XCKU115 器件可提供 -es1 和后续 -es2 硅片版本 , 以及量产硅片版本。针对 Vivado IDE 工程选择 FPGA 或 ACAP 时 , 会在器件选择器中显示这些 -es1 或 -es2 硅片版本后缀。量产版本则无后缀。 ○ 对器件进行编程时 , 请勿尝试使用针对其它硅片版本创建的比特流或器件镜像来进行编程。例如 , 请勿尝试将 针对 -es1 硅片创建的比特流编程为 -es2 硅片 , 也不得将针对 -es2 硅片创建的比特流编程为 -es1 硅片。上述任 一操作都可能导致出现下图所示错误消息。 尝试对连接到 FPGA 器件的配置存储器进行编程 为了对连接到 FPGA 器件的配置存储器进行编程 , Vivado 硬件管理器首先将闪存控制器比特流下载至 FPGA 器件。随 后, 硬件管理器通过 FPGA 器件的 JTAG 端口发送闪存命令和数据以供控制器进行处理 , 此控制器随后将经过处理的闪 存命令/ 数据发送至配置存储器接口。 硬件管理器所下载的控制器比特流是专为 FPGA 器件的最新硅片而生成的。例如 , 对于 XCKU115-es2 硅片 , 生成的配 置存储器控制器比特流可适用于 XCKU115 的 2016.3 和更高版本。 对连接到此 FPGA 的配置存储器进行编程时 , 如果用户开发板上具有 XCKU115-es1 器件 , 那么将显示如下错误消息 : Attempting to Program an FPGA Device with a Bitstream Generated for a Different Silicon Revision of the FPGA 。这 是因为硬件管理器正在尝试将 -es2 闪存控制器比特流下载到 -es1 器件中。 关闭硬件目标 您可在“ Hardware ”窗口中右键单击硬件目标并从弹出菜单中选择“ Close Target ”来关闭硬件目标。您还可使用 Tcl 命令关闭硬件目标。例如, 要关闭 localhost 服务器上的 xilinx_platformusb/USB21 目标 , 请使用以下 Tcl 命令 : close_hw_target {localhost/xilinx_tcf/Digilent/210203339395A} 重要提示 ! 如果开发板已掉电或者电缆已断开连接 , 那么 Vivado IDE 会关闭硬件管理器中的硬件目标。同时还 会取消 Vivado 主线程中的任意 Vivado 操作。如果开发板已重新上电或者电缆已重新连接 , 那么 Vivado IDE 将 尝试重新打开硬件管理器中的硬件目标。 关闭到硬件服务器的连接 您可在“ Hardware ”窗口中右键单击硬件服务器并从弹出菜单中选择“ Close Server ”来关闭硬件服务器。您还可使用 Tcl 命令关闭硬件服务器。例如 , 要关闭到 localhost 服务器的连接 , 请使用以下 Tcl 命令 : disconnect_hw_server localhost 重要提示 ! 如果 Vivado 硬件管理器 (Hardware Manager) 已连接至 hw_server 并且 hw_server 已停止 , 那么 , Hardware Manager 会自动检测到此状况 , 并断开与服务器的连接。 以更低的 JTAG 时钟频率重新连接到目标器件 JTAG 链的速度受链中最慢的器件所限。因此 , 要降低 JTAG 时钟频率 , 请连接到所设 JTAG 时钟频率低于默认 JTAG 时钟频率的目标器件。 您应尝试以默认 JTAG 时钟频率 ( 针对 Digilent 线缆连接为 15 MHz , 针对 USB 线连接为 6 MHz ) 打开连接。如果无 法以上述速度建立连接, 赛灵思建议您进一步降低默认 JTAG 时钟频率 , 如下所示。 要更改 JTAG 时钟频率 , 请使用 Vivado ® Design Suite 中的“打开新硬件目标 (Open New Hardware Target) ” Wizard , 如下图所示。 或者 , 您可以按顺序使用下列 Tcl 命令 : open_hw_manager connect_hw_server -url machinename:3121 current_hw_target [get_hw_targets */xilinx_tcf/Digilent/210203327962A] set_property PARAM.FREQUENCY 250000 [get_hw_targets */xilinx_tcf/Digilent/ 210203327962A] open_hw_target 连接到 JTAG 链中包含超过 32 个器件的服务器 在 Vivado 中 , 可连接的服务器的 JTAG 链中可包含超过 32 个器件。您需要在启动 hw_server 时提供 max-jtagdevices 选项 , 才能启用在单一扫描链中检测更多器件的功能。此设置的默认值为 32 。请注意 , 增大该数值会导致器 件发现流程变慢, 从而导致电缆接入速度变慢。 在 hw_server 启动时指定 max-jtag-devices 选项的方式如下 : hw_server -e "set max-jtag-devices 64" 用法 该选项用于启动 hw_server , 并且能够启用大于 64 位的 ir 长度。此设置的默认值为 64 。对于 JTAG 链中 ir 长度范围更 大的器件, 则可增大该值。请注意 , 增大该数值会导致器件发现流程变慢 , 从而导致电缆接入速度变慢。因此 , 仅限 ir 长度较长和器件数量较多的系统才能增大该值。 在 hw_server 启动时指定该选项的方式如下 : hw_server -e "set max-ir-length 93" 初始化 (Init) 选项 您还可使用 --init=script.txt 选项 , 通过文件来加载此设置。要使用 init 选项 , 请创建初始化脚本 , 如以下示 例所示。在此脚本中, 指定 set max-jtag-device 参数。 # Sample script.txt set max-ir-length 93 启动 hw_server , 如以下示例所示 : hw_server --init=script.txt
标签:编程,器件,hw,server,硬件,vivado,JTAG From: https://blog.csdn.net/cckkppll/article/details/137172518