当前位置: 首页 > news >正文

[FPGA开发工具使用总结]VIVADO在线调试(1)-信号抓取工具的使用

目录

  • 1简介
  • 2 添加观测信号的几种方法
    • 2.1 通过定制IP核添加
    • 2.2 通过约束文件添加
    • 2.3 通过GUI生成DEBUG约束文件
    • 2.4 两种方法的优点与缺点
  • 3在线调试方法
    • 3.1 器件扫描设置
    • 3.2 触发条件设置
    • 3.3 触发窗口设置
    • 3.4 采样过程控制
  • 4常见问题
    • 4.1 时钟域的选择
    • 4.2 缺少LTX文件
    • 4.3 ILA无时钟
  • 参考文档

1简介

在FPGA开发过程中,实时抓取信号进行观测是一种必不可少的问题分析手段。通常厂家会提供一种通过JTAG互联,逻辑资源定制的实时记录信号的调试手段。
通过阅读本文您可以了解到针对VIVADO开发工具的在线分析工具的使用方法。例如,如何添加被测信号,如何准确的观测到被测信号的典型现象,以及通常会遇到的问题等。

2 添加观测信号的几种方法

2.1 通过定制IP核添加

VIVADO提供了一个用于实时抓取信号的IP核,名为ILA(内部逻辑分析仪),用户使用时可在IP Catalog中直接搜索ila进行定制。
在这里插入图片描述
ILA core的定制非常简单,通常仅需如下配置即可满足需求。
在这里插入图片描述在这里插入图片描述
在使用ILA Core时需要注意,输入被测信号的位宽可以小于等于ILA Core端口的位宽,但是不能使ILA Core端口为空,否则布局布线会失败。
在遇到难以解决的问题时,一个工程中会添加很多的ILA core,此时如果单独定制每一个Core会增加许多繁冗的工作,可先定制一个输入端口与位宽足够的Core,然后按需例化。
如下图是在某个工程中被调用的ILA Core,在调试时打开宏将ILA例化到工程中进行调试,完成调试后通过关闭宏屏蔽掉ILA,该方法可以避免在完成调试后删除ILA过程中的修改引入不必要的BUG。
在这里插入图片描述

2.2 通过约束文件添加

通过编写XDC约束文件,亦可实现ILA添加,添加ILA Core的XDC示例文件如下所示。
在这里插入图片描述
使用此种方式需要对约束脚本非常熟悉。若不熟悉约束脚本的编写也可通过GUI界面生成约束文件;2.3节将介绍如何生成DEBUG的约束文件。

2.3 通过GUI生成DEBUG约束文件

使用GUI生成约束文件需要先完成工程综合,然后在FlowNavigator窗口中打开Synthesized –>Open Synthesized Design –> Set Up Debug,等待加载设计。
在这里插入图片描述
被测信号筛选及添加,综合后原来的信号名基本都会发生变化,可以在信号名的后面带上*以便准确的匹配到。
在这里插入图片描述
在这里插入图片描述
若想被测信号名称在综合时不被优化掉,可以在综合之前在代码中设置约束。添加mark_debug约束后,被测信号可以很方便的被筛选出来。
在这里插入图片描述
添加完信号后设置采样深度等。
在这里插入图片描述
完成后可以在底部的Debug窗口看到添加的被观测信号,到这一步还没结束,还需要保存刚才生成的约束才可以重新编译。
在这里插入图片描述
直接在Synthesized Design界面中按ctrl+s即可保存刚才生成的约束,弹出下图界面及保存成功。系统会默认保存到target的xdc文件中。推荐用一个专门的XDC文件来保存DEBUG相关约束。
在这里插入图片描述

2.4 两种方法的优点与缺点

VIVADO提供了通过IP Core核约束的两种方式添加在线分析逻辑的方法,两种方法优缺点如下所示。

优点缺点
通过IP Core添加IP Core自带网表,节省编译时间;在代码中直接例化,能够快速搭建测试平台。对跨模块的信号不太友好,代码改动较大。
通过约束添加方便跨模块信号观测;不在功能代码中做修改,方便完成调试后的代码整理。编译较慢。

3在线调试方法

3.1 器件扫描设置

