[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

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

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

相关文章

c语言--一维数组传参的本质(详解)

目录 一、前言二、代码三、形式3.1形式13.2形式2 四、总结 一、前言 首先从⼀个问题开始,我们之前都是在函数外部计算数组的元素个数,那我们可以把函数传给⼀个函数后,函数内部求数组的元素个数吗? 二、代码 直接上代码&#x…

人力资源智能化管理项目(day09:权限应用)

学习源码可以看我的个人前端学习笔记 (github.com):qdxzw/humanResourceIntelligentManagementProject 搭建页面结构 <template><div class"container"><div class"app-container"><el-button class"btn-add" type"p…

【COMP337 LEC4】

Classifier Evaluation Numerous measures exist (as we will shortly see) to compare the predicted labels by the trained classifier and actual ( target) labels in the test dataset 存在许多度量方法&#xff08;我们很快将会看到&#xff09;来比较训练过的分类器…

6、内网安全-横向移动WmiSmbCrackMapExecProxyChainsImpacket

用途&#xff1a;个人学习笔记&#xff0c;有所借鉴&#xff0c;欢迎指正&#xff01; 前言&#xff1a; 在内网环境中&#xff0c;主机192.168.3.31有外网网卡能出网&#xff0c;在取得该主机权限后上线&#xff0c;搭建web应用构造后门下载地址&#xff0c;利用该主机执行相…

H.264官方手册之帧间预测

一、 框架 只有解码 P和 B类型的宏块时才能调用该过程。 该过程的输出为当前宏块的帧间预测采样点&#xff0c;是一个16x16的亮度采样点 pred(Luma)。以及当ChromaArrayType不等于0时输出 pred(Cb)与pred(Cr) 如果mb_type为B_Skip或者B_Direct_16x16&#xff0c;mbPartIdx的范…

【HarmonyOS】鸿蒙开发之渲染控制——第2.3章

if/eles条件渲染 if的使用方法与javascript&#xff0c;java中使用的if/eles条件渲染使用基本一致。 案例: Entry Component struct IfElseDemo{State isShow:boolean false;build(){Column() {TitleBar({titleBarAttribute: {title: "ifElse使用案例",backShow:…

【图论经典题目讲解】CF786B - Legacy 一道线段树优化建图的经典题目

C F 786 B − L e g a c y \mathrm{CF786B - Legacy} CF786B−Legacy D e s c r i p t i o n \mathrm{Description} Description 给定 1 1 1 张 n n n 个点的有向图&#xff0c;初始没有边&#xff0c;接下来有 q q q 次操作&#xff0c;形式如下&#xff1a; 1 u v w 表示…

STM32F1 - 中断系统

Interrupt 1> 硬件框图2> NVIC 中断管理3> EXTI 中断管理3.1> EXTI与NVIC3.2> EXTI内部框图 4> 外部中断实验4.1> 实验概述4.2> 程序设计 5> 总结 1> 硬件框图 NVIC&#xff1a;Nested Vectored Interrupt Controller【嵌套向量中断控制器】 管理…

拿捏c语言指针(上)

目录 前言 ​编辑 指针 内存与地址 计算机常见单位 理解编址 取地址&#xff0c;指针变量&#xff0c;解引用 取地址 指针变量 解引用 指针变量大小 指针类型的作用 char*解引用后 指针-整数 应用 void*指针 const修饰指针变量 const修饰普通变量 const修饰指…

自动化测试-RIDE编写自动化脚本

自动化脚本软件测试的必修内容&#xff0c;是自动化测试的核心&#xff0c;脚本的逻辑严谨性、可维护性非常重要&#xff0c;优秀的自动化脚本需要能兼顾用例的正确有效性和自动化测试的效率&#xff0c;本篇文章将介绍如何用RIDE写自动化脚本。我们将深入探讨RIDE的具体用法&a…

相机图像质量研究(22)常见问题总结:CMOS期间对成像的影响--光学串扰

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Linux POSIX信号量 线程池

Linux POSIX信号量 线程池 一. 什么是POSIX信号量&#xff1f;二. POSIX信号量实现原理三. POSIX信号量接口函数四. 基于环形队列的生产消费模型五. 线程池 一. 什么是POSIX信号量&#xff1f; POSIX信号量是一种用于同步和互斥操作的机制&#xff0c;属于POSIX&#xff08;Po…

项目管理工具软件Maven趣闻

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Maven这个单词来自于意第绪语&#xff08;Yiddish&#xff09;&#xff0c;这是一种与德语和希伯来语有密切关系的犹太民族语言。在这个语境中&#xff0c;Maven意为“知识的…

ChatGPT高效提问—prompt实践(智能辅导-心理咨询-职业规划)

ChatGPT高效提问—prompt实践&#xff08;智能辅导-心理咨询-职业规划&#xff09; ​ 智能辅导是指利用人工智能技术&#xff0c;为学习者提供个性化、高效的学习辅助服务。它基于大数据分析和机器学习算法&#xff0c;可以针对学习者的学习行为、状态和能力进行评估和预测&a…

MATLAB知识点:datasample函数(★★☆☆☆)随机抽样的函数,能对矩阵数据进行随机抽样

讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章&#xff1a;课后习题讲解中拓展的函数 在讲解第三…

数据类型与变量

目录 作业回顾 有关JDK, JRE, JVM三者&#xff1a; 判断题 新课学习 字面常量 数据类型 变量 整型变量 长整型变量 短整型变量 字节型变量 浮点型变量 字符型变量 布尔型变量 类型转换 自动类型转换&#xff08;隐式&#xff09; 强制类型转换&#xff08;显式…

Navicat安装使用连接MySQL

目录 安装登录MySQL登录MySQL用Navicat连接MySQL 安装 选择“我同意”&#xff0c;点击下一步。 选择安装的目标文件夹&#xff0c;点击下一步。 点击下一步。 点击下一步。 点击安装。 软件安装需要一些时间&#xff0c;请耐心等待 点击“完成”。 注册 输入 密钥&#x…

Crypto-RSA3

题目&#xff1a;&#xff08;BUUCTF在线评测 (buuoj.cn)&#xff09; 共模攻击 ​ 前提&#xff1a;有两组及以上的RSA加密过程&#xff0c;而且其中两次的m和n都是相同的&#xff0c;那么就可以在不计算出d而直接计算出m的值。 ​ 设模数为n&#xff0c;两个用户的公钥分别为…

LeetCode 0103.二叉树的锯齿形层序遍历:层序遍历 + 适时翻转

【LetMeFly】103.二叉树的锯齿形层序遍历&#xff1a;层序遍历 适时翻转 力扣题目链接&#xff1a;https://leetcode.cn/problems/binary-tree-zigzag-level-order-traversal/ 给你二叉树的根节点 root &#xff0c;返回其节点值的 锯齿形层序遍历 。&#xff08;即先从左往…

Java与JavaScript同源不同性

Java是目前编程领域使用非常广泛的编程语言&#xff0c;相较于JavaScript&#xff0c;Java更被人们熟知。很多Java程序员想学门脚本语言&#xff0c;一看JavaScript和Java这么像&#xff0c;很有亲切感&#xff0c;那干脆就学它了&#xff0c;这也间接的帮助了JavaScript的发展…