【vivado】debug相关时钟及其约束关系

一、前言

在xilinx fpga的degug过程中,经常出现由于时钟不对而导致的观测波形失败,要想能够解决这些问题需要了解其debug的组成环境以及之间的数据流。本文主要介绍debug过程中需要的时钟及各时钟之间的关系。

二、debug相关时钟

Vivado 硬件管理器使用 JTAG 接口与 Vivado Debug 内核进行通信,Debug Hub在 FPGA 器件的 JTAG 边界扫描 (BSCAN) 接口和 Vivado Debug 内核之间提供接口。因此,要想完成完整的数据流需要了解三个时钟,即JTAG时钟、Debug Hub时钟和Debug Core时钟。

2.1 JTAG时钟

该时钟同步JTAG边界扫描(BSCAN)接口的内部状态机操作。在连接到目标器件时,通常会在 Vivado 硬件管理器中选择 JTAG 时钟频率。

可以使用 Open New Hardware Target 向导(使用时需要先关闭hardware mannger)或以下 Tcl 命令来修改 JTAG 频率:

set_property PARAM.FREQUENCY 250000 [get_hw_targets*/xilinx_tcf/Digilent/210203327962A]

使用要求:如果设计包含调试内核,需要确保JTAG时钟比debug hub时钟慢2.5倍。

2.2 Debug Hub时钟

Vivado Debug Hub 内核,在 FPGA 器件的 JTAG 边界扫描 (BSCAN) 接口和 Vivado Debug 内核之间提供接口。如果 Vivado IDE 在设计实现(implementation)步骤中检测到调试内核,则会自动插入 Debug Hub 内核。Vivado IDE 在设计实现步骤中自动选择驱动 Debug Hub 内核的时钟。

Xilinx 推荐 debug hub时钟频率在 100MHz 左右或更低,因为 JTAG 时钟速度不需要特别高的频率。

如果需要改变debug hub时钟频率可以在设计编译后实现前通过TCL指令更改:

connect_debug_port dbg_hub/clk [get_nets <clock_net_name>]

也可以在设计编译后实现前通过TCL命令将debug hub的时钟缩减到100M(对于具有非常高速度时钟的设计,建议这样做):

set_property C_CLK_INPUT_FREQ_HZ 200000000 [get_debug_cores dbg_hub]

set_property C_ENABLE_CLK_DIVIDER true [get_debug_cores dbg_hub]

这两条命令允许在debug hub内核中包含基于MMCM的时钟分频器,以实现100 MHz的时钟频率。

2.3 Debug Core时钟

Vivado IP 目录中提供的所有调试内核都需要一个时钟,以确保与被监控的输入信号或由调试内核驱动的任何输出信号同步。在内核发现和调试测量阶段,需要时钟是自由运行和稳定的。此外,时钟还应与被监控或驱动的信号同步。否则可能会导致周期性的数据错误。

2.4 调试流程及时钟要求

Debug Hub IP 在主机(通过支持串行接口的 BSCAN Primitive)和芯片上的调试内核(通过支持并行接口的 XSDB 接口)之间架桥。BSCAN  Primitive 时钟将数据串行移入和移出芯片到Debug Hub  IP。Debug Hub IP 收集数据,并使用Debug Hub时钟将其发送到并行接口上的所有调试内核,反之亦然。如果任何调试内核时钟不能自由运行或不稳定,则最终会得到损坏的数据,从而导致vivado 输出"Debug Cores not detected"消息。为了避免任何数据损坏,在调试内核检测过程中,必须确保JTAG时钟和debug hub时钟稳定且自由运行。

  1. Debug Hub时钟必须是自由运行且稳定的。Xilinx 推荐时钟由适当约束且满足时序的时钟驱动器驱动。
  2. 如果时钟由MMCM/PLL驱动,则在进行任何调试内核测量之前,需要确保MMCM/PLL锁定信号为高电平。如果时钟连接到Debug Hub或任何调试内核,并且 MMCM/PLL LOCKED 信号在调试操作中间转换为 0,则时钟可能会出现明显的抖动,从而可能会导致调试逻辑出现不可预测行为。
  3. 需要让所有相关的时钟自由运行和稳定,才可以正常进行调试,获取数据。

整个调试周期内各个时钟的要求如下表:

注:我自己在接手一个别人JESD204B建链不稳定的工程时,就发现 Vivado 时常会报ILA 时钟相关的错误,其原因就是该工程将JESD204B的恢复时钟作为了ILA核的时钟,而建链不稳定则恢复时钟也不稳,因此不满足上表中最后一行最后一列的 debug core clock应是稳定的要求,因此会导致vivado报错或者采不到波形。

三、相关报错