VIVADO器件扫描在Flow Navigator 窗口中Open Hardware Manager -> Open Target –>Auto Connect打开。
在这里插入图片描述
鼠标右键单击器件信号选择Program Device下载程序(bit文件)。VIVADO也支持将程序(mcs文件)烧写到FLASH启动然后添加LTX文件启动在线调试。
在这里插入图片描述
LTX文件在工程路径下/.runs/impl_1/debug_nets.ltx或者.ltx(*为工程名),这两个文件是一样的。烧写完成后会自动刷新出在线DEBUG的窗口,如果没有刷新,可以鼠标右键单击器件信号选择Refresh Device进行手动刷新。
在这里插入图片描述
在线调试的界面如下,在大部分的调试过程中,需要用到的窗口有Waveform、Settings、Trigger Setup、Status等几个窗口。
在这里插入图片描述

3.2 触发条件设置

触发条件设置如下。
在这里插入图片描述

3.3 触发窗口设置

想要准确的观察到信号的变化情况,选择合适的触发窗口非常重要。通常可按如下推荐设置。
在这里插入图片描述

3.4 采样过程控制

用户可以通过Status窗口控制采样过程,每次采样需要经过空闲->预触发->等待触发->后触发->满(完成)等几个状态才能观察信号。整个过程会在status窗口中显示出来。
在这里插入图片描述
用户可以通过如下所示的按钮控制采样。
在这里插入图片描述
此处仅介绍了普通模式的触发方式,更详细的使用方式请参考Xilinx官方的文档UG936

4常见问题

4.1 时钟域的选择

Xilinx的FPGA器件内部有区域时钟、全局时钟、本地时钟等各种类型的时钟信号,在选择采样时钟时应充分考虑布局布线是否能够通过。通常推荐使用全局时钟作为采样时钟,此外若被测信号比较多时也推荐使用全局时钟。当必须使用区域时钟时,布局布线的通过率就必须考虑到。
在通过约束添加DEBUG信号时,需要注意的是,不同时钟采样的被测信号会被放置到不同的观测窗口中,不太容易做到同一时刻采样。也不能进行对比观察。

4.2 缺少LTX文件

如果烧写BIT文件后弹出出现如下界面,则是由于找不到LTX文件导致的。只需根据提示手动添加LTX文件即可。如果是通过FLASH启动,也会弹出如下界面。
在这里插入图片描述

4.3 ILA无时钟

如果烧写BIT文件后不能正常弹出DEBUG窗口,手动刷新也没有时,观察Tcl Console窗口是有如下错误,则有很大可能性是没有采样时钟导致(不排除其他因素)。
在这里插入图片描述

参考文档

  1. ug936-vivado-tutorial-programming-debugging
  2. pg172-ila

相关文章:

[FPGA开发工具使用总结]VIVADO在线调试(1)-信号抓取工具的使用

目录 1简介2 添加观测信号的几种方法2.1 通过定制IP核添加2.2 通过约束文件添加2.3 通过GUI生成DEBUG约束文件2.4 两种方法的优点与缺点 3在线调试方法3.1 器件扫描设置3.2 触发条件设置3.3 触发窗口设置3.4 采样过程控制 4常见问题4.1 时钟域的选择4.2 缺少LTX文件4.3 ILA无时…...

Linux ip route命令

理解ip route命令 ip route是Linux系统中的一个非常常用的命令,它用于配置和管理Linux的路由表。通过ip route命令,管理员可以查看、添加、删除或修改Linux系统的路由表,从而决定数据包如何在网络中传输。例如,当一台Linux机器需要…...

WordPress有没有必要选择付费主题

有必要。 能用付费的,就尽量别用免费的。 付费主题,情况也比较复杂,先讲一下付费主题的几种情况 1、是原创付费主题。是主题制作者原创的主题。 2、是把别人的主题二次开发的付费主题。这个有些是有原始开发者授权的,有些就是…...

软考-中级-系统集成2023年综合知识(一)

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 软考中级专栏回顾 专栏…...

Flutter NestedScrollView 内嵌视图滚动行为一致

