VIVADO ILA IP进阶使用之任意设置ILA的采样频率
VIVADO ILA IP进阶使用之任意设置ILA的采样频率
VIVADO ILA IP和VIO IP结合使用任意设置ILA的采样频率
目录
前言
一、VIO IP的配置
二、ILA IP的配置
三、测试代码
四、测试结果
总结
前言
VIVADO中编写完程序上板测试时经常会用到viavdo自带的ILA逻辑分析仪IP核,在ILA IP核的产品手册中,明确说明采样时钟必须为永不停息的时钟,也就是只能是系统时钟或PLL、MMCM分频倍频出来的时钟,用户通过时序逻辑分频的时钟是无法使用的,这就造成了在采样深度有限情况下无法完整采集频率较低的数据,使用起来不方便,本文章介绍ILA的进阶使用,结合VIO IP可以任意改变ILA的采样频率且不会增加任何额外的资源。
提示:以下是本篇文章正文内容,下面案例可供参考
一、VIO IP的配置
只需要配置一个输出端口,控制采样频率,如下面两张图所示。第一张图设置输出端口,第二张图设置分频系数的位宽。
要有默认分频系数,大于0的整数。
二、ILA IP的配置
配置ILA的探针数量,切记要勾选capture control,抓取数据时会用到该功能。
设置各个探针的位宽,根据信号位宽进行设置。
三、测试代码
以下是测试代码,50MHz的系统时钟,控制Led的亮灭,代码生成了1kHz的时钟信号。
`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2025/01/19 20:29:13
// Design Name:
// Module Name: pl_led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module pl_led(input clk,input rst_n,output reg led);reg clk_1k=0;
reg [15:0] clk_cnt=0;
always @(posedge clk)
beginif(clk_cnt>=49_999)beginclk_cnt<=0;clk_1k<=~clk_1k;endelsebeginclk_cnt<=clk_cnt+1;end
endreg [15:0] cnt;
always @(posedge clk or negedge rst_n)
beginif(!rst_n)begincnt<=0;led<=0;endelse if(cnt>=1500)begincnt<=0;led<=~led;endelse if(clk_1k==1&&clk_cnt==9_999)begincnt<=cnt+1;endelsebegincnt<=cnt;led<=led;end
endwire [15:0] vio_freq_div;
vio_frequency u_vio_frequency (.clk(clk), // input wire clk.probe_out0(vio_freq_div) // output wire [15 : 0] probe_out0
);reg [15:0] trigger_cnt;
wire trigger;
always@(posedge clk or negedge rst_n)
beginif(!rst_n) begin;trigger_cnt <= 0;endelse if(trigger_cnt >= vio_freq_div-1) begintrigger_cnt <= 0;endelse begintrigger_cnt <= trigger_cnt + 1;end
endassign trigger = (trigger_cnt==vio_freq_div-1);ila_led u_ila_led (.clk(clk), // input wire clk.probe0(rst_n), // input wire [0:0] probe0 .probe1(led), // input wire [0:0] probe1 .probe2(clk_1k), // input wire [0:0] probe2 .probe3(clk_cnt), // input wire [15:0] probe3 .probe4(cnt), // input wire [15:0] probe4.probe5(trigger) // input wire [0:0] probe5
);endmodule
四、测试结果
第一次测试,设置分频系数就为默认的10。
按照下图设置ILA的捕获条件。
点击三角形符号进行采样。
以上设置采样时钟为系统时钟的10分频,点击红色框的运行按钮即可观察到clk_cnt采集出来的数据是以10递增的,程序里面设置的是每次在系统时钟的上升沿加1,可见采样频率缩小了10倍。
第二次测试,设置分频系数为50000。
以上设置采样时钟为系统时钟50MHz的50000分频,点击红色框的运行按钮即可观察到程序里面1kHz的时钟被采到了,同时cnt的数值也被采到了,可见采样频率缩小了50000倍。
另外,如果想以系统时钟的采样频率抓数据,点击>>即可实现,如下图所示。
总结
从以上测试结果可以看出,ILA+VIO结合的方式可以实现任意采样频率抓取数据,想抓那个数据都能抓到,只需通过vio就能控制采样频率,不会增加任何额外的资源,可以加速完成程序调试。
相关文章:

VIVADO ILA IP进阶使用之任意设置ILA的采样频率
VIVADO ILA IP进阶使用之任意设置ILA的采样频率 VIVADO ILA IP和VIO IP结合使用任意设置ILA的采样频率 目录 前言 一、VIO IP的配置 二、ILA IP的配置 三、测试代码 四、测试结果 总结 前言 VIVADO中编写完程序上板测试时经常会用到viavdo自带的ILA逻辑分析仪IP核&#x…...

网络编程-网络原理HTTP初识
文章目录 TCP/IP五层协议栈关于自定义协议常见自定义协议引入行文本格式XML格式JSONprotobuf HTTP原理非自定义的应用层协议HTTP的发展HTTP的传输模式HTTP协议中的代理模式和抓包工具 TCP/IP五层协议栈 具体的内容, 我们之前的网络初始里面有, 其实就是先前的计算机的发明者把…...

基于若依框架的动态分页逻辑的实现分析
如果让我们自己写分页查询的逻辑,应该怎么写呢? 在前端要完成分页的逻辑实际要做的工作还是挺多的。 分页查询应该支持查询参数的输入,对于一个有众多属性的列表,可能有很多查询参数,对于不同的参数类型,…...

51c~ONNX~合集1
我自己的原文哦~ https://blog.51cto.com/whaosoft/11608027 一、使用Pytorch进行简单的自定义图像分类 ~ONNX 推理 图像分类是计算机视觉中的一项基本任务,涉及训练模型将图像分类为预定义类别。本文中,我们将探讨如何使用 PyTorch 构建一个简单的自定…...

【数据结构篇】顺序表 超详细
目录 一.顺序表的定义 1.顺序表的概念及结构 1.1线性表 2.顺序表的分类 2.1静态顺序表 2.2动态顺序表 二.动态顺序表的实现 1.准备工作和注意事项 2.顺序表的基本接口: 2.0 创建一个顺序表 2.1 顺序表的初始化 2.2 顺序表的销毁 2.3 顺序表的打印 3.顺序…...
kubernetes 集群搭建(二进制方式)
Kubernetes 作为当今最流行的容器编排平台,提供了强大的功能来管理和扩展容器化应用。除了使用 kubeadm 等工具简化集群的创建过程外,直接通过二进制文件安装 Kubernetes 组件也是一种常见的方法。这种方式给予用户更多的控制权,并且适用于那…...

linux平台RTMP|RTSP播放器如何回调SEI数据?
我们在对接Linux平台RTMP|RTSP播放的时候,有遇到这样的技术需求,合作企业在做无人机视觉分析场景的时候,除了需要低延迟的拿到解码后的RGB|YUV数据,然后投递给他们自己的视觉算法处理模块外,还需要播放器支持SEI的回调…...
Vue uni-app免手动import
unplugin-auto-import 是一个流行的 JavaScript/TypeScript 插件,可以自动导入常用的库、API 或自定义函数,减少手动书写 import 语句的繁琐操作。它常用于 Vue、React 等框架,帮助开发者提高效率和减少样板代码。 核心功能: 自…...
7. 计算机视觉
计算机视觉(Computer Vision,简称 CV)是人工智能(AI)领域中的一个重要分支,旨在使计算机能够像人类一样“看”并理解数字图像或视频。它结合了计算机科学、数学、图像处理、模式识别、机器学习等多个学科&a…...
在服务器进行docker部署频繁提示permission denied
当你频繁遇到permission denied,证明当前用户的权限不够 可以参考如下操作: 1.创建用户组docker sudo groupadd docker把当前用户添加到docker用户组中 sudo usermod -aG docker $USER优点: 可以在不使用sudo的情况下运行docker命令...
c/c++ static
定义 修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在 main 函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它。修饰普通函数,表明函数的作…...
C#中System.Text.Json:从入门到精通的实用指南
一、引言 在当今数字化时代,数据的高效交换与处理成为软件开发的核心环节。JSON(JavaScript Object Notation)凭借其简洁、轻量且易于读写的特性,已然成为数据交换领域的中流砥柱。无论是前后端数据交互,还是配置文件…...

内存故障原因与诊断(Reasons and Diagnosis of Memory Failure)
内存故障原因与诊断 您是否曾遇到过电脑无法启动、黑屏、死机,或者系统卡顿的情况?这些问题看起来很复杂,实际上大多数都是内存故障引起的。内存是电脑的核心组成部分之一,任何小东西问题都可能导致系统死机,严重时甚…...

[操作系统] 进程状态详解
在操作系统中,进程是程序执行的基本单位,操作系统负责管理进程的生命周期。为了高效地管理进程,操作系统通过定义不同的进程状态来表示进程在不同时间点的行为。本文将详细介绍常见的进程状态及其相互之间的转换过程。 进程状态概述 在kerne…...

[论文阅读] (36)CS22 MPSAutodetect:基于自编码器的恶意Powershell脚本检测模型
《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…...

【Maui】下拉框的实现,绑定键值对
文章目录 前言一、问题描述二、解决方案三、软件开发(源码)3.1 创建模型3.2 视图界面3.3 控制器逻辑层 四、项目展示 前言 .NET 多平台应用 UI (.NET MA…...

Oracle 深入学习 Part 14:Managing Password Security and Resources(管理密码安全性和资源)
Profiles Profile 是一个以名称标识的集合,用于管理 密码 和 资源限制。 每个用户都对应一个profiles,可以通过 CREATE USER 或 ALTER USER 命令分配给用户。 Profiles 可以启用或禁用。 Profiles 可以关联到默认的 DEFAULT Profile。 密码管理&…...

C语言:位段
位段的内存分配: 1. 位段的成员可以是 int unsigned int signed int 或者是char (属于整形家族)类型 2. 位段的空间上是按照需要以4个字节( 类型 int )或者1个字节( char )的方式来开辟的。 3. 位段涉及…...

MPLS VPN 原理与配置
一.简介 MPLS,称之为多协议标签交换,在九十年代中期被提出来,用于解决传统IP报文依赖查表转发而产生的瓶颈,现多用于VPN技术,MPLS报头封装在数据链路层之上,网络层之下。本文为结合了华为技术和新华三技术…...

稳定的通信桥梁,CCLINKIE转ModbusTCP网关实现AGV运输的光速效应
三菱PLC与AGV机器人搬运车通过稳联技术协议转换网关建立通信 一、现场情况概述 - 三菱PLC:使用CC-Link IE协议进行通信。 - AGV机器人搬运车:使用Modbus TCP协议进行通信。 - 协议转换网关:使用稳联技术的协议转换网关将PLC和AGV连接…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
oracle与MySQL数据库之间数据同步的技术要点
Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异ÿ…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...