PL端:LED闪烁

实验环境

vivado2024.1

实验任务

LED闪烁

引脚关系

在这里插入图片描述

硬件配置

新建一个vivado实验
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建 Verilog HDL 文件点亮 LED

点击 Project Manager 下的 Add Sources 图标(或者使用快捷键 Alt+A)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

编辑led.v

module led(input sys_clk,input rst_n,output reg [3:0] led);
reg[31:0] timer_cnt;
always@(posedge sys_clk or negedge rst_n)
beginif (!rst_n)beginled <= 4'd0 ;timer_cnt <= 32'd0 ;endelse if(timer_cnt >= 32'd49_999_999)beginled <= ~led;timer_cnt <= 32'd0;endelsebeginled <= led;timer_cnt <= timer_cnt + 32'd1;endend
endmodule

这是一个对系统时钟上升沿和复位信号下降沿敏感的always块。
当复位信号rst_n为低电平时:
将输出led初始化为 4’b0000。
将计数器timer_cnt初始化为 32’b0。
当计数器timer_cnt的值大于等于 32’d49_999_999 时:
对输出led取反,实现 LED 状态的切换。
将计数器timer_cnt重新初始化为 32’b0。
其他情况下:
保持输出led不变。
计数器timer_cnt自增 1。
总体来说,这个模块实现了一个基于计数器的 LED 闪烁功能。每当计数器达到特定值(49999999)时,LED 的状态就会切换一次。复位时,LED 熄灭且计数器清零。

添加管脚约束

Vivado 使用的约束文件格式为 xdc 文件。xdc 文件里主要是完成管脚的约束,时钟的约束, 以及组的约束。
点击“Open Elaborated Design”
在这里插入图片描述
将复位信号 rst_n 绑定到 PL 端的按键,给 LED 和时钟分配管脚、电平标准,完成后点击保存图标

在这里插入图片描述
ctrl+S 保存
在这里插入图片描述
在这里插入图片描述
普通 IO 口只需约束引脚号和电压,管脚约束如下:
set_property PACKAGE_PIN “引脚编号” [get_ports “端口名称”]
电平信号的约束如下:
set_property IOSTANDARD “电平标准” [get_ports “端口名称”]

电平标准中“LVCMOS33”后面的数字指 FPGA 的 BANK 电压,LED 所在 BANK 电压为 3.3伏,所以电平标准为“LVCMOS33”

添加时序约束

点击“Run Synthesis”开始综合
在这里插入图片描述
在这里插入图片描述
点击“Constraints Wizard”,在弹出的窗口中点击“Next”
在这里插入图片描述
时序约束向导分析出设计中的时钟,这里把“sys_clk”频率设置为 50Mhz,然后点击“Skip to Finish”结束时序约束向导
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这个时候 led.xdc 文件已经更新,点击“Reload”重新加载文件,并保存文件

在这里插入图片描述

生成 BIT 文件

编译的过程可以细分为综合、布局布线、生成 bit 文件等,直接点击“Generate Bitstream”,直接生成 bit 文件

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Vivado 仿真

设置 Vivado 的仿真配置,右击 SIMULATION 中 Simulation Settings。
在这里插入图片描述
在这里插入图片描述

添加激励测试文件,点击 Project Manager 下的 Add Sources 图标,按下图设置后单击 Next。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

编写激励文件

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2024/11/05 18:16:41
// Design Name: 
// Module Name: tb_led
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module tb_led;
// Inputs
reg sys_clk;
reg rst_n ;
// Outputs
wire [3:0] led;// Instantiate the Unit Under Test (UUT)
led uut (.sys_clk(sys_clk), .rst_n(rst_n),.led(led)
);initial
begin
// Initialize Inputssys_clk = 0;rst_n = 0 ;#1000 ;rst_n = 1;
end
//Create clock
always #10 sys_clk = ~ sys_clk;endmodule

ctrl+s保存文件

在这里插入图片描述
点击 Run Simulation 按钮,再选择 Run Behavioral Simulation
在这里插入图片描述
Vivado 中的仿真软件开始工作了,需要耐心等待,才能看到实验变化
在这里插入图片描述

下载验证

  1. 连接好开发板的 JTAG 接口,给开发板上电
  2. 在“HARDWARE MANAGER”界面点击“Auto Connect”,自动连接设备

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在线调试

Vivado 中的 Integrated Logic Analyzer(ILA)是强大的调试工具。主要功能包括信号监测与分析,可同时监测多个信号并设置触发条件以特定信号状态捕获数据;触发条件设置灵活,基于单个信号值、组合逻辑或特定序列等;数据存储深度可配置,便于平衡资源利用与调试效果;与 Vivado 设计流程完全集成,使用方便且捕获数据可直接分析查看。使用步骤为添加 ILA IP 核并配置参数,连接需监测信号,设置触发条件,生成比特流下载到 FPGA 后开始工作,最后在 Vivado 中分析数据。其优势明显,高效调试,无需额外硬件设备,降低成本和复杂性,快速定位问题缩短设计周期;灵活性强,适应复杂场景,多种触发和显示方式满足不同需求;集成性好,紧密融入设计流程,提高工作效率。

添加 ILA IP 核

在这里插入图片描述
修改名称为 ila,由于要采样两个信号,Probes 的数量设置为 2,Sample Data Depth 指的是
采样深度,设置的越高,采集的信号越多,同样消耗的资源也会越多
在这里插入图片描述

在 Probe_Ports 页面,设置 Probe 的宽度,设置 PROBE0 位宽为 32,用于采样 timer_cnt,设置 PROBE1 位宽为 4,用于采样 led。点击 OK
在这里插入图片描述

在这里插入图片描述

在 led.v 中例化 ila,并保存

ila ila_inst(.clk(sys_clk),.probe0(timer_cnt),.probe1 (led));

在这里插入图片描述
重新生成 Bitstream
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

下载程序

在这里插入图片描述

这时候看到有 bit 和 ltx 文件,点击 program
在这里插入图片描述

此时弹出在线调试窗口,出现了我们添加的信号
在这里插入图片描述

点击运行按钮,出现信号的数据

在这里插入图片描述

也可以触发采集,在 Trigger Setup 窗口点击“+”,深度选择 timer_cnt 信号

在这里插入图片描述
将 Radix 改为 U,也就是十进制,在 Value 中设置为 49999999,也就是 timer_cnt 计数的最大值
在这里插入图片描述

添加MARK DEBUG

在 Vivado 等 FPGA 开发环境中,“MARK DEBUG” 是一个非常重要的功能。
基本含义
“MARK DEBUG” 的主要目的是标记那些需要在调试过程中重点关注的信号、网线(nets)或模块等设计元素。当你在设计中使用这个功能标记了特定的对象后,开发工具就会知道这些是需要特殊处理用于调试的部分。
与调试工具的关联
它和调试工具(如 ILA)紧密相关。例如,在 Vivado 中,当你使用 “MARK DEBUG” 标记了信号后,这些被标记的信号可以很方便地被连接到诸如 Integrated Logic Analyzer(ILA)这样的调试核上。这样一来,在调试阶段,你就能够通过 ILA 等工具捕获和观察这些标记信号的行为,有助于对设计中的问题进行定位和分析。
使用方式和好处
从使用方式上,一般是在设计的图形化界面或者代码编辑环境中,通过特定的操作(如右键菜单选项等)来对信号等进行 “MARK DEBUG” 标记。其好处在于,它提供了一种有针对性的调试手段。在复杂的 FPGA 设计中,可能有成千上万的信号,通过 “MARK DEBUG” 可以挑选出那些与当前调试任务最相关的信号,避免在无关信号的观察和分析上浪费时间,从而更高效地进行设计调试。

上面介绍了添加 ILA IP 的方式在线调试,下面介绍在代码中添加综合属性,实现在线调试。
首先打开 led.v,将 ila 的例化部分注释掉
在这里插入图片描述
在 led 和 timer_cnt 的定义前面添加(* MARK_DEBUG=”true” *),保存文件。
在这里插入图片描述

点击综合
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

综合结束后,点击 Set Up Debug
在这里插入图片描述

弹出的窗口点击 Next
在这里插入图片描述

按照默认点击 Next
在这里插入图片描述

采样深度窗口,选择 Next
在这里插入图片描述

点击 Finish

在这里插入图片描述

ctrl+s保存
在这里插入图片描述

重新生成 bitstream

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调试
在这里插入图片描述

此时弹出在线调试窗口,出现了我们添加的信号
在这里插入图片描述
点击运行按钮,出现信号的数据
在这里插入图片描述

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

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

相关文章

Pytorch学习--神经网络--损失函数与反向传播

一、对于损失函数的理解 计算实际输出和目标之间的差距为我们更新输出提供一定的依据 二、头文件 nn.L1Loss 大概含义&#xff1a; 代码&#xff1a; import torch from torch.nn import L1Lossoutput torch.tensor([1,2,3],dtypefloat) target torch.tensor([1,2,5],dt…

多功能声学气膜馆:打造移动歌剧院新体验—轻空间

在广场、公园&#xff0c;甚至是郊野之间&#xff0c;多功能声学气膜馆为歌剧表演带来了全新的移动体验。作为高品质演出场馆&#xff0c;它不仅具备卓越的声学效果&#xff0c;还拥有灵活的搭建与拆卸能力&#xff0c;使艺术表演不再受限于固定的场地&#xff0c;让更多人得以…

构建智能防线 灵途科技光电感知助力轨交全向安全防护

10月27日&#xff0c;在南京南站至紫金山东站间的高铁联络线上&#xff0c;一头野猪侵入轨道&#xff0c;与D5515次列车相撞&#xff0c;导致设备故障停车。 事故不仅造成南京南站部分列车晚点&#xff0c;还在故障排查过程中导致随车机械师因被邻线限速通过的列车碰撞而不幸身…

DMX配置文件生成工具使用举例

最新软件版本: MaintainTool-v0.0.1-20241107. 如所用软件低于该版本,本文档描述可能有所差异,请索取最新版本软件再阅读本文档. (软件右上角处查看软件版本) 一、基础知识 这里结合一个示例工程来进行说明. 所用灯带: 使用两种型号的线条灯, XT1(一米八段&#xff0c;即8个…

kafka安装部署--详细教程

2.1 安装部署 每次进入 linux 都会自动进入 base 环境&#xff0c;如何关闭 base conda deactivate 手动关闭 conda config --set auto_activate_base false 关闭自动进入 2.1.1 集群规划 bigdata01 bigdata02 bigdata03 zk zk zk kafka kafka kafka 2.1.2 集群部…

工具进阶:如何利用 MAT 找到问题发生的根本原因

深入浅出 Java 虚拟机 作者&#xff1a; 李国 我们知道&#xff0c;在存储用户输入的密码时&#xff0c;会使用一些 hash 算法对密码进行加工&#xff0c;比如 SHA-1。这些信息同样不允许在日志输出里出现&#xff0c;必须做脱敏处理&#xff0c;但是对于一个拥有系统权限的攻击…

当AI遇上时尚:未来的衣橱会由机器人来打理吗?

内容概要 在当今这个快速发展的时代&#xff0c;人工智能与时尚的结合正在逐渐改写我们对衣橱管理的认知。传统的衣橱管理常常面临着空间不足、穿搭单调及库存过多等挑战&#xff0c;许多人在挑选服饰时难以做出决策。然而&#xff0c;随着技术的进步&#xff0c;智能推荐和自…

[OpenGL]使用OpenGL实现硬阴影效果

一、简介 本文介绍了如何使用OpenGL实现硬阴影效果&#xff0c;并在最后给出了全部的代码。本文基于[OpenGL]渲染Shadow Map&#xff0c;实现硬阴影的流程如下&#xff1a; 首先&#xff0c;以光源为视角&#xff0c;渲染场景的深度图&#xff0c;将light space中的深度图存储…

Kafka中如何做到数据唯一,即数据去重?

数据传递语义 至少一次&#xff08;At Least Once&#xff09; ACK级别设置为-1 分区副本大于等于2 ISR里应答的最小副本数量大于等于2 可以保障数据可靠 • 最多一次&#xff08;At Most Once&#xff09; ACK级别设置为0 • 总结&#xff1a; At Least Once可以保证数据不…

惊爆:抖音小程序广告掘金计划,游戏+广告双赢新趋势!

惊爆&#xff1a;抖音小程序广告掘金计划&#xff0c;游戏广告双赢新趋势&#xff01; 在当今信息爆炸的时代&#xff0c;抖音小程序广告掘金计划犹如一股清流&#xff0c;为游戏开发者、广告商以及广大用户带来了前所未有的机遇与财富。这一计划不仅融合了游戏的趣味性和广告的…

黑豹X2 armbian 编译rkmpp ffmpeg 实现CPU视频转码

硬件 arm64 4核cpu 4G内存 rk3566 1.编译rockmpp git clone https://gitee.com/hermanchen82/mpp.git 下载之后 进到 rkmpp\build\linux\aarch64目录 armbian的不需要做任何修改 直接执行 make-Makefiles.bash make && make install 编译完成后 会安装到…

《深度学习》YOLO V4 整体架构的由来及用法 详解

目录 一、关于YOLOv4 1、什么是YOLOv4 2、相较于YOLOv3 二、YOLO v4数据增强的做法 1、 Bag of freebies 2、关于数据增强 1&#xff09;概念 2&#xff09;种类 3、v4数据增强方法 1&#xff09;马赛克数据增强 • 由来 • 关于CutMix&#xff1a; 2&#xff09;…

【VR】PICO 手部追踪 steamvr内无法识别,依旧识别手柄的解决方案

一、问题描述 && 原因分析 1.PICO4 手部追踪 steamvr内无法识别&#xff0c;依旧识别手柄的解决方案 尽管平放&#xff08;或关闭手柄连接&#xff09;之后&#xff0c;在 PICO 一体机中进入了手部追踪状态&#xff0c; 但只要进入 steamvr&#xff0c;就无法正确识别…

Go 中的泛型,日常如何使用

泛型从 go 的 1.18 开始支持 什么是泛型编程 在泛型出现之前&#xff0c;如果需要计算两数之和&#xff0c;可能会这样写&#xff1a; func Add(a, b int) int {returb a b } 这个很简单&#xff0c;但是只能两个参数都是 int 类型的时候才能调用 如果想要计算两个浮点数…

年度目标5w浏览量达成

目录 前言&#xff1a;目标展示&#xff1a;达成展示&#xff1a; 前言&#xff1a; 去年定了一个目标&#xff0c;今年实现了&#xff0c;以后继续加油&#xff0c;争取2025可以获得15w的阅览量&#xff0c;3000的粉丝数量。 目标展示&#xff1a; 达成展示&#xff1a;

【Python TensorFlow】进阶指南(续篇一)

在前两篇文章中&#xff0c;我们介绍了TensorFlow的基础知识及其在实际应用中的初步使用&#xff0c;并探讨了更高级的功能和技术细节。本篇将继续深入探讨TensorFlow的高级应用&#xff0c;包括但不限于模型压缩、模型融合、迁移学习、强化学习等领域&#xff0c;帮助读者进一…

你不得不知的几种常见的向量数据库产品

产品介绍 在使用 LLM&#xff08;大型语言模型&#xff09;知识库时&#xff0c;经常会用到以下几种向量数据库&#xff1a; Milvus&#xff1a;这是一款开源的向量数据库&#xff0c;具有高度可扩展性和高性能。它支持多种向量相似性搜索算法&#xff0c;适用于大规模数据处理…

企业IT架构转型之道:阿里巴巴中台战略思想与架构实战感想

文章目录 第一章&#xff1a;数据库水平扩展第二章&#xff1a;中台战略第三章&#xff1a;阿里分布式服务架构HSF&#xff08;high speed Framework&#xff09;、早期Dubbo第四章&#xff1a;共享服务中心建设原则第五章&#xff1a;数据拆分实现数据库能力线性扩展第六章&am…

征程 6 工具链性能分析与优化 2|模型性能优化建议

01 引言 为了应对低、中、高阶智驾场景&#xff0c;以及当前 AI 模型在工业界的应用趋势&#xff0c;地平线推出了征程 6 系列芯片。 在软硬件架构方面&#xff0c;征程 6 不仅保持了对传统 CNN 网络的高效支持能力&#xff0c;还强化了对 Transformer 类型网络的支持&#xf…

字符编码和字符集

1. 字符编码和字符集 1.1. 字符编码 编码&#xff1a;字符 –>字节解码&#xff1a;字节 –>字符字符编码Character Encoding : 就是一套自然语言的字符与二进制数之间的对应规则。 1.2. 字符集 字符集 Charset&#xff1a;是一个系统支持的所有字符的集合&#xff0…