Flutter NestedScrollView 内嵌视图滚动行为一致 视频 https://youtu.be/_h7CkzXY3aM https://www.bilibili.com/video/BV1Gh4y1571p/ 前言 上一节讲了 CustomScrollView ,可以发现有的地方滚动并不是很连贯。 这时候就需要 NestedScrollView 来处理了。 今天会写…...

展示用HTML编写的个人简历信息

展示用HTML编写的个人简历信息 相关代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…...

PostgreSQL 实体化视图的使用

上周的教程中&#xff0c;通过 DVD Rental Database 示例&#xff0c;让我们了解了在 PostgreSQL 中创建实体化视图的过程。正如我们所了解的&#xff0c;PostgreSQL 实体化视图提供了一种强大的机制&#xff0c;通过预计算和存储查询结果集为物理表来提高查询性能。接下来的内…...

【MySQL】数据库索引详解 | 聚簇索引 | 最左匹配原则 | 索引的优缺点

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; &#x1f525;c系列专栏&#xff1a;C/C零基础到精通 &#x1f525; 给大…...

HarmonyOS 自定义进度条 Stage模型

通过onTouch监听滑动&#xff0c;动态改变圆角 let radius 0Entry Component struct TestPage {State flip: boolean falseState progress:number 20build() {Row() {Column() {RelativeContainer(){Rect({ width: 100%, height: 40 }).radius(10).fill("#505050"…...

Flink双流(join)

一、介绍 Join大体分类只有两种&#xff1a;Window Join和Interval Join Window Join有可以根据Window的类型细分出3种&#xff1a;Tumbling(滚动) Window Join、Sliding(滑动) Window Join、Session(会话) Widnow Join。 &#x1f338;Window 类型的join都是利用window的机制…...

使用Nginx或者Fiddler快速代理调试

1 背景问题 在分析业务系统程序问题时,存在服务系统环境是其它部门或者其它小组搭建或运维的,并且现在微服务时代,服务多且复杂,在个人机器上搭建起如此环境,要么费事费力,要么不具备充足条件。 急需有一种方法或者工具可以快速辅助调试定位分析问题。本文下面介绍代理方…...

MySQL高级特性篇(3)-全文检索的实现与优化

MySQL数据库全文检索是指对数据库中的文本字段进行高效地搜索和匹配。在MySQL数据库中&#xff0c;可以使用全文检索来实现快速的文本搜索功能&#xff0c;并且可以通过一些优化手段提高全文检索的性能。 一、MySQL全文检索的基本概念 全文检索是一种将关键字搜索与自然语言处…...

MySQL加锁策略详解

我们主要从三个方面来讨论这个问题&#xff1a; 啥时候加&#xff1f;如何加&#xff1f;什么时候该加什么时候不该加&#xff1f; 1、啥时候加 1.1 显式锁 MySQL 的加锁可以分为显式加锁和隐式加锁&#xff0c;显式加锁我们比较好识别的&#xff0c;因为他往往直接体现在 S…...

会声会影2024新功能及剪辑视频步骤教程

会声会影2024的新功能主要包括&#xff1a; 全新的标题动态与特效&#xff1a;用户可以为文字标题指定进入、中场和退出的不同动态效果&#xff0c;比如闪现进入、中场弹跳和淡出退出等&#xff0c;让文字标题更具动感。此外&#xff0c;还新增了多个标题特效&#xff0c;包括…...

Rust Vs Go:从头构建一个web服务

Go 和 Rust 之间的许多比较都强调它们在语法和初始学习曲线上的差异。然而&#xff0c;最终的决定性因素是重要项目的易用性。 “Rust 与 Go”争论 Rust vs Go 是一个不断出现的话题&#xff0c;并且已经有很多关于它的文章。部分原因是开发人员正在寻找信息来帮助他们决定下…...

几个常见的C/C++语言冷知识

当涉及到C/C语言时&#xff0c;有一些冷知识可能并不为人所熟知&#xff0c;但却可以让你更深入地理解这门古老而强大的编程语言。以下是一些有趣的C/C语言冷知识。 1. 数组的下标可以是负数 在我们日常的C语言编程中&#xff0c;数组是一个非常常见的数据结构。我们习惯性地使…...

低代码开发:学校低成本数字化转型的新引擎

