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

如果要对信号进行分析,可以使用外置的逻辑分析仪,但成本较高,对初学者来说没有必要,可以使用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) beginif(!sys_rst_n)cnt <= 26'd0;else if(cnt < 26'd5000_0000)cnt <= cnt + 1'b1;elsecnt <= 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
);
// 新加的模块 endendmodule

代码编写完成后保存。

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 instancesRAM32M => RAM32M (RAMD32, RAMD32, RAMD32, RAMD32, RAMD32, RAMD32, RAMS32, RAMS32): 6 instancesopen_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.mzph.cn/news/860730.shtml

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

相关文章

学习记录697@数据通信基础之异步通信和同步通信

最近在看计算机网络物理层部分&#xff0c;涉及到异步通信和同步通信&#xff0c;这个和通信知识相关。 异步通信和同步通信都是为了解决时钟同步问题&#xff0c;这个和编程中的同步和异步是不一样的概念。 时钟同步 我的理解是&#xff0c;发送者发送一系列信号&#xff0…

手机定位技术全解析:原理、发展与应用

1. 引言 背景介绍 最近&#xff0c;神仙姐姐刘亦菲主演的电视剧《玫瑰的故事》中的一段情节引发了广泛讨论。剧中&#xff0c;方协文&#xff08;丈夫&#xff09;对玫瑰&#xff08;妻子&#xff09;的控制欲变本加厉&#xff0c;竟然偷偷在她的手机上安装监控软件&#xff…

python笔记3

1.通过乘法多次打印&#xff0c;以及字符串相加的合体打印 xzzz yyyy print(xy) print(x*10)#与一个数为打印多少次 2.设置俩个变量&#xff0c;可以通过下面的方法来判断是否一个元素是否在另一个元素中&#xff0c;返回bool值 xzzz yyyy print(xy) print(x*10)#与一个数为打…

Android app Java层异常捕获方案

背景&#xff1a; 在Android app运行中&#xff0c;有时一些无关紧要的异常出现时希望App 不崩溃&#xff0c;能继续让用户操作&#xff0c;可以有效提升用户体验和增加业务价值。 新流程&#xff1a; 哪些场景需要Catch Crash Config配置信息&#xff1a; 支持从网络上获…

PPT录屏怎么录?PPT录屏,3种方法简单操作

在数字化时代&#xff0c;PPT已经成为我们日常工作、学习和生活中不可或缺的一部分。无论是商务报告、教学课件还是产品展示&#xff0c;PPT都能帮助我们更加生动、直观地传递信息。然而&#xff0c;有时候我们会面临PPT录屏怎么录的问题。这时&#xff0c;一个好的PPT录屏功能…

合同与合规管理:国企数字化转型之路

在全球经济一体化的背景下&#xff0c;国有企业作为国家经济的重要支撑&#xff0c;其稳健的操作和高效的管理备受瞩目。随着市场经济条件的不断演变和法规的日益严格&#xff0c;传统的手动处理合同和合规管理方式已逐步显示出局限性。采纳先进的合同管理系统和合规管理系统从…

【C++11(二)】lambda表达式和可变参数模板

一、可变参数模板 C11的新特性可变参数模板 能够让您创建可以接受 可变参数的函数模板和类模板 // Args是一个模板参数包&#xff0c;args是一个函数形参参数包 // 声明一个参数包Args...args&#xff0c;这个参数包中可以包含0到任意个模板参数。 template <class ...Arg…

科普文:贝叶斯过滤器判定垃圾邮件

