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连接…...
揭秘AI写教材技巧!利用AI教材写作实现低查重、高质量教材编写!
教材创作:AI工具助力原创与合规平衡 在教材编写过程中,如何做到原创与合规的平衡是一个重要的议题。很多时候,创作者会在借鉴优秀教材时担心查重率超标,而在自行撰写知识点时又可能面临逻辑不够严谨和内容不准确的问题。引用他人…...
PHP 8.9 JIT在高并发API网关中的真实表现(对比PHP 8.2/8.3:QPS+312%,内存下降38%)
第一章:PHP 8.9 JIT正式落地:高并发API网关性能跃迁的里程碑PHP 8.9 并非官方版本号——这是虚构设定,但本章基于真实技术演进逻辑构建:以 PHP 8.0 引入的 Tracing JIT 为基石,结合社区对极致 API 网关性能的持续优化诉…...
从理论到实践:NMPC轨迹跟踪控制器的非线性优化与Simulink仿真验证
1. NMPC与MPC的核心差异:为什么非线性问题需要特殊处理? 我第一次接触NMPC(非线性模型预测控制)时,最困惑的问题是:既然MPC已经能解决大多数控制问题,为什么还要大费周章处理非线性版本…...
Modbus通信调试难题困扰你?这款开源工具让你轻松成为工业自动化专家
Modbus通信调试难题困扰你?这款开源工具让你轻松成为工业自动化专家 【免费下载链接】ModbusTool A modbus master and slave test tool with import and export functionality, supports TCP, UDP and RTU. 项目地址: https://gitcode.com/gh_mirrors/mo/ModbusT…...
零基础部署Clawdbot+Qwen3-32B:一键开启智能对话Web界面
零基础部署ClawdbotQwen3-32B:一键开启智能对话Web界面 1. 为什么选择这个方案 你是否遇到过这样的困境:好不容易在本地部署了大语言模型,却卡在了如何让团队成员方便使用的环节?传统的API调用方式对非技术人员极不友好…...
Z-Image-GGUF多场景应用:IP形象设计、PPT插图生成、短视频封面批量制作
Z-Image-GGUF多场景应用:IP形象设计、PPT插图生成、短视频封面批量制作 1. 引言:从技术工具到生产力伙伴 想象一下这个场景:你正在为一个新品牌设计IP形象,手绘了几版草图都不满意;或者明天就要交一份重要的PPT报告&…...
AI日报 · 2026年4月9日
科技类:Anthropic 发布 Claude 4.5:史上最强推理能力,上线"思维链可视化"调试工具 4月8日,Anthropic 发布 Claude 4.5,推理能力大幅提升,尤其在复杂多步推理任务上超越 GPT-6 早期测试版。同时上…...
SpringBoot3与OAuth2.1实战:从/oauth/token到/oauth2/token的平滑迁移指南
1. 为什么需要从/oauth/token迁移到/oauth2/token 最近在升级SpringBoot3项目时,遇到了一个棘手的问题:原先运行良好的OAuth2认证接口突然失效了。仔细排查后发现,原来是Spring Security 6.x彻底重构了OAuth2的实现方式,最直观的…...
轻量嵌入模型实战:all-MiniLM-L6-v2部署与简单应用
轻量嵌入模型实战:all-MiniLM-L6-v2部署与简单应用 还在为文本搜索、智能问答或者文档分类项目寻找一个既快又准的文本向量化工具而发愁吗?传统的BERT模型虽然效果好,但动辄几百兆的体积和缓慢的推理速度,在资源有限的生产环境中…...
Pip生成requirements.txt文件
在Python开发中,requirements.txt文件是一个非常重要的文件,它列出了项目所需的所有外部Python库及其版本号。这对于项目的部署和版本控制非常有帮助,因为它确保了所有开发者和部署环境都能使用相同版本的库。 如何生成requirements.txt文件 …...
