Vivado:使用 ILA 进行在线调试

Vivado:使用 ILA 进行在线调试

目录

一、ILA介绍

二、ILA使用步骤

(1)设计部分

(2)调用ILA IP核

(3)例化ILA IP核

(4)编译综合

三、ILA在线调试

(1)手动运行

(2)运行触发条件

(3)连续触发

一、ILA介绍

        Vivado中的ILA(Integrated Logic Analyzer)即集成逻辑分析仪,是一种在线调试工具。ILA允许用户在FPGA上执行系统内的调试,通过实时抓取FPGA内部数字信号的波形,帮助我们分析逻辑错误的原因,从而更有效地进行debug。类似于Quartus中的SignalTap II,也类似于片上的逻辑分析仪。

        相较于编写testbench仿真文件仿真debug的方式,使用ILA调试的方法不写tb仿真文件从而节省时间,可直接上板调试并查看波形。

二、ILA使用步骤

        ILA常以IP核的方式调用,可以在IP Catalog中搜索ILA,找到该IP核后进行配置。 配置选项包括:样本数据深度、探针数量、探针位宽等等。配置完成后,在顶层模块RTL代码中例化ILA IP核,接着正常烧录程序上板调试。 

(1)设计部分

        假设已有一个编译成功的工程需要debug调试,我这里直接给一个案例。

        工程实现的功能为:通过状态机来实现4个led灯循环点亮,时间间隔0.5秒。

