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

xilinx FPGA在线调试方法总结(vivado+ila+vio)

本文主要介绍xilinx FPGA开发过程中常用的调试方法,包括ILA、VIO和TCL命令等等,详细介绍了如何使用。

一、FPGA调试基本原则

根据实际的输出结果表现,来推测可能的原因,再在模块中加ILA信号,设置抓信号条件,逐步定位问题模块和原因,最终解决bug。

二、FPGA常用调试方法

1、调用IP

(1)ILA

第1步:在vivado中,打开IP核目录(IP Catalog),在搜索框中输入ILA(不区分大小写),按图示方式进行选择即可。

第2步:设置ILA参数

探针数根据需要采集的信号数设定,或者直接设定一个信号;

采样数据深度可根据实际需要和资源消耗情况进行设置,一般选择默认的1024即可;

第3步:测量信号的位宽进行设置

第4步:在IP source区,打开ILA,添加例化模板, 在代码中插入例化,把VIO的输出口连接到模块的输入。

ila_0 u_ila( .clk(clk), .probe0(probe0), .probe1(probe1), .probe2(probe2));

(2)VIO IP

VIO的输出可以控制测试模块的输入,VIO的输入可以显示模块的输出值。

第1步: 例化一个VIO核,根据需要设定输入输出的数目

第2步:设置vio输出端口的位宽与初始值:

第3步:在代码中插入例化,把VIO的输出口连接到模块的输入。

vio_0 u_vio( .clk(clk), .probe_out0(probe_out0));

2、添加调试信号

(1)在Verilog HDL文件中直接添加,特点是防止信号被优化,最大可能保留信号原本的名称。

在input/output前或在声明变量前添加(* mark_debug = “true” *)

(* mark_debug = "true" *) wire done;(* mark_debug = "true" *) reg cnt;

(2)标记Debug mark方法,可以在原理图(block design)或在综合后的网表(Netlist)中添加。

A、在原理图(block design)右击添加“Mark Debug”,工程综合后,在SYNTHESIS > Open Synthesized Design,在Netlist窗口中选择需要调试的网络节点,进行调试。

右键单击任意网络节点,点击Mark Debug,该网络节点会出现小甲虫标记。

对于已经选中Mark Debug的网络节点,也可以取消调试。右键单击该网络节点,选择Unmark Debug即可

B、在综合后,Flow Navigator > SYNTHESIS > Open Synthesized Design > Schematic下打开的原理图(Schematic)中通过右键单击选中线路,添加Mark Debug信号,和Unmark Debug信号

点击 Windows > Debug,即可出现Debug窗口,在这里可以观察到已经mark debug的信号。

(3)使用Tcl命令,直接修改*.xdc文件,和添加ILA( Integrated Logic Analyzer) IP核完成.

set_property MARK_DEBUG true [get_nets [list {control_reg[0]} {control_reg[1]} \   {control_reg[2]} {control_reg[3]} {control_reg[4]} {control_reg[5]} \   {control_reg[6]} {control_reg[7]} {control_reg[8]} {control_reg[9]} \   {control_reg[10]} {control_reg[11]} {control_reg[12]} {control_reg[13]} \   {control_reg[14]} {control_reg[15]} {control_reg[16]} {control_reg[17]} \   {control_reg[18]} {control_reg[19]} {control_reg[20]} {control_reg[21]} \   {control_reg[22]} {control_reg[23]} {control_reg[24]} {control_reg[25]} \   {control_reg[26]} {control_reg[27]} {control_reg[28]} {control_reg[29]} \   {control_reg[30]} {control_reg[31]}]]create_debug_core u_ila_0 ilaset_property port_width 1 [get_debug_ports u_ila_0/CLK]connect_debug_port u_ila_0/CLK [get_nets [list wbClk ]]set_property port_width 32 [get_debug_ports u_ila_0/PROBE0]connect_debug_port u_ila_0/PROBE0 [get_nets [list {control_reg[0]}   {control_reg[1]} {control_reg[2]} {control_reg[3]} {control_reg[4]} \   {control_reg[5]} {control_reg[6]} {control_reg[7]} {control_reg[8]} \   {control_reg[9]} {control_reg[10]} {control_reg[11]} {control_reg[12]} \   {control_reg[13]} {control_reg[14]} {control_reg[15]} {control_reg[16]} \   {control_reg[17]} {control_reg[18]} {control_reg[19]} {control_reg[20]} \   {control_reg[21]} {control_reg[22]} {control_reg[23]} {control_reg[24]} \   {control_reg[25]} {control_reg[26]} {control_reg[27]} {control_reg[28]} \   {control_reg[29]} {control_reg[30]} {control_reg[31]} ]]


