Vivado 下按键实验

news2025/1/12 23:07:57

Vivado下按键实验

实验原理

PL通过按键的开关状态控制led的亮灭,按键按下的时候灯亮,按键未按下的时候灯灭。
在这里插入图片描述
这里的描述有些问题,PL_LED1为高的时候,LED两端的电压都为高,灯应该是不亮的,所以按照下面实现的结构应该是按键按下时灯是灭的。
由于按键按下时是低电平,需要取个反将其送给led灯,所以硬件设计如下图:
在这里插入图片描述

实验步骤

  1. 确定硬件设计,管脚对应关系
  2. 用verilog实现实验原理硬件的设计
  3. 添加管脚和时序约束
  4. 本地仿真查看按键输入和输出的关系
  5. 板上验证是否和预期一致

实验记录

  1. 确认硬件关系
管脚硬件
时钟在这里插入图片描述在这里插入图片描述
按键在这里插入图片描述在这里插入图片描述
LED见按键
  1. verilog实现硬件设计
`timescale 1ns / 1ps


module key_test(
    input sys_clk_p,
    input sys_clk_n,
    input key,
    output led
    );

reg led_r;
reg led_r1;

IBUFDS IBUFDS_inst(
    .O(clk),
    .I(sys_clk_p),
    .IB(sys_clk_n)
);

always@(posedge clk)
begin
    led_r <= ~key;
end


always@(posedge clk)
begin 
    led_r1 <=  led_r;
end

assign led = led_r1;

endmodule

  1. 添加管脚约束和时序约束,均使用图像界面进行添加
    管脚约束先点击“Open Elaborated Design”中,再在菜单中选择“Window --> I/O Ports”,进行管脚设置,设置完成后选择保存。
    在这里插入图片描述
    时序约束需要先综合“synthesis”,点击约束向导“Constraint s Wizard”,设置相关约束即可,这里只需要设置时钟。
    在这里插入图片描述

  2. 在线仿真
    编写test_bench,这里直接用资料里的代码。

`timescale 1ns/1ns
module key_test_tb;
reg sys_clk_p;
wire sys_clk_n;
reg[3:0] key;
wire[3:0] led;
initial
begin
	sys_clk_p = 1'b0;
	key = 4'b1111;
	#12  key = 4'b0101;
	#25  key = 4'b1010;
	#8   key[0] = 1'b1;
	#16  key[0] = 1'b0;
	#100
	$stop;
end

always #2.5 sys_clk_p = ~ sys_clk_p;   //5ns涓�涓懆鏈燂紝浜х敓200MHz鏃堕挓婧�

assign sys_clk_n = ~ sys_clk_p;

key_test dut
(
	.sys_clk_p(sys_clk_p), 		
	.sys_clk_n(sys_clk_n), 	
	.key (key),  //4浣嶆寜閿緭鍏ワ紝鎸変笅鏄�0锛屽脊璧锋槸1
	.led (led)   //4浣峀ED鏄剧ず锛�0涓轰寒锛�1涓虹伃
);
endmodule 

仿真结果:
在这里插入图片描述

  1. 板上验证
    加载完bit后灯是亮的,按键按下灯会灭,松开按键灯会亮。

实验总结

本实验先进行硬件设计,再使用verilog语言完成所描述的硬件设置,实现了接收按键输入控制LED亮灭的功能(或者说设计了一个简单的硬件单元)。

实验问题及解决

  1. 生成bit失败,原因是一个管脚忘记约束
报错信息
[DRC UCIO-1] Unconstrained Logical Port: 2 out of 4 logical ports have no user assigned specific location constraint (LOC). This may cause I/O contention or incompatibility with the board power or connectivity affecting performance, signal integrity or in extreme cases cause damage to the device or the components to which it is connected. To correct this violation, specify all pin locations. This design will fail to generate a bitstream unless all logical ports have a user specified site LOC constraint defined.  To allow bitstream creation with unspecified pin locations (not recommended), use this command: set_property SEVERITY {Warning} [get_drc_checks UCIO-1].  NOTE: When using the Vivado Runs infrastructure (e.g. launch_runs Tcl command), add this command to a .tcl file and add that file as a pre-hook for write_bitstream step for the implementation run.  Problem ports: sys_clk_n, and sys_clk_p.