随着科技的飞速发展&#xff0c;数字化转型已经成为教育行业的一大趋势。然而&#xff0c;对于许多学校来说&#xff0c;高昂的数字化改造成本成为了一道难以逾越的门槛。本文将探讨如何通过低代码开发&#xff0c;以低成本实现学校数字化转型&#xff0c;为教育行业注入新活力…...

【es6】解决箭头函数所有的问题,箭头函数的 this 指针,使用 new 操作符

箭头函数是 es6 提出的this 指针指向 定义箭头函数的全局上下文或函数上下文&#xff0c;是固定的call\apply\bind无法改变箭头函数的this没有 arguments 对象&#xff0c;但是可以访问外部作用域中的 arguments 对象没有 prototype 属性不能用作 generator 函数&#xff0c;不…...

2-1SDN(软件定义网络)环境测试实验(无默认控制器)-静态流表

控制器是为了更好集中控制网络的行为&#xff0c;当然在实际中我们可以根据需要选择是否选择控制器&#xff0c;或是结合ovs交换机的特点进行针对性的转发行为设置&#xff08;功能需要书写代码进行软件定义&#xff09;&#xff0c;转发功能需要手工添加流表才能实现 如&#…...

飞天使-k8s知识点22-kubernetes实操7-ingress

文章目录 ingress环境准备准备service和pod验证效果 https 代理效果 ingress 在 Kubernetes 中&#xff0c;Ingress 是一种 API 对象&#xff0c;它管理外部访问集群内部服务的规则。你可以将其视为一个入口&#xff0c;它可以将来自集群外部的 HTTP 和 HTTPS 路由到集群内部的…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...

在树莓派上添加音频输入设备的几种方法

在树莓派上添加音频输入设备可以通过以下步骤完成&#xff0c;具体方法取决于设备类型&#xff08;如USB麦克风、3.5mm接口麦克风或HDMI音频输入&#xff09;。以下是详细指南&#xff1a; 1. 连接音频输入设备 USB麦克风/声卡&#xff1a;直接插入树莓派的USB接口。3.5mm麦克…...

es6+和css3新增的特性有哪些

一&#xff1a;ECMAScript 新特性&#xff08;ES6&#xff09; ES6 (2015) - 革命性更新 1&#xff0c;记住的方法&#xff0c;从一个方法里面用到了哪些技术 1&#xff0c;let /const块级作用域声明2&#xff0c;**默认参数**&#xff1a;函数参数可以设置默认值。3&#x…...

简单介绍C++中 string与wstring

在C中&#xff0c;string和wstring是两种用于处理不同字符编码的字符串类型&#xff0c;分别基于char和wchar_t字符类型。以下是它们的详细说明和对比&#xff1a; 1. 基础定义 string 类型&#xff1a;std::string 字符类型&#xff1a;char&#xff08;通常为8位&#xff09…...

STL 2迭代器

文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器&#xff1f; 1.迭代器…...

LeetCode - 148. 排序链表

目录 题目 思路 基本情况检查 复杂度分析 执行示例 读者可能出的错误 正确的写法 题目 148. 排序链表 - 力扣&#xff08;LeetCode&#xff09; 思路 链表归并排序采用"分治"的策略&#xff0c;主要分为三个步骤&#xff1a; 分割&#xff1a;将链表从中间…...

TMC2226超静音步进电机驱动控制模块

目前已经使用TMC2226量产超过20K,发现在静音方面做的还是很不错。 一、TMC2226管脚定义说明 二、原理图及下载地址 一、TMC2226管脚定义说明 引脚编号类型功能OB11电机线圈 B 输出 1BRB2线圈 B 的检测电阻连接端。将检测电阻靠近该引脚连接到地。使用内部检测电阻时,将此引…...

PC与Windows远程连接与串流:方案简介(ZeroTier + Parsec、Moonlight + Sunshine、网易UU远程)

简介 在远程办公、云游戏、家用 NAS 串流、图形远程渲染等需求增长的背景下&#xff0c;越来越多用户开始寻找低延迟、高画质、跨网络可用的远程连接方案。今天这篇文章将深度分析三种目前在玩家圈和远程办公中都非常流行的组合方案&#xff1a; &#x1f7e2; ZeroTier Pars…...