`timescale 1ns /1ps module LED_ILA( //状态机实现4个led灯循环点亮,时间间隔0.5秒 input wire clk, //100MHz,10ns input wire rst_n, output reg [3:0]led ); reg [25:0]count = 26'd1; reg [2:0]state = 3'b000; reg [2:0]next_state = 3'b000; parameter count_max = 26'd5000_0000; parameter IDLE = 3'b000; parameter s1 = 3'b001; parameter s2 = 3'b010; parameter s3 = 3'b011; parameter s4 = 3'b100; always@(posedge clk or negedge rst_n)begin//计数器 if(!rst_n) count <= 26'd1; else if(count == count_max) count <= 26'd1; else count <= count + 26'd1; end always@(posedge clk or negedge rst_n)begin//state状态转换 if(!rst_n) state <= 3'b000; else if(count == count_max) state <= next_state; end always@(*)begin//next_state状态转换 if(!rst_n) next_state <= 3'b000; else begin case(state) IDLE: next_state <= s1; s1: next_state <= s2; s2: next_state <= s3; s3: next_state <= s4; s4: next_state <= s1; default: next_state <= IDLE; endcase end end always@(*)begin//led输出信号 if(!rst_n) led <= 4'b0000; else begin case(state) IDLE: led <= 4'b0000; s1: led <= 4'b0001; s2: led <= 4'b0010; s3: led <= 4'b0100; s4: led <= 4'b1000; default: led <= 4'b0000; endcase end end endmodule

        接着TOP.v顶层模块文件,把上面这个模块例化进去即可。不过之后还要例化IP核,所以代码在后半部分写完后再给出。

(2)调用ILA IP核

        1.按照如下步骤搜索ILA调用IP核,双击" ILA(Integrated Logic Analyzer)"

        2.进入ILA配置界面,完成基本设置:设置名称、探针数、样本数据深度。其他参数一般用不到保持默认。

(我要看波形的信号有:rst_n、led、count、state所以有4个探针,样本数据深度够用默认1024,即每个有效clk采样一次,采样1024个clk时的数据)

        3.接着再当前界面继续设置探针宽度:

(根据rst_n、led、count、state4个信号宽度,依次设置好位宽即可)

        4.再点击OK之后,会弹出该界面,选项保存默认点击“generate”生成IP核,

        5.这个时候要等一段时间等ip核生成完毕(转圈即正在生成),完毕之后可以看到文件多了一个IP核即ila_o模块。

(3)例化ILA IP核

接着在TOP.v顶层模块文件内例化ILA IP核。并完成连接端口信号:

`timescale 1ns / 1ps module TOP( input wire clk, input wire rst_n, output wire [3:0]led ); LED_ILA u_LED_ILA( //例化设计的模块 .clk (clk), .rst_n (rst_n), .led (led) ); ila_0 u_ila_0( //例化ILA IP核 .clk (clk), .probe0 (rst_n), .probe1 (led), .probe2 (u_LED_ILA.count), .probe3 (u_LED_ILA.state) ); endmodule 

        途中会发现count和state是设计模块内定义的寄存器,无法直接连接,此时只需要以“u_LED_ILA.count”的方式连接,因为ILA可以读取模块寄存器内容。

        此外不同探针位宽可能不同,注意匹配待检测信号位宽,可以双击IP核查看探针位宽情况

(4)编译综合

        接着按照常规流程走:编译、综合、配置管脚、生成比特流文件、烧录开发板。准备进行ILA在线调试。

三、ILA在线调试

        程序烧录到开发板后,Vivado界面会自动弹出ILA的波形窗口如图所示:不过此时这个窗口是空的,是因为还没有触发采样。

         因为ILA是数据采样,不可能一直不停采,只能采有限个数据,即有信号触发或手动时开始对探测的信号进行数据采样。下面将介绍如何使用ILA在线调试:

(1)手动运行

        如图所示:点击运行按钮波形会立刻更新,此时红色光标的位置就是你点击运行按钮时的时刻(默认中点),它会在触发点周围进行1024次采样(对应前面设置的采样深度)。

        当然你也可以在左下角设置触发点的位置:比如我设置触发点为第100个,再运行一次,在波形里可以看到触发点位置改变了。(此外还可以设置波形显示的数据个数等等)

     

(2)运行触发条件

        如果我想看特定时刻附近的信号变化情况,手动触发就不适用了,我需要将该特定时刻作为触发点位置,因此需要添加触发条件实现自动触发:

        假如我想查看复位时刻其他信号的情况,就需要将复位时刻设置为触发条件,右下角位置添加触发信号并设置条件,我的模块中 rst_n 是低电平有效,因此触发条件为“1到0转变”。

        设置完成后再运行一次,会发现界面提示“等待触发”:

        这个时候只要你按下开发板的复位按钮(让rst_n产生一个1到0的转换的触发条件),波形界面就会刷新数据,如图所示:

       将黄色光标设置移动到触发点附近的位置将波形放大,就可以清楚看到其他信号变化情况了,可以看出复位时所有信号都成功复位:

        此外触发条件设置多种多样可以根据你的需求进行设置,这样debug起来更加方便快捷,比如要设置某信号到特定值时触发,我可以设置count计数到666的时候触发,运行效果如图所示:

(3)连续触发

        这个按钮就是连续触发,当选中这个按钮后不需要手动运行,只要满足触发条件他就会自动触发(每次触发都会刷新一次采集到的数据,显示的是最近一次的数据情况),比如当你设置count计数到666时触发,并选中“连续触发”,count计数每次到666时,波形界面就会刷新一次波形。

Read more

Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南

Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南 背景 在AI大爆发的2026年,两款工具正在改变开发者的工作方式:Trae-cn作为字节跳动推出的AI原生IDE,让编程变得前所未有的简单;OpenClaw(昵称"小龙虾")作为开源AI智能体框架,让AI从"能聊天"进化到"能干活"。 本文将详细介绍Trae-cn的安装与优势,并演示如何用它一句话完成OpenClaw的安装部署。 一、Trae-cn:AI原生编程利器 1.1 什么是Trae-cn Trae-cn是字节跳动推出的AI原生集成开发环境(IDE),完全免费,支持Windows和macOS双平台。与传统的"IDE + AI插件"模式不同,Trae-cn从底层架构就将AI能力深度融入开发工作流,实现了真正的AI原生体验。 1.2 Trae-cn的核心优势 内置顶级AI模型 Trae-cn内置了多款顶级AI模型,无需额外配置: 模型特点适用场景Claude-3.5推理能力强,代码质量高复杂逻辑开发、

华为云Flexus+DeepSeek征文|云端智算:华为云AI体验算力部署·如何添加华为云的大模型搭建实时翻译小助手

华为云Flexus+DeepSeek征文|云端智算:华为云AI体验算力部署·如何添加华为云的大模型搭建实时翻译小助手

前引:《云端智算:华为云AI体验算力部署实践》并非一篇传统的技术论文,而是一次穿越技术边界的探索之旅。我们正处于一个算力决定创新边界的时代。过去,企业对AI的想象往往被算力的天花板所限制。而今天,云原生技术和先进基础设施正在重新定义技术的可能性边界。本文将深入解析如何在华为云平台上构建一个既灵活又高效的AI基础设施,揭示从零到一的技术实践逻辑~ 这不仅仅是一份技术部署手册,更是一次关于"技术如何重新定义创新"的思考实验。我们将通过DeepSeek-V3/R1服务器的部署,展现企业级AI基础设施的构建艺术;通过Dify平台的实践,阐释AI服务的弹性与可扩展性;通过多维度的性能评估,诠释技术创新背后的系统性思维! 目录 一、华为云平台的技术优势 (1)基础设施 (2)安全与合规性 (3)大数据处理 二、DeepSeek-V3/R1商用开通 三、关键开通步骤与技术细节 四、体验DeepSeek R1/V3 (1)界面体验 (2)计费方式 (3)反应效率 五、

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程,3人团队提效800% 2026年3月,AI短剧创作领域迎来重磅精品。随着生成式视频技术的成熟,单打独斗式的“一人一剧”已成为可能,但团队协同、项目管理的效率瓶颈却日益凸显——素材散落在各个软件工具和各个文件夹,版本更迭混乱,审阅沟通反复低效。针对这一痛点,全新AI短剧(视频)协同创作平台AniShort正式发布,以“为AI短剧协作而生”为使命,重新定义团队化、工业化短剧生产方式。 一、AI短剧制作流水线(提效100%):从“生成零散视频”到“全流程协同管理” 当前市面上的AI视频工具多聚焦于单点功能——生成脚本、文生图、图生视频,彼此割裂。创作者不得不在多个软件间反复切换,项目文件、版本记录、协作反馈分散在聊天记录和本地文件夹中,难以形成高效闭环。 AniShort的诞生,正是为了打破这一困局。平台将创意策划、视觉预演、制作执行、审阅交付全链路整合于一体,构建从灵感到成品的“All-in-One”创作中枢。

【保姆级教程】小白也能搞定!手把手教你部署AI小说生成器

【保姆级教程】小白也能搞定!手把手教你部署AI小说生成器

目录 一、 磨刀不误砍柴工:环境准备 二、 第一次安装:给代码安个家 第一步:把项目“搬”回家 第二步:造一个专属“房间” 第三步:安装依赖 第四步:点火启动 三、 关机重启后:如何再次开启? 四、 关键一步:配置“大脑”(API接口) 五、开始你的创作 六、写在最后:为什么推荐用蓝耘做“大脑”? 在这个AI辅助创作爆发的时代,拥有一款属于自己的本地AI写作工具,无疑是许多文字工作者的梦想。最近拿到一份AI小说生成器的部署文档,虽然功能强大,但对于非技术出身的朋友来说,那些代码和命令行多少有些“劝退”。 别担心,今天我们就把这份“天书”翻译成“人话”,手把手带你从零开始,搭建属于你的AI创作助手。无论你是第一次安装,还是关机后不知道怎么重启,这篇教程都能帮你搞定。