如果JTAG时钟处于非活动状态或不可用,将无法连接到硬件目标(hardware target)。

如果Debug Hub时钟处于非活动状态或不可用,Vivado硬件管理器会发出以下错误消息:

INFO: [Labtools 27-1434] Device xxx (JTAG device index = 0) is programmed 
with a design that has no supported debug core(s) in it.WARNING: [Labtools 27-3123] The debug hub core was not detected at User Scan Chain 1 
or 3. 
Resolution:1. Make sure the clock connected to the debug hub (dbg_hub) core is a free 
running clock and is active OR2. Manually launch hw_server with -e "set xsdb-user-bscan 
<C_USER_SCAN_CHAIN scan_chain_number>" to detect the debug hub at User Scan Chain of 2 or 4. To determine the user scan chain setting, open the implemented design and use: 
get_property C_USER_SCAN_CHAIN [get_debug_cores dbg_hub].

如果任何调试核心时钟处于非活动状态或不可用,Vivado 硬件管理器会发出以下错误消息:

INFO: [Labtools 27-2302] Device xxx (JTAG device index = 1) is programmed 
with a design that has 1 ILA core(s).CRITICAL WARNING: [Labtools 27-1433] Device xxx (JTAG device index = 1) is 
programmed with a design that has an unrecognizable debug core (slave type = 17) at 
user chain = 1, index = 0.Resolution: 1) Ensure that the clock signal connected to the debug core and/or debug hub is clean and 
free-running.2) Ensure that the clock connected to the debug core and/or debug hub meets all timing constraints.3) Ensure that the clock connected to debug core and/or debug hub is faster than the JTAG clock frequency.

 注:在实际过程中还会有其他debug相关报错,不过大概率都是时钟的问题,从报错提示和上面时钟的要求入手解决即可。

四、参考资料

ug908:Vivado Design Suite User Guide Programming and Debugging

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【NodeMCU实时天气时钟温湿度项目 6】解析天气信息JSON数据并显示在 TFT 屏幕上(心知天气版)

今天是第六专题&#xff0c;主要内容是&#xff1a;导入ArduinoJson功能库&#xff0c;借助该库解析从【心知天气】官网返回的JSON数据&#xff0c;并显示在 TFT 屏幕上。 如您需要了解其它专题的内容&#xff0c;请点击下面的链接。 第一专题内容&#xff0c;请参考&a…

商城小程序系统与C#.net商城小程序系统源码_OctShop

在移动互联网与电商的时代&#xff0c;商城小程序系统已经成为了众多企业和商家开展电商业务的重要工具。OctShop将以商城小程序系统、C#商城小程序系统源码和.net 商城小程序系统为主题&#xff0c;探讨这些系统的特点和优势。 一、商城小程序系统是什么 商城小程序系统是一种…

福派斯鲜肉狗粮大揭秘,狗狗吃了都说好!

狗粮哪个牌子好&#xff1f;我强烈推荐福派斯鲜肉狗粮&#xff01;在众多狗粮品牌中&#xff0c;福派斯以其高品质、营养均衡以及独特的产品特点&#xff0c;受到了广大宠物主人的一致好评。 (1) 福派斯鲜肉狗粮的配方表透露出其对于原料选择的严谨和用心。高达75%的鲜肉含量&a…

linux不小心将/etc/passwd用户文件清空或删除解决方法

大概思路&#xff1a;进入单用户模式将passwd-引子程序复制为删除的passwd用户文件&#xff0c;关闭selinux 此系统为&#xff1a;centos 7 1.在GRUB引导的时候按e进入编辑模式&#xff0c;linux16那一行的ro 修改为rw rd.break ‘ ’ 2.ctrlx执行 3.进入单用户模式后修改根…

springboot学习整理

视频&#xff1a;基础篇-01_springboot概述_哔哩哔哩_bilibili 介绍 spring boot 是spring提供的一个子项目&#xff0c;用于快速构建spring应用程序 spring构建&#xff1a; 1 导入依赖繁琐 &#xff1b; 2 项目配置繁琐 spring Framework: 核心 spring Boot :快速构建spring…

秒杀系统之设计方向

1 秒杀存在的问题 对于一个日常平稳的业务系统&#xff0c;如果直接开通秒杀功能的话&#xff0c;往往会出现很多问题—— 2 设计方向的思考 秒杀本质是要求一个瞬时高发下的承压系统&#xff0c;这也是其区别于其他业务的核心场景。对日常系统秒杀产生的问题逐一进行拆解分…

深入浅出:ConcurrentLinkedQueue源码分析与实战

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

CentOS使用Docker搭建Nacos结合内网穿透实现无公网IP远程登录本地管理平台