以上就是本次分享的xilinx FPGA调试方法总结,希望大家阅读完后,有所收获。

相关文章:

xilinx FPGA在线调试方法总结(vivado+ila+vio)

本文主要介绍xilinx FPGA开发过程中常用的调试方法,包括ILA、VIO和TCL命令等等,详细介绍了如何使用。一、FPGA调试基本原则根据实际的输出结果表现,来推测可能的原因,再在模块中加ILA信号,设置抓信号条件,逐…...

自动化测试——css元素定位

文章目录一、css定位场景二、css相对定位的优点三、css的调试方法1、表达式中含有字符串:表达式中的引号一定和外面字符串的引号相反四、css基础语法1、标签定位2、class定位特别注意:当class类型的属性值包含多个分割值,$(.s_tab s_tab_1z9n…...

ChatGPT可能马上取代你,这是它能做的十个工作

ChatGPT 的横空出世,在业界掀起了惊涛骇浪。专家表示,ChatGPT 和相关人工智能技术可能会威胁到一些工作岗位,尤其是白领工作。 自去年11月发布以来,新型聊天机器人模型 ChatGPT 已经被用于各种各样的工作:撰写求职信、编写儿童读物,甚至帮助学生在论文中作弊。谷歌公司发…...

ubuntu转储coredump

方法一: 输入以下命令即可,其中${USER}为自己电脑的用户名: ulimit -c unlimited echo "/home/${USER}/core.%p" > /proc/sys/kernel/core_pattern 方法二: Disable apport : sudo systemctl stop apport.servicesudo system…...

基于单片机的毕业设计推荐

** 2023基于单片机的毕业设计推荐: ** 1、基于51单片机的多功能门禁系统(低端、功能限制较大)。 2、基于单片机的多功能实时时钟。 3、基于单片机的音乐播放器。 4、基于STM32单片机的多功能门禁系统(高端、没有限制&#xff09…...

APP测试中ios和androis的区别,有哪些注意点

目录 一、运行机制不同 二、对app内存消耗处理方式不同 三、后台制度不同 四、最高权限指令不同 五、推送机制不同 六、抓取方式不同 七、灰度发版机制不同 八、审核机制不同 总结感谢每一个认真阅读我文章的人!!! 重点:…...

使用 Xcode 创建第一个 Objective-C 命令行程序 HelloWorld

总目录 iOS开发笔记目录 从一无所知到入门 文章目录创建项目运行项目,查看日志输出同一项目下新增子目录,切换要运行的 Target创建项目 打开 Xcode ,Create a new Xcode project 接下来的默认界面: 切换到 macOS 下&#xff…...

【蓝桥杯集训8】哈希表专题(3 / 3)

目录 手写哈希表 1、开放寻址法 2、拉链法 字符串前缀哈希表法 2058. 笨拙的手指 - 哈希表 秦九韶算法(进制转换) 枚举 秦九韶算法——将x进制数转化为十进制数 手写哈希表 活动 - AcWing 1、开放寻址法 设 h(x)k,也就是 x 的哈希值…...

Java Scanner 类,超详细整理,适合新手入门

目录 一、什么是 Java Scanner 类? 二、引用数据类型 1、引用数据类型的定义 三、Scanner 类有哪些常用方法? hasNext()用法 四、next() 与 nextLine() 区别 next(): nextLine(): 五、使用 next 方法 五、使用 nextLine方法 一、什…...

干货 | 中小企业选型 Elasticsearch 避坑指南

1、线上常见问题在我线下对接企业或线上交流的时候,经常会遇到各种业务场景不同的问题。比如,常见问题归类如下:常见问题1:ES 适合场景及架构选型问题。公司的核心业务是做企业员工健康管理,数据来自电子化后的员工体检…...

全局组件和局部组件

全局组件第一种定义方法:A、创建自己的组件:Loading.vueB、在main.js文件中引入组件并注册import Vue from vue import App from ./App.vue import * as filters from ./filterimport quanjuzujian from ./components/quanjuzujian.vueVue.component(qua…...

提取括号中的内容

正则能解决不嵌套的括号内容提取问题遇到一个问题,就是需要提取字符串中每一个中括号里的内容,在网上搜了一下,发现用正则表达式(\[[^\]]*\])可以提取中括号中的内容,以下面文本为匹配对象:PerformanceManager[第1个中…...

数据结构-算法的空间复杂度(1.2)

目录 1.空间复杂度 1.1 例子 1.2 空间的特殊性质 写在最后: 1.空间复杂度 空间复杂度也是一个数学表达式, 是对一个算法在运行过程中临时占用存储空间大小的量度。 他也是用大O渐进表示法。 1.1 例子 例1: 冒泡排序: v…...

【总结】python3启动web服务引发的一系列问题

背景 在某行的实施项目,需要使用python3环境运行某些py脚本。 由于行内交付的机器已自带python3 ,没有采取自行安装python3,但是运行python脚本时报没有tornado module。 错误信息 ModuleNotFoundError:No module named ‘torn…...

Linux:基于libevent读写管道代码,改进一下上一篇变成可以接收键盘输入

对上一篇进行改进&#xff0c;变成可以接收键盘输入&#xff0c;然后写入管道&#xff1a; 读端代码&#xff1a; #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <s…...

C语言格式化输出总结:%d,%c,%s,%f, %lf,%m.nd,%m.nf,%m.ns 以及sprintf函数

凡事发生必将有益于我&#xff0c;高手&#xff0c;从来都不仅仅是具备某种思维的人&#xff0c;而是那些具备良好学习习惯的人&#xff0c;成为高手&#xff0c;无他&#xff0c;手熟尔&#xff01;加油在最近的学习之中&#xff0c;对于格式化输出这个知识点&#xff0c;这里…...

Nginx之反向代理、负载均衡、动静分离。

Nginx之反向代理、负载均衡、动静分离。 1、Nginx是啥&#xff1f; 轻量级Web服务器、反向代理服务器、电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器 在 BSD-like 协议下发行、占内存少、并发高&#xff08;同时处理请求能力&#xff09;。 2、安装 官网&#xf…...

0401不定积分的概念和性质-不定积分

文章目录1 原函数与不定积分的概念1.1 原函数1.2 原函数存在定理1.3 不定积分2 不定积分的性质3 基本积分表4 例题后记1 原函数与不定积分的概念 1.1 原函数 定义1 如果在区间I上&#xff0c;可导函数F(x)的导航为f(x)&#xff0c;即对任一x∈Ix\in Ix∈I&#xff0c;都有 F′…...

数组中的各种迭代API方法手写

js的数组上有很多实用的方法&#xff0c;不论是在遍历数组上&#xff0c;还是在操作数组内元素上&#xff0c;它有许多不同的遍历数组的方法&#xff0c;同时它还有着可以直接操作数组中间元素的方法。 接下来&#xff0c;我来带大家手写数组里的 遍历方法 。 Array.forEach(…...

详解量子计算:相位反冲与相位反转

前言 本文需要对量子计算有一定的了解。需要的请翻阅我的量子专栏&#xff0c;这里不再涉及基础知识的科普。 量子相位反冲是什么&#xff1f; 相位反转&#xff08;phase kickback&#xff09;是量子计算中的一种现象&#xff0c;通常在量子算法中使用&#xff0c;例如量子…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

A2A JS SDK 完整教程:快速入门指南

目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库&#xff…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

stm32wle5 lpuart DMA数据不接收

配置波特率9600时&#xff0c;需要使用外部低速晶振...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 &#xff0c;不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源&#xff08;最常用&#xff09; conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...