FPGA学习笔记(5)——硬件调试与使用内置的集成逻辑分析仪(ILA)IP核

news2024/11/22 23:40:20

如果要对信号进行分析,可以使用外置的逻辑分析仪,但成本较高,对初学者来说没有必要,可以使用Xilinx Vivado内自带的逻辑分析仪IP核对信号进行分析,不过需要占用一定的芯片资源。

本节采用上一节配置的LED灯闪烁代码,对其中的信号进行捕获分析。

1 引入IP核

1、点击IP Catalog

在这里插入图片描述

2、打开IP核。

IP Catalog窗口中搜索并选择ILA (Integrated Logic Analyzer),双击打开。

在这里插入图片描述

3、配置ILA
在General Options中:
(1)例化名称:Component Name 可以设置为默认
(2)监控类型:Monitor Type设置为Native
(3)探针数量:Number of Probes按照需要监控的端口数量进行配置,如果要监控
(4)采样深度:Sample Data Depth设置的越大,一次能看到的数据量越多,但对FPGA芯片的DRAM消耗也越多。

在这里插入图片描述

在Probe_Ports中:
根据前一页的设置,能看到3个探针端口,分别设置不同的位宽。

在这里插入图片描述

点击2次OK,自动新建文件夹存放ila的IP核。

4、设置IP核综合模式:
弹出的Generate Output Products窗口,Synthesis Options选项如果选择Global,则每次修改文件都会让此IP核重新综合(调整IP核的位置和电路),如果选择Out of context per IP,则每次修改文件后都不会对IP核造成修改。因此这里选择Out of context per IP(OOC)。

在这里插入图片描述
点击Generate生成IP核。

2 例化IP核

等待一小会儿,直到IP核加载完成。

1、打开模板文件:在Sources窗口下点击IP Sources,然后点击ila_0Instantiation Template(例化模板),双击ila_0.veo打开模板文件。

在这里插入图片描述

2、复制例化代码:将ila_0.veo中的代码复制到顶层模块000_test_project.v中,并修改模块名称和探针所对应的端口。

// ila_0.veo中代码
ila_0 your_instance_name (
	.clk(clk), // input wire clk


	.probe0(probe0), // input wire [0:0]  probe0  
	.probe1(probe1), // input wire [1:0]  probe1 
	.probe2(probe2) // input wire [25:0]  probe2
);

需要注意所连接的变量位宽需要和探针位宽相对应。

// 000_test_project.v
module test_project(
    input sys_clk,
    input sys_rst_n,
    
    output [1:0] led
);

// reg define
reg [25:0] cnt;

