FPGA_工程_按键控制的基于Rom数码管显示
一 信号
框图:

其中 key_filter seg_595_dynamic均为已有模块,直接例化即可使用,rom_8*256模块,调用rom ip实现。Rom_ctrl模块需要重新编写。
波形图:


二 代码
module key_fliter
#(parameter CNT_MAX =24'd9_999_999
(input wire sys_clk,input wire sys_rst_n,input wire key1,input wire key2,output wire [7:0] addr
);reg [2:0] cnt_200ms;//定义中间变量。
reg key1_en;
reg key2_en;always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)//异步复位。cnt_200ms<=24'd0;//赋初值。else if(cnt_200ms ==CNT_MAX || key1_en ==1'b1 || key2_en == 1'b1)cnt_200ms<= 24'd0;//清零。else cnt_200ms <= cnt_200ms + 1'b1;//计数。always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)//异步复位。key1_en_<=1'b0;//赋初值。else if(key2 == 1'b1)key1_en<=1'b0;//取低电平。else if(key1 ==1'b1)key1_en<=~key1_en;//取反。else key1_en<=~key1_en;//保持。always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)//异步复位。key2_en_<=1'b0;//赋初值。else if(key1 == 1'b1)key2_en<=1'b0;//取低电平。else if(key2 ==1'b1)key2_en<=~key2_en;//取反。else key2_en<=~key2_en;//保持。always@(posedge sys_clk or negedge sys_rst_n)if(sys_rst_n==1'b0)//异步复位。addr <= 8'd0;//赋初值。else if(addr == 8'd255 && cnt_200ms ==CNT_MAX)addr <= 8'd0;else if(key1 == 1'b1)addr <= 8'd99;else if(key2 == 1'b1)addr <= 8'd199;else if(cnt_200ms ==CNT_MAX)addr <= addr + 1'b1;endmodule
module rom//工程顶层文件。
(input wire sys_clk,input wire key1,input wire sys_rst_n,input wire key2,output wire ds,output wire oe,output wire shcp,output wire stcp
);
wire key2_flag ;wire key1_flag ;
wire [7:0] addr ;
wire [7:0] data ;key_filter
#(.CNT_MAX (20'd9)
)
key_filter_inst1
(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key_in (key1),.key_flag (key1_flag)
);//按键消抖模块实例化。key_filter
#(.CNT_MAX (20'd9)
)
key_filter_inst1
(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key_in (key2),.key_flag (key2_flag)
);//按键消抖模块实例化。rom_ctrl_inst
(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key1 (key1_flag),.key2 (key2_flag),.addr (addr)
);//rom_ctrl模块实例化。rom_8x236 rom_8x236_inst
(.address (addr),.clock (sys_clk),.q (data)
);//rom ip核实例化。seg_595_dynamic seg_595_dynamic
(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.data ({12'b0,data}),.point (6'b000_000),.sign (1'b0),.seg_en (1'b1),.ds (ds ),.oe (oe ),.shcp (shcp),);//数码管显示模块,实例化。
代码编译通过,对顶层文件进行仿真验证。
'timescale 1ns/1ns
module tb_rom()reg sys_clk;
reg sys_rst_n;
reg key1;
reg key2;wire ds;
wire oe;
wire shcp;
wire stcp;initialbeginsys_clk =1'b1;sys_rst_n <= 1'b0;key1 <= 1'b1;key2 <= 1'b1;#20sys_rst_n <= 1'b1;#700000
//key1key1 <= 1'b0;#20key1 <= 1'b1;#20key1 <= 1'b0;#20key1 <= 1'b1;#20key1 <= 1'b0;#20key1 <= 1'b1;#20key1 <= 1'b0;#20key1 <= 1'b1;#20key1 <= 1'b0;#20key1 <= 1'b0;
//key2#20000key2 <= 1'b0;#20key2 <= 1'b1;#20key2 <= 1'b0;#20key2 <= 1'b1;#20key2 <= 1'b0;#200key2 <= 1'b1;#20key2 <= 1'b0;#20key2 <= 1'b1;#20key2 <= 1'b0;#20key2 <= 1'b0;endalways #10 sys_clk = ~sys_clk;rom rom_inst
(.sys_clk (sys_clk),.sys_rst_n (sys_rst_n),.key1 (key1),.key2 (key2),.ds (ds),.oe (oe),.shcp (shcp),.stcp (stcp)
);
相关文章:
FPGA_工程_按键控制的基于Rom数码管显示
一 信号 框图: 其中 key_filter seg_595_dynamic均为已有模块,直接例化即可使用,rom_8*256模块,调用rom ip实现。Rom_ctrl模块需要重新编写。 波形图: 二 代码 module key_fliter #(parameter CNT_MAX 24d9_999_99…...
WordPress Plugin HTML5 Video Player SQL注入漏洞复现(CVE-2024-1061)
0x01 产品简介 WordPress和WordPress plugin都是WordPress基金会的产品。WordPress是一套使用PHP语言开发的博客平台。该平台支持在PHP和MySQL的服务器上架设个人博客网站。WordPress plugin是一个应用插件。 0x02 漏洞概述 WordPress Plugin HTML5 Video Player 插件 get_v…...
【Kotlin】Kotlin基本数据类型
1 变量声明 var a : Int // 声明整数类型变量 var b : Int 1 // 声明整数类型变量, 同时赋初值为1 var c 1 // 声明整数类型变量, 同时赋初值为1 val d 1 // 声明整数类型常量, 值为1(后面不能改变d的值) 变量命名规范如下。 变量名可以由字母、数字、下划线(_…...
UDP端口探活的那些细节
一 背景 商业客户反馈用categraf的net_response插件配置了udp探测, 遇到报错了,如图 udp是无连接的,无法用建立连接的形式判断端口。 插件最初的设计是需要配置udp的发送字符,并且配置期望返回的字符串, [[instances]] targets…...
拦截器配置,FeignClient根据业务规则实现微服务动态路由
文章目录 业务场景拦截器用法Open Feign介绍 业务场景 我们服务使用Spring Cloud微服务架构,使用Spring Cloud Gateway 作为网关,使用 Spring Cloud OpenFeign 作为服务间通信方式我们现在做的信控平台,主要功能之一就是对路口信号机进行管控…...
预测模型:MATLAB线性回归
1. 线性回归模型的基本原理 线性回归是统计学中用来预测连续变量之间关系的一种方法。它假设变量之间存在线性关系,可以通过一个或多个自变量(预测变量)来预测因变量(响应变量)的值。基本的线性回归模型可以表示为&…...
【人工智能】神奇的Embedding:文本变向量,大语言模型智慧密码解析(10)
什么是嵌入? OpenAI 的文本嵌入衡量文本字符串的相关性。嵌入通常用于: Search 搜索(结果按与查询字符串的相关性排序)Clustering 聚类(文本字符串按相似性分组)Recommendations 推荐(推荐具有…...
Redis + Lua 实现分布式限流器
文章目录 Redis Lua 限流实现1. 导入依赖2. 配置application.properties3. 配置RedisTemplate实例4. 定义限流类型枚举类5. 自定义注解6. 切面代码实现7. 控制层实现8. 测试 相比 Redis事务, Lua脚本的优点: 减少网络开销:使用Lua脚本&…...
ruoyi若依框架SpringSecurity实现分析
系列文章 ruoyi若依框架学习笔记-01 ruoyi若依框架分页实现分析 ruoyi若依框架SpringSecurity实现分析 文章目录 系列文章前言具体分析一、项目中的SpringSecurity版本二、登录认证流程分析三、权限鉴定四、退出登录五、SpringSecurity配置类 总结 前言 在ruoyi-vue若依框…...
Habitat环境学习四:Habitat-sim基础用于导航——使用导航网格NavMesh
如何使用导航网格NavMesh 官方教程1、NavMesh基础定义1.1 使用NavMesh的原因1.2 什么是NavMesh 2、NavMesh的使用方法2.1 获取自上而下Top down view视角地图2.2 在NavMesh中进行查询以及随机产生可导航点2.3 查找最短路径2.4 场景加载NavMesh2.5 重新计算并生成NavMesh2.6 什么…...
python学习笔记 -- 字符串
目录 一、输出字符串的格式 二、字符串的一些函数 1、len函数:字符串长度 2、查找字符所在位置index 3、某字符在字符串中的个数count 4、字符切片 对字符串进行翻转 -- 利用步长 5、修改大小写字母: 6、判断开头和结尾 7、拆分字符串 一、输出…...
2024年GPT如何发展?
2023 年,人工智能领域最具影响的莫过于 GPT-4、ChatGPT 了。 ChatGPT 凭一己之力掀起了 AI 领域的热潮,火爆全球,似乎开启了第四次工业革命。 ChatGPT 入选《Nature》2023 年度十大人物(Nature’s 10),这…...
从REPR设计模式看 .NET的新生代类库FastEndpoints的威力
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅仅是技术还有人心,人心不可测,海水不可量,唯有技术,才是深沉黑夜中的一座闪烁的灯塔 !序言 又到了一年年末,春节将至…...
前端入门:(五)JavaScript 续
10. 浏览器存储 10.1 Cookie的概念和使用 Cookie是一种存储在用户计算机上的小型文本文件,用于跟踪和识别用户。Cookie通常用于存储用户的偏好设置、会话信息等,可以通过JavaScript进行读取和设置。 // 示例:设置和读取Cookie document.co…...
研究多态恶意软件,探讨网络安全与AI
前言 近期ChatGPT火遍全球,AI技术被应用到了全球各行各业当中,国内外各大厂商也开始推出自己的ChatGPT,笔者所在公司在前段时间也推出了自研的安全GPT,AI技术在网络安全行业得到了很多的应用,不管是网络安全研究人员、…...
linux驱动工作原理
linux或者windows驱动是如何对上和对下工作的,请用中文回答 在Linux系统中,设备驱动程序通过在/dev目录下创建文件系统条目与硬件通信。应用程序通过打开这些文件来获取描述符,以此来与设备交互。驱动程序内部使用主次设备号来标识设备。而在…...
Rust语言入门(第3篇)
引用与借用 上一篇中,我们介绍了rust的所有权概念,若直接传递变量做函数参数,堆上的变量就会失去所有权,而栈上变量则由于复制,仍有所有权。 fn main(){let b 3;makes_copy(b);println!("after using a variab…...
电脑服务器离线安装.net framework 3.5解决方案(错误:0x8024402c )(如何确定当前系统是否安装NET Framework 3.5)
问题环境: 日常服务的搭建或多或少都会有需要到NET Framework 3.5的微软程序运行框架,本次介绍几种不同的安装方式主要解决运行在Windows 2012 以上的操作系统的服务。 NET Framework 3.5 是什么? .NET Framework是微软公司推出的程序运行框架…...
Three.js学习8:基础贴图
一、贴图 贴图(Texture Mapping),也翻译为纹理映射,“贴图”这个翻译更直观。 贴图,就是把图片贴在 3D 物体材质的表面,让它具有一定的纹理,来为 3D 物体添加细节的一种方法。这使我们能够添加…...
【Linux】进程学习(二):进程状态
目录 1.进程状态1.1 阻塞1.2 挂起 2. 进程状态2.1 运行状态-R进一步理解运行状态 2.2 睡眠状态-S2.3 休眠状态-D2.4 暂停状态-T2.5 僵尸状态-Z僵尸进程的危害 2.6 死亡状态-X2.7 孤儿进程 1.进程状态 1.1 阻塞 阻塞:进程因为等待某种条件就绪,而导致的…...
道心网络安全学习笔记系列之好靶场的信息收集2
上节课找了一个图片的网址,继续挑战其它靶场,我们看下一题收集十个百度域名,这还不是顺手就来,但是贴吧不行,那还不简单,去访问百度网站,顺便输入一个搜索词,都不用看,前…...
《QGIS快速入门与应用基础》240:指北针旋转与大小调整
作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...
美军“转正”美科技公司AI系统,专家解读
来源:环球时报【环球时报报道 记者 刘扬】据路透社等外媒近日报道,五角大楼将把美国科技公司Palantir的人工智能(AI)系统Maven列为“正式在编项目”,使美军多军种将该公司的相关技术用于军事领域。五角大楼强调&#x…...
从单变量到多变量:ODE与PDE的核心差异与应用场景解析
1. 从自变量数量看本质差异 第一次接触微分方程时,我也曾被ODE和PDE搞得晕头转向。直到有天导师用了个特别形象的比喻:ODE就像观察单车道上的车流,而PDE则是分析整个立交桥的交通网络。这个比方一下子点醒了我——核心差异就在于自变量数量这…...
告别“金鱼记忆”:Hologres + Mem0,为大模型打造企业级长记忆引擎
想象一下这个场景:一位用户在周一联系某电商平台的智能客服,咨询了一款高端相机的详细参数和优惠活动,并明确表示“我倾向于购买A品牌”。客服助手热情地解答了问题。到了周三,这位用户再次联系客服,想了解这款相机的配…...
超实数(Hyper-reals)的数学革命:从Hewitt到Robinson的探索历程
1. 超实数:一场颠覆传统数学认知的革命 想象一下,当你第一次学习实数时,老师告诉你数轴上的点与实数一一对应,没有任何空隙。这个看似完美的体系在20世纪中叶被一群数学家彻底颠覆了。超实数(Hyper-reals)的…...
从‘Hello World’到视频监控:用QT+海康SDK开发你的第一个安防应用
从‘Hello World’到视频监控:用QT海康SDK开发你的第一个安防应用 第一次看到海康威视摄像头的实时画面在自己的程序里跳出来时,那种成就感比写一百个"Hello World"都来得强烈。作为一位刚接触QT的开发者,你可能已经厌倦了按钮和文…...
ComfyUI-WanVideoWrapper视频生成工具零基础快速部署实战教程
ComfyUI-WanVideoWrapper视频生成工具零基础快速部署实战教程 【免费下载链接】ComfyUI-WanVideoWrapper 项目地址: https://gitcode.com/GitHub_Trending/co/ComfyUI-WanVideoWrapper ComfyUI-WanVideoWrapper是一款功能强大的视频生成工具,它能让用户在Co…...
别再只用Unity做游戏了!用Game4Automation PRO插件,手把手教你搭建一条虚拟生产线(附PLC连接避坑指南)
跨界开发者的工业仿真指南:用Unity打造虚拟生产线全流程 当游戏开发者遇上工业自动化,会碰撞出怎样的火花?Unity作为全球最流行的游戏引擎之一,早已突破了娱乐产业的边界。今天,我们将探索如何利用Game4Automation PRO…...
小米多看电纸书刷机全攻略:从墨案系统回退到原厂固件的保姆级教程
小米多看电纸书系统恢复指南:从第三方固件回归官方体验 作为一名长期使用电子墨水设备的深度用户,我完全理解那种尝试新系统后又怀念原厂体验的矛盾心理。去年冬天,我的小米多看电纸书也经历了从墨案系统回退到官方固件的完整过程,…...