简介 贝叶斯分类的运作是借着使用标记(一般是字词&#xff0c;有时候是其他)与垃圾邮件、非垃圾邮件的关连&#xff0c;然后搭配贝叶斯推断来计算一封邮件为垃圾邮件的可能性。 贝叶斯垃圾邮件过滤是非常有威力的技术&#xff0c;可以修改自己以符合个别使用者的需要&#xff0…

C# Onnx Yolov8-OBB 旋转目标检测 行驶证副页条码+编号 检测,后续裁剪出图片并摆正显示

C# Onnx Yolov8-OBB 旋转目标检测 行驶证副页条码编号 检测&#xff0c;后续裁剪出图片并摆正显示 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Model Properties ------------------------- date&#xff1a;2024-06-25T10:59:15.206586 description&#xff1a;…

React 19 新特性集合

前言&#xff1a;https://juejin.cn/post/7337207433868197915 新 React 版本信息 伴随 React v19 Beta 的发布&#xff0c;React v18.3 也一并发布。 React v18.3相比最后一个 React v18 的版本 v18.2 &#xff0c;v18.3 添加了一些警告提示&#xff0c;便于尽早发现问题&a…

利用百数应用优化制造细节,提升生产效率的技术实践

制造管理是确保企业高效、高质生产的核心环节&#xff0c;对于提高企业的运营效率、质量控制、成本控制、交货期保障、资源优化、创新能力以及风险管理等方面都具有重要意义&#xff0c;它能帮助企业在激烈的市场竞争中保持领先地位&#xff0c;同时实现资源的有效利用和风险的…

顺序栈与链式栈

目录 1. 栈 1.1 栈的概念 2. 栈的实现 3. 顺序栈的实现 3.1 顺序栈的声明 3.2 顺序栈的初始化 3.3 顺序栈的入栈 3.4 顺序栈的出栈 3.5 顺序栈获取栈顶元素 3.6 顺序栈获取栈内有效数据个数 3.7 顺序栈判断栈是否为空 3.8 顺序栈打印栈内元素 3.9 顺序栈销毁栈 3…

[数据集][目标检测]鸡蛋缺陷检测数据集VOC+YOLO格式2918张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2918 标注数量(xml文件个数)&#xff1a;2918 标注数量(txt文件个数)&#xff1a;2918 标注…

算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 决策树是一种简单直观的机器学习算法&#xff0c;它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决…

【推荐】Prometheus+Grafana企业级监控预警实战

新鲜出炉&#xff01;&#xff01;&#xff01;PrometheusGrafanaAlertmanager springboot 企业级监控预警实战课程&#xff0c;从0到1快速搭建企业监控预警平台&#xff0c;实现接口调用量统计&#xff0c;接口请求耗时统计…… 详情请戳 https://edu.csdn.net/course/detai…

Word页码设置,封面无页码,目录摘要阿拉伯数字I,II,III页码,正文开始123为页码

一、背景 使用Word写项目书或论文时&#xff0c;需要正确插入页码&#xff0c;比如封面无页码&#xff0c;目录摘要阿拉伯数字I&#xff0c;II&#xff0c;III为页码&#xff0c;正文开始以123为页码&#xff0c;下面介绍具体实施方法。 所用Word版本&#xff1a;2021 二、W…

HTTPS 代理的优点和缺点是什么?

HTTPS&#xff08;超文本安全传输协议&#xff09;作为一种基于HTTP加上SSL安全层的网络通信协议&#xff0c;已经成为互联网上广泛使用的IP协议之一。它在保证信息安全和隐私方面具有很多优势&#xff0c;但也存在一些缺点。接下来&#xff0c;我们就来探究一下HTTPS协议的优缺…

Qt篇——获取Windows系统上插入的串口设备的物理序号

先右键【此电脑-管理- 设备管理器-端口&#xff08;COM和LPT&#xff09;】中找到我们插入的某个设备的物理序号&#xff0c;如下图红色矩形框出的信息&#xff0c;这个就是已插入设备的物理序号&#xff08;就是插在哪个USB口的意思&#xff09;。 在Linux下我们可以通过往/et…

【踩坑】修复循环设置os.environ[‘CUDA_VISIBLE_DEVICES‘]无效

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 问题示例 for gpus in [0, 1, 2, 3, 4, 5, 6, 7]:os.environ[CUDA_VISIBLE_DEVICES] gpusprint(torch.cuda.get_device_name(0)) 始终将使用第…

Mac安装多版本node

Mac下使用n模块去安装多个指定版本的Node.js&#xff0c;并使用命令随时切换。 node中的n模块是&#xff0c;node专门用来管理node版本的模块&#xff0c;可以进行node版本的切换&#xff0c;下载&#xff0c;安装。 1.安装n npm install -g n 2.查看版本 n --version 3.展…