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)
);

 

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

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

相关文章

AT_abl_d 题解

线段树优化 DP 的板子。 题意 给定一个数列&#xff0c;求出它最长的子序列&#xff0c;满足相邻元素之差不大于 k k k。 分析 对于这类最长子序列的题目&#xff0c;有一个 DP 套路&#xff0c;设 d p i dp_i dpi​ 表示以 a i a_i ai​ 结尾的最长合法子序列长度&…

Filter 实现过滤符合条件的请求并落库

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、配置过滤器类 二、定义数据表、实体类、Mapper 2.1 DDL 2.2 实体类 2.3 Mapper 三、创建一个过滤器 四、实现 Nacos 配置…

通用的网站炫酷底部美化代码分享

网站炫酷底部美化代码介绍 这段代码采用了最新的前端技术&#xff0c;确保在各种浏览器和设备上都能完美展现。它包含响应式设计元素&#xff0c;这意味着无论用户是通过电脑、平板还是手机访问您的网站&#xff0c;底部都能呈现出最佳的效果。 此外&#xff0c;我们还特别注…

怎么做?这么做。

一、每天输入 每天读2——3篇文章&#xff0c;可以是行业趋势、技术推文(与自己的工作有关的方向)&#xff0c; 每天坚持一年就会是 1000 篇。 推荐&#xff1a; 大厂的技术博客&#xff1a;纯技术类&#xff0c;美团技术团队、阿里技术团队&#xff1b; 科技资讯类&#xff1…

电子电器架构 —— 网关测试脚本分析

电子电器架构 —— 网关测试 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何 消耗你的人和事,多看一眼都是你的不对。非…

海外云手机的核心优势

随着5G时代的到来&#xff0c;云计算产业正处于高速发展的时期&#xff0c;为海外云手机的问世创造了一个可信任的背景。在资源有限且需求不断增加的时代&#xff0c;将硬件设备集中在云端&#xff0c;降低个人用户的硬件消耗&#xff0c;同时提升性能&#xff0c;这一点单单就…

微软.NET6开发的C#特性——类、结构体和联合体

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;下面我就重点讲讲微软.NET6开发人员需要知道的C#特性。 C#经历了多年发展&#xff0c; 进行了多次重大创新&#xf…

[嵌入式系统-8]:软件(Software)、代码(Code)、程序(Program)三者的区别

概述 在工作中&#xff0c;软件、代码、程序这三个词经常被换用&#xff0c;大部分情况下&#xff0c;这种混用都不会出问题&#xff0c;实际上&#xff0c;它们是不同的概念&#xff0c;有相交的部分&#xff0c;也有不同的地方。本文就简单阐述一下他们的区别。 在计算机领…

c++基本介绍

C是一种高级的编程语言&#xff0c;广泛应用于软件开发和系统编程。它是C语言的扩展&#xff0c;提供了更多的特性和功能。 以下是一个简单的C教程&#xff0c;可以帮助你入门&#xff1a; 安装C编译器&#xff1a; 首先&#xff0c;你需要安装一个C编译器&#xff0c;例如GCC…

14 归并排序和其他排序

1.归并排序 2.计数排序 1. 归并排序 基本思想 建立在归并操作上的一种排序算法,采用分治法的一个典型应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff0c;将两个有序表合成一个称为二路归并。 原数组无序&#xff0c;以中间分割为两个数组&#xff0c;…

vue 实现 手机号中间4位分格输入框(暂无选中标识

vue 实现 手机号中间4位分格输入框 效果图 <!--4位分格输入框--> <!--<template><div><div style"display: flex;"><div class"phone-input"><inputv-for"(digit, index) in digits":key"index"…

SQL--多表查询

我们之前在讲解SQL语句的时候&#xff0c;讲解了DQL语句&#xff0c;也就是数据查询语句&#xff0c;但是之前讲解的查询都是单 表查询&#xff0c;而本章节我们要学习的则是多表查询操作&#xff0c;主要从以下几个方面进行讲解。 多表关系 项目开发中&#xff0c;在进行数据…

SpringMVC原理(设计原理+启动原理+工作原理)

文章目录 前言正文一、设计原理1.1 servlet生命周期简述1.2 设计原理小结 二、启动原理2.1 AbstractHandlerMethodMapping 初始化 --RequestMapping注解解析2.2 DispatcherServlet 的初始化2.3 DispatcherServlet#initHandlerMappings(...) 初始化示例说明 三、工作原理 前言 …

【Rust】——Hello_cargo

&#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java基础&#xff1a;Java基础_IT闫的博客-CSDN博客 &#x1f40b;c语言&#xff1a;c语言_IT闫的博客-CSDN博客 &#x1f41f;MySQL&#xff1a…

C语言:矩阵中的最小元素

题目描述 给定一个5X5的整数矩阵&#xff0c;找出其中最小的元素&#xff0c;输出所在的行号、列号和元素值&#xff0c;其中行号和列号都从0开始。 例如&#xff0c;有矩阵&#xff1a; 5 86 53 50 18 25 67 79 44 68 79 63 24 84 100 42 30 59 47 37 28 10 32 23 81 其中最小…

Go基础学习笔记-知识点

学习笔记记录了我在学习官方文档过程中记的要点&#xff0c;可以参考学习。 go build *.go 文件 编译 go run *.go 执行 go mod init 生成依赖管理文件 gofmt -w *.go 格式换名称的大小写用来控制方法的可见域主方法及包命名规范 package main //注意package的命名&#xff0…

ARM PAC指针认证的侧信道攻击——PACMAN安全漏洞

目录 Q1. PACMAN论文的内容是什么? Q2. Arm处理器是否存在漏洞? Q3. 受Arm合作伙伴架构许可设计的处理器实现是否受到影响? Q4. Cortex-M85受到影响吗?

机器学习1一knn算法

1.基础知识点介绍 曼哈顿距离一般是比欧式距离长的除非在一维空间 拐弯的就是曼哈顿距离 Knn查看前5行数据head()&#xff0c;info看空非空 查看特征对应的类型 Head()默认前5行&#xff0c;head&#xff08;3&#xff09;就是前3行数据 Unique()可以查看分类后的结果 csv的…

SpringBoot:日志框架

使用日志框架demo&#xff1a;点击查看LearnSpringBoot04logging 点击查看更多的SpringBoot教程 一、springboot日志框架简介 SpringBoot&#xff1a;底层是Spring框架&#xff0c;Spring框架默认是用ICL&#xff1b; SpringBoot选用SLF4j和logback&#xff1b; 统一使用slf4…

Rust-AI todo list 开发体验

之前用AI协助开发了一个Vue模块&#xff0c;感觉意犹未尽&#xff0c;所以决定再让AI 来协助我做一个todo list。 todo list对我来说真是一个刚需&#xff0c;从我决定做一件事情&#xff0c;到这件事情做完&#xff0c;我的todo list不但不会减少&#xff0c;反而会增加。 回…