大概意思是有管脚没有进行约束,最后检查发现时钟输入管脚未绑定,重新设置后可以正常生成bit。
2. (未解决)仿真led输出一直是个Z,和预期不符暂时未找到原因
另外仿真点击restart后vivado会重启。
在这里插入图片描述
3. (未解决)查看RTL图,发现综合后会发生变化,含义还有些不清楚
在这里插入图片描述
4. 上板验证发现按键按下时灯才不亮,应该是文档对灯的亮灭描述有问题。

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

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

相关文章

口令暴力破解--Ftp协议暴力破解与Ssh协议暴力破解

Ftp协议暴力破解 FTP服务检测 FTP服务 FTP是一种文件传输协议&#xff0c; FTP服务默认端口为21。利用FTP服务器可以在本地主机和远程主机间进行文件传输。当FTP没有配置好安全控制&#xff0c;如对登录的源地址及密码尝试次数做限制&#xff0c;那么就会存在暴力破解可能。…

uniapp - 实现车牌号键盘与格子间隔显示组件,汽车牌照录入支持自定义样式、新能源等(附带组件完整源码,开箱即用,稍微改改就能用)

效果图 uniapp 全平台兼容,车牌号键盘输入、分格显示功能示例源码,注释很多! 可以直接复制一下,然后自己改改样式或功能就能使了。 示例源码 复制,运行。 &

基于神经网络的协同过滤-NCF

目录 1、摘要 2、引言 2.1协同过滤 2.2矩阵分解 3.准备工作 3.1学习隐性数据 3.2矩阵分解 ​3.3神经协同过滤 3.4广义矩阵分解 3.5多层感知器 3.6GMF和MLP的融合-NeuMF(神经矩阵分解) 4.总结 1、摘要 尽管最近的一些工作已经把深度学习运用到了推荐中&#xff0…

【mysql性能调优 • 一】mysql企业级安装部署(保姆级别教程)

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

k8s 认证基础

0x00 前言 要想研究一个东西是不是存在安全问题&#xff0c;那么就要知道这个东西是什么&#xff0c;怎么用的&#xff0c;如何认证&#xff0c;认证方式等问题&#xff0c;了解这些才能更好的去解释学习安全问题。 0x01 访问控制 首先是k8s用户k8s用户分为service account以…

涨点技巧:Yolov5/Yolov7引入CVPR2023 Demystify Transformers Convolutions ,提升小目标检测精度

Demystify Transformers & Convolutions in Modern Image Deep Networks 论文:https://arxiv.org/pdf/2211.05781.pdf 视觉转换器最近的成功激发了一系列具有新颖特征转换范例的视觉主干,这些范例报告了稳定的性能增益。尽管新颖的特征转换设计通常被认为是收益的来源,…

0302Prim算法-最小生成树-图-数据结构和算法(Java)

文章目录1 Prim算法1.1 概述1.1.1 算法描述1.1.2 数据结构1.1.3 横切边集合维护1.2 延时实现1.2.1 实现代码1.2.2 性能分析1.3 即时实现1.3.1 分析1.3.2 实现代码1.3.3 性能分析结语1 Prim算法 1.1 概述 1.1.1 算法描述 算法描述&#xff1a; 初始化最小生成树&#xff0c;只…

Java classLoader

一. 什么是类加载器 类加载器 classLoader 类加载器&#xff1a;负责将.class文件(存储在硬盘上的物理文件)加载到内存中&#xff0c;是类加载器把类的字节码文件加载到内存当中的。二. 类加载的过程 每个编写的”.java”拓展名类文件都存储着需要执行的程序逻辑&#xff0c;…

vue项目Agora声网实现一对一视频聊天Demo示例(Agora声网实战及agora-rtc-vue使用,新增在线预览地址)

最终效果 在线预览地址 一、声网简介---->请查看官网 二、声网注册---->请自行百度&#xff08;创建音视频连接需要在Agora注册属于您的appid&#xff09; 三、具体实现视频聊天步骤 1、 实现音视频通话基本逻辑 1、创建对象 调用 createClient 方法创建 AgoraRTCCli…