assign led = (cnt <= 26'd2500_0000) ? 2'b01 : 2'b10;

always @ (posedge sys_clk or negedge sys_rst_n) begin
    if(!sys_rst_n)
        cnt <= 26'd0;
    else if(cnt < 26'd5000_0000)
        cnt <= cnt + 1'b1;
    else
        cnt <= 26'd0;
end

// 新加的模块 start
ila_0 my_ila_0 (
	.clk(sys_clk), // input wire clk

	.probe0(sys_rst_n), // input wire [0:0]  probe0  
	.probe1(led), // input wire [1:0]  probe1 
	.probe2(cnt) // input wire [25:0]  probe2
);
// 新加的模块 end

endmodule

代码编写完成后保存。

3 ila试验

3.1 综合、实现、生成比特流

可以直接点击生成比特流,这三步软件会自动完成。
点击软件左侧Program and DebugGenerate Bitstream,在弹出的窗口Synthesis is Out-of-date后选择Yes

在这里插入图片描述

在弹出的Launch Runs窗口中自行选择Number of jobs CPU线程数,线程越多软件处理速度越快,然后点击OK

在这里插入图片描述

等待片刻,直到软件处理完成。点击Project Summary可以看到SynthesisImplementation都显示绿色的√。

在这里插入图片描述

点开Device查看FPGA中PL的使用情况,可以发现相对于原来的让LED闪烁的逻辑电路,本实验中添加了ila后的使用了更多的逻辑资源。

不带ila的LED闪烁试验电路:

在这里插入图片描述

带ila的LED闪烁试验电路:

在这里插入图片描述

3.2 下载程序

1、连接设备:拿出正点原子开发板,连接电脑。
点击Vivado的Open Hardware ManagerOpen targetAuto Connect

在这里插入图片描述

底部调试窗口Tcl Console显示如下信息,标明已经连接上开发板。

start_gui
open_project F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.xpr
open_project F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.xpr
Scanning sources...
Finished scanning sources
INFO: [IP_Flow 19-234] Refreshing IP repositories
INFO: [IP_Flow 19-1704] No user IP repositories specified
INFO: [IP_Flow 19-2313] Loaded Vivado IP repository 'G:/Xilinx/Vivado/2018.2/data/ip'.
open_project: Time (s): cpu = 00:00:15 ; elapsed = 00:00:08 . Memory (MB): peak = 853.520 ; gain = 123.812
update_compile_order -fileset sources_1
reset_run synth_1
launch_runs impl_1 -to_step write_bitstream -jobs 7
[Tue Jun 25 21:29:30 2024] Launched synth_1...
Run output will be captured here: F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.runs/synth_1/runme.log
[Tue Jun 25 21:29:30 2024] Launched impl_1...
Run output will be captured here: F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.runs/impl_1/runme.log
open_run impl_1
INFO: [Netlist 29-17] Analyzing 106 Unisim elements for replacement
INFO: [Netlist 29-28] Unisim Transformation completed in 1 CPU seconds
INFO: [Project 1-479] Netlist was created with Vivado 2018.2
INFO: [Device 21-403] Loading part xc7z020clg400-2
INFO: [Project 1-570] Preparing netlist for logic optimization
INFO: [Timing 38-478] Restoring timing data from binary archive.
INFO: [Timing 38-479] Binary timing data restore complete.
INFO: [Project 1-856] Restoring constraints from binary archive.
INFO: [Project 1-853] Binary constraint restore complete.
Reading XDEF placement.
Reading placer database...
Reading XDEF routing.
Read XDEF File: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.289 . Memory (MB): peak = 1850.578 ; gain = 0.000
Restored from archive | CPU: 0.000000 secs | Memory: 0.000000 MB |
Finished XDEF File Restore: Time (s): cpu = 00:00:00 ; elapsed = 00:00:00.289 . Memory (MB): peak = 1850.578 ; gain = 0.000
INFO: [Project 1-111] Unisim Transformation Summary:
  A total of 58 instances were transformed.
  CFGLUT5 => CFGLUT5 (SRLC32E, SRL16E): 52 instances
  RAM32M => RAM32M (RAMD32, RAMD32, RAMD32, RAMD32, RAMD32, RAMD32, RAMS32, RAMS32): 6 instances

open_run: Time (s): cpu = 00:00:30 ; elapsed = 00:00:25 . Memory (MB): peak = 1926.605 ; gain = 963.371
open_hw
connect_hw_server
INFO: [Labtools 27-2285] Connecting to hw_server url TCP:localhost:3121
INFO: [Labtools 27-2222] Launching hw_server...
INFO: [Labtools 27-2221] Launch Output:

****** Xilinx hw_server v2018.2
  **** Build date : Jun 14 2018-20:42:52
    ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.


open_hw_target
INFO: [Labtoolstcl 44-466] Opening hw_target localhost:3121/xilinx_tcf/Digilent/210512180081
set_property PROGRAM.FILE {F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.runs/impl_1/test_project.bit} [get_hw_devices xc7z020_1]
set_property PROBES.FILE {F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.runs/impl_1/test_project.ltx} [get_hw_devices xc7z020_1]
set_property FULL_PROBES.FILE {F:/FPGA/001_ZYNQ/004_ila_vio/004_ila_vio.runs/impl_1/test_project.ltx} [get_hw_devices xc7z020_1]
current_hw_device [get_hw_devices xc7z020_1]
refresh_hw_device [lindex [get_hw_devices xc7z020_1] 0]
INFO: [Labtools 27-1435] Device xc7z020 (JTAG device index = 1) is not programmed (DONE status = 0).

2、下载程序:
点击左上角的Program device下载程序。

在这里插入图片描述

可以发现下方Debug probes file出现了.ltx文件,内部包含了调试的一些探针信息,点击Program下载程序。
在这里插入图片描述

3、查看波形:
在下载完成后,Vivado软件会弹出Waveform - hw_ila_1波形图窗口,三个探针已经添加到波形图中。

在这里插入图片描述
窗口按钮部分功能:

  • Add +:添加信号。
  • Remove Selected -:删除信号。
  • Toggle auto re-trigger mode for this ILA core:自动触发。
  • Run trigger for this ILA core:手动触发。
  • Run trigger immediate for this ILA core >>:立即触发。
  • Stop trigger for this ILA core:停止触发。
  • Export ILA waveform data:导出逻辑分析仪波形数据。
  • Zoom In:放大。
  • Zoom Out:缩小。

点击Run trigger for this ILA core,探针会捕获信号。然后点击放大。

在这里插入图片描述

右键Name列表下的信号,可以修改信号显示的Radix进制,这里可以选择为Unsigned Decimal无符号十进制。

在这里插入图片描述

4、设置触发条件:
右下角的Trigger Setup可以设置触发条件,一位可以设置逻辑1触发(logic one)、逻辑0触发(logic zero)、上升沿触发(R)、下降沿触发(F)、双端触发(B)等等。多位可以设置为到一定的值触发。

此处设置cnt的值为0000000时触发。
在这里插入图片描述

再次点击Run trigger for this ILA core,可以发现红色的T触发标记出现在了cnt为0的时候。此时led_OBUF[1:0]也变成从2变成了1,代表LED灯发生交替变化。

在这里插入图片描述

3.3 调试完毕后处理

1、断开设备连接:右键PROGRAM AND DEBUG,点击Close即可断开开发板与电脑的连接。
在这里插入图片描述

2、删除调试模块:
由于ILA会占用较多的硬件资源,因此在debug完成后可以直接在顶层文件中注释或删除ila的模块代码。

//000_test_project.v

//ila_0 my_ila_0 (
//	.clk(sys_clk), // input wire clk

//	.probe0(sys_rst_n), // input wire [0:0]  probe0  
//	.probe1(led), // input wire [1:0]  probe1 
//	.probe2(cnt) // input wire [25:0]  probe2
//);

代码保存后,重新生成比特流文件就可以获得原来资源使用较少的工程。

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

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

相关文章

YOLOv5改进(八)--引入Soft-NMS非极大值抑制

文章目录 1、前言2、各类NMS代码实现2.1、general.py 3、各类NMS实现3.1、Soft-NMS3.2、GIoU-NMS3.3、DIoU-NMS3.4、CIoU-NMS3.5、EIoU-NMS 4、目标检测系列文章 1、前言 目前yolov5使用的是NMS进行极大值抑制&#xff0c;本篇文章是要将各类NMS添加到yolov5中&#xff0c;同时…

2024最适合初学者人手一本的LLM大语言模型综述,爆火全网!(附PDF)

今天给大家推荐一本大模型&#xff08;LLM&#xff09;这块的一本外文书&#xff0c;经过整理已经出中文版了&#xff0c;就是这本《大型语言模型综述》&#xff01;本书在git上有9.2k star&#xff0c;还是很不错的一本大模型方面的书。 本教程内容主要内容&#xff1a;中文版…

高度内卷下,企业如何通过VOC(客户之声)做好竞争分析?

VOC&#xff0c;即客户之声&#xff0c;是一种通过收集和分析客户反馈、需求和期望&#xff0c;来洞察市场趋势和竞争对手动态的方法。在高度内卷的市场环境下&#xff0c;VOC不仅能够帮助企业了解客户的真实需求&#xff0c;还能为企业提供宝贵的竞争情报&#xff0c;助力企业…

STL——常用算法(二)

一、常用拷贝和替换算法 1.copy #include <iostream> #include <vector> #include <algorithm> using namespace std; void printVector(int val) {cout << val << " "; } void test01() {vector<int>v1;for (int i 0; i <…

监控https证书的到期时间

实现该功能&#xff0c;不用借助第三方库&#xff0c;用go的标准库就足够了… 以下程序可以获取这些域名的SSL证书的到期时间&#xff0c;并在证书距离现在不足7天过期时打印提示&#xff1a; package mainimport ("crypto/tls""fmt""net""…

酒店强心剂——VR智慧酒店上线,史诗级加强入住率

出门在外&#xff0c;什么才是我们最为头疼的问题呢&#xff1f;衣食住行中&#xff0c;住的问题尤其大&#xff0c;尤其是不熟悉当地情况下&#xff0c;预定酒店才是让人头疼的问题。酒店行业该如何化解这一难题呢&#xff1f;VR全景开启智能化酒店宣传获客新模式&#xff0c;…

Hive笔记-6

6.2.8 聚合函数 1) 语法 count(*)&#xff0c;表示统计所有行数&#xff0c;包含null值&#xff1b; count(某列)&#xff0c;表示该列一共有多少行&#xff0c;不包含null值&#xff1b; max()&#xff0c;求最大值&#xff0c;不包含null&#xff0c;除非所有值都是null&a…

高考填报志愿攻略,5个步骤选专业和院校

在高考完毕出成绩的时候&#xff0c;很多人会陷入迷茫中&#xff0c;好像努力了这么多年&#xff0c;却不知道怎么规划好未来。怎么填报志愿合适&#xff1f;在填报志愿方面有几个内容需要弄清楚&#xff0c;按部就班就能找到方向&#xff0c;一起来了解一下正确的步骤吧。 第…

Docker中修改TiDB数据库密码(类似mysql)

1.Docker容器运行TiDB pingcap/tidb:last 2.登陆容器系统&#xff1a; 3.在容器中安装mysql客户端&#xff1a; 4.空密码登陆TiDB 5.修改TiDB密码并退出 6.使用修改后的密码登陆验证&#xff1a;

福州代理记账服务财务专业知识会计助手

福州的代理记服务可探索企业和个体工商户处理财务和会计工作。选择合适的代理记服务不仅可以节省成本&#xff0c;还可以确保财务工作专业、合规。以下是一些关于代理记服务的关键信息和财务信息&#xff0c;供您参考&#xff1a; https://www.9733.cn/news/detail/180.html …

TensorFlow开源项目

欢迎来到 Papicatch的博客 文章目录 &#x1f349;TensorFlow介绍 &#x1f349;主要特点和功能 &#x1f348;多语言支持 &#x1f348;灵活的架构 &#x1f348;分布式训练 &#x1f348;跨平台部署 &#x1f348;强大的工具链 &#x1f348;丰富的社区和生态系统 &a…

缓冲池管理器

开发环境搭建 克隆 git clone https://github.com/cmu-db/bustub.git cd bustub/ 切换分支 git checkout -b branchname v20221128-2022fall 创建docker镜像 docker build . -t bustub_img 创建容器 docker create -it --name bustub_container -v “E:/cmu/bustub”:“/bustu…

JeecgFlow事件网关概念及案例

事件网关 通常网关基于连线条件决定后续路径&#xff0c;但事件网关有所不同&#xff0c;其基于事件决定后续路径。事件网关的每条外出顺序流都需要连接一个捕获中间事件。 事件网关只有分支行为&#xff0c;流程的走向完全由中间事件决定。可以从多条候选分支中选择事件最先达…

Core ML 简介:构建简单的图像识别应用程序

在 2017 年的 WWDC 上&#xff0c;苹果发布了许多令人兴奋的框架和 API 供我们开发人员使用。在所有新框架中&#xff0c;最受欢迎的框架之一肯定是Core ML。Core ML 是一个可用于将机器学习模型集成到您的应用程序中的框架。Core ML 最好的部分是您不需要有关神经网络或机器学…

计算机组成原理 | CPU子系统(2)指令系统

CISC和RISC指令集 指令的一般格式 四种结构 R型&#xff1a;寄存器型&#xff08;四地址&#xff09; I型&#xff1a;立即数型&#xff08;三地址&#xff09; J型&#xff1a;跳转型&#xff08;address以立即数的形式给出&#xff09; 格式规整&#xff0c;高六位都是操作…

昇思25天学习打卡营第01天|基本介绍

作为曾经的javaer&#xff0c;本着不断学习的初心&#xff0c;报名了昇思25天的课程&#xff0c;希望自己能学会点东西的目的。 昇思MindSpore介绍 昇思MindSpore是一个全场景深度学习框架&#xff0c;旨在实现易开发、高效执行、全场景统一部署三大目标。 其中&#xff0c;…

解决chrome浏览器总是将对站点的http访问改为https的问题

问题&#xff1a;vue项目本地运行出来的地址是http开头的&#xff0c;但在chrome浏览器中无法访问&#xff0c;在Edge浏览器就可以&#xff0c;发现是chrome总是自动将http协议升级为https。 已试过的有效的方法&#xff1a; 一、无痕模式下访问 无痕模式下访问不会将http自…

《中国储运》杂志社中国储运杂志社中国储运编辑部2024年第6期目录

卷首语 提升物流质效 助力经济发展 楚耘; 12 专栏 大力发展新质生产力 依托新模式新业态推动物流成本有效降低 房永斌; 16 访谈 中国国际发展知识中心副主任、国务院发展研究中心研究员魏际刚&#xff1a;对促进物流行业降本增效的十个建议 李静宇; 17-19 特别策划…

【摄像头标定】使用kalibr进行双目摄像头标定(ros1、ros2)

使用kalibr进行双目摄像头标定 前言标定板标定①板端准备和录制②上位机准备和标定 前言 本文不是纯用ros1进行标定&#xff0c;需要ros1和ros2通信。给使用ros2进行开发&#xff0c;但又想用kalibr标定双目摄像头的小伙伴一个教程。本文双目摄像头的数据发布使用ros2&#xf…

MySQL中的Bin-log是什么?有什么作用?

Bin-log日志也被称之为二进制日志&#xff0c;作用与Redo-log类似&#xff0c;主要是记录所有对数据库表结构变更和表数据修改的操作&#xff0c;对于select、show这类读操作并不会记录。bin-log是MySQL-Server级别的日志&#xff0c;所有引擎都能用的日志&#xff0c;而redo-l…