文章目录 1. Docker 运行Nacos2. 本地访问Nacos3. Linux安装Cpolar4. 配置Nacos UI界面公网地址5. 远程访问 Nacos UI界面6. 固定Nacos UI界面公网地址7. 固定地址访问Nacos Nacos是阿里开放的一款中间件,也是一款服务注册中心&#xff0c;它主要提供三种功能&#xff1a;持久化…

网站服务器备案及域名购买配置教程

一、阿里云服务备案准备工作 1.什么是备案? 备案是指向相关部门提交网站信息,以便监管和管理互联网信息服务,未经备案的网站可能面临罚款甚至被关闭的风险。备案主要看您的网站或App等互联网信息服务解析到的服务器是否在中国内地(大陆),如果服务器在中国内地(大陆),…

探索Python中的文件操作:如何列出一个目录下的所有文件?

在Python中&#xff0c;处理文件和目录是一项常见的任务。无论是在数据科学项目中读取数据集&#xff0c;还是在Web开发中管理用户上传的文件&#xff0c;我们都需要知道如何列出一个目录下的所有文件。本文将通过通俗易懂的语言&#xff0c;为初学者详细讲解如何在Python中实现…

Tkinter组件:Text-显示和处理多行文本

Tkinter组件&#xff1a;Text Text&#xff08;文本&#xff09;组件用于显示和处理多行文本。在 Tkinter 的所有组件中&#xff0c;Text 组件显得异常强大和灵活&#xff0c;适用于多种任务。虽然该组件的主要目的是显示多行文本&#xff0c;但它常常也被用于作为简单的文本编…

kali更新镜像源

1. 什么是镜像源 镜像源一种数据存储和分发技术&#xff0c;通常指的是一个服务器或网站&#xff0c;它存储了另一个服务器或网站上的某些或全部内容的副本。 2. kali更新镜像源 1. 编辑镜像源文件 vi /etc/apt/sources.list 2. 将原来的镜像源用#号注释掉 3. 选择镜像源地址…

LLM应用-文档解析 AI大模型总结分析文档

1&#xff09;https://notegpt.io/pdf-summary 支持总结&#xff0c;思维导图、对话 2&#xff09;chatdoc https://chatdoc.com/ 3&#xff09;chatpdf https://www.chatpdf.com/ https://www.chatpdfs.cn/ 4&#xff09;kimi https://kimi.moonshot.cn/

HTML静态网页成品作业(HTML+CSS+JS)——华为商城网页(1个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;使用Javacsript代码实现首页图片切换轮播效果&#xff0c;共有1个页面…

Cweek1

C语言学习 一.初识C语言 1.如何写C代码 ①创建工程 ②添加源文件&#xff1a;c文件&#xff1a;源文件&#xff0c;h文件&#xff1a;头文件 代码实例&#xff1a; main函数是程序的入口&#xff0c;有且仅有一个 在C语言中&#xff0c;#include <stdio.h> 是一个预…

嵌入式学习-时钟树

时钟树 时钟分类 时钟树框图 LSI与LSE HSI、HSE与PLL 系统时钟的产生 AHB、APBx的时钟配置 相关寄存器 寄存器部分的细节内容请参考手册。 相关库函数

PyQt5中Text Edit的常用方法和常用信号

文章目录 1. 简介1.1. 常用方法&#xff1a;1.2 常用信号&#xff1a; 2. Text Edit的常用方法使用案例3. Text Edit 的常用信号使用案例 1. 简介 QTextEdit是PyQt中用于显示和编辑文本的强大组件之一。它提供了丰富的功能&#xff0c;可以显示普通文本、富文本和HTML文本&…

e行64位V11.17.4 安卓全局虚拟定位APP

e行最新版11.17.4 支持全局虚拟位置 小米手机 百度地图 高德地图 实测成功 其他app自测 不一定支持所有app 下载&#xff1a;https://www.123pan.com/s/HAf9-tsyCh.html

java多线程 线程交替执行(同步)的各种实现方案

目录 java多线程 线程交替执行&#xff08;同步&#xff09;的各种实现方案需求 指定具体执行顺序实现一&#xff1a;wait_notify机制 Thread标志位实现二&#xff1a;lock_condition机制 Thread标志位实现三&#xff1a;semaphore信号量 不指定具体执行顺序&#xff0c;只交…

Electron + GitHub Actions | 自动化流程详解(下)

自动化部署 上篇介绍了 Electron Forge 打包应用教程。在实际开发中&#xff0c;自动化是提升效率和产出质量的关键。本篇我们将详细介绍如何将构建和发布 Electron 应用的过程自动化。 代码挂在 GitHub 仓库上&#xff0c;如果有帮助&#xff0c;记得给仓库点个赞&#xff1a…