ELK 日志系统收集K8s中日志

容器特性给日志采集带来的困难 • K8s弹性伸缩性&#xff1a;导致不能预先确定采集的目标 • 容器隔离性&#xff1a;容器的文件系统与宿主机是隔离&#xff0c;导致日志采集器读取日志文件受阻。 日志按体现方式分类 应用程序日志记录体现方式分为两类&#xff1a; • 标准…

最大似然估计法和Zero Forcing算法的思考

文章目录一、Zero Forcing 算法思想二、MMSE三、MIMO检测中 Zero Forcing 算法比 Maximum Likelihood 差的思考本篇文章是学习了B站UP主 乐吧的数学 之后的笔记总结&#xff0c;老师讲的非常好&#xff0c;大家有兴趣的可以关注一波&#xff01;一、Zero Forcing 算法思想 那…

Linux应用编程(文件IO基础)

1.1、个简单的文件 IO 示例 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h> int main(void) {char buff[1024];int fd1, fd2;int ret;/* 打开源文件 src_file(只读方式) */fd1 open("./src_file",…

差分矩阵算法

前言&#xff1a;我们熟悉一维数组的前缀和和差分数组的相关操作和原理&#xff0c;但是对于二维数组也就是矩阵来说&#xff0c;它的差分和前缀和又会有什么不同之处呢&#xff1f;下面我们一起来研究&#xff0c; 1.二维数组的前缀和 首先&#xff0c;我们一般规定二维数组的…

【RocketMQ】主从同步实现原理

主从同步的实现逻辑主要在HAService中&#xff0c;在DefaultMessageStore的构造函数中&#xff0c;对HAService进行了实例化&#xff0c;并在start方法中&#xff0c;启动了HAService&#xff1a; public class DefaultMessageStore implements MessageStore {public DefaultM…

Vue2-黑马(六)

目录&#xff1a; &#xff08;1&#xff09;element-ui search搜索 &#xff08;2&#xff09;element ui Cascader级联选择器 &#xff08;3&#xff09;Router-路由配置 &#xff08;4&#xff09;Router-动态导入 &#xff08;1&#xff09;element-ui search搜索 我…

日撸 Java 三百行day21-22

文章目录说明day21 二叉树的深度遍历的递归实现1. 二叉树的遍历2. 二叉树深度&#xff0c;结点数3. 代码day 22 二叉树的存储1. 思路2.层次遍历代码3.代码说明 闵老师的文章链接&#xff1a; 日撸 Java 三百行&#xff08;总述&#xff09;_minfanphd的博客-CSDN博客 自己也把…

《程序员面试金典(第6版)》面试题 10.02. 变位词组

题目描述 编写一种方法&#xff0c;对字符串数组进行排序&#xff0c;将所有变位词组合在一起。变位词是指字母相同&#xff0c;但排列不同的字符串。 注意&#xff1a;本题相对原题稍作修改 示例: 输入: ["eat", "tea", "tan", "ate&quo…

Python接口自动化测试实战详解

接口自动化测试是指通过编写程序来模拟用户的行为&#xff0c;对接口进行自动化测试。Python是一种流行的编程语言&#xff0c;它在接口自动化测试中得到了广泛应用。下面详细介绍Python接口自动化测试实战。 1、接口自动化测试框架 在Python接口自动化测试中&#xff0c;我们…

资源覆盖-overlay机制

1. SRO–Static resource overly(静态替换)2. RRO–Runtime resource overlay (运行时替换) 静态 RRO 1.写配置文件 以下代码显示了一个示例 AndroidManifest.xml。 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.exa…

【Redis】Redis基础命令集详解

文章目录【Redis01】Redis常用命令一、基础命令1、ping&#xff08;心跳命令&#xff09;2、get/set&#xff08;读写键值命令&#xff09;3、select&#xff08;切换数据库&#xff09;4、dbsize&#xff08;查看key数量&#xff09;5、flushdb&#xff08;删除当前库中所有数…