verilog 10位学号滚动显示 5按键 按键消抖 ego1

博客介绍了通过Ego1按键输入学号并滚动显示的电路设计。包括电路功能描述、具体实现要求,如复位功能、输入过程可控可视、按键消抖等。还涵盖系统设计、实现的各模块RTL电路结构,以及仿真验证,最后给出相关代码和约束文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

  1. 通过按键输入学号,并滚动显示

电路功能描述:通过Ego1上的按键输入自己的学号(10位11进制数,包括U),并存储在32位的寄存器中;10位10进制数输入完成后,实现类似实验3.1中的滚动显示效果。

除了要求实现上述功能外,还包括如下具体实现上的要求:

  1. 整个电路具有复位功能;
  2. 8个数码管中,4个数码管用于输入数据后的循环显示,另外4个用于显示当前正在输入的数据。
  3. 输入过程可控、实时可视:
    1. 用按键或者开关控制输入开始和结束,输入开始后用于循环显示的4个数码管停止循环显示,用于显示输入数据的4个数码管开始显示输入数据;输入结束后用于循环显示的4个数码管开始循环显示输入的学号,用于显示输入数据的4个数码管停止显示输入数据。
    2. 用按键切换当前要输入的数据位,切换结果通过用于显示输入数据的4个数码管展示出来,即用户能够通过显示输入数据的4个数码管看出来当前正在输入的是哪一位10进制数。
  4. 输入数字的时候进行按键消抖(关于按键防抖的原理,请参考本实验手册的“5.1 实验3.2 相关说明”部分);
  5. 设计具有开放性,下图仅仅为参考的一种实现效果,不作强求实现一样的效果。

4、实验系统设计

(1)系统输入输出信号定义

module top(
    input clk100mhz,//系统时钟
    input clr,//清零
    input right,//右键
    input left,//左键
    input up,//上键
    input down,//下键
    input enter,//确认键
    output [3:0] pos1,//输入数码管选择
    output [3:0] pos2,//输出数码管选择
    output [7:0] seg1,//输入数码管显示
    output [7:0] seg2//输出数码管显示
    );

(2)系统行为描述

//共有4个模块,对应4个文件:
// clkDiv.v
// GPU.v
// segMsg.v
// top.v
// GPU通过dataBus1和dataBus2与segMsg1和segMsg2连接,用于传输显示的数据
// 传输速度为6hz,而数码管显示的速度为190hz,所以需要一个分频模块
// segMsg1和segMsg2通过pos1和pos2与top连接,用于选择数码管并显示
// top通过clk100mhz与clkDiv连接,用于提供系统时钟,转换为190hz和6hz的时钟
// top通过clr与GPU和segMsg1连接,用于清零
// top通过right、left、up、down、enter与Pushin连接,按键消抖
// 并排除多个按键一起按的情况
// 再将数据right、left、up、down、enter传给GPU

(3)系统级电路结构设计图

10372380a34a4ca5b0e39a89b13eddbc.png

5实现

(1)顶层模块RTL电路结构图及说明

c86353ab6f924f0d8eafd0871ac28503.png

(2)clkDiv RTL电路

3fa2277582eb443e8d96692c5eb18a9a.png

(3)Pushin RTL电路结构

3ad0d1ed88a74deaa98590d152cafe5d.png

(4)segMsg RTL电路结构

050e24962ceb4900888c62801dc0cd03.png

(5)GPU RTL电路结构

ca7112ba5a29433093ee9bea0bef22be.png6仿真验证

(1)顶层模块测试方案设计说明

//由于直接模拟的话,时间太长,所以将时间缩短
//具体可以看clkDiv.v中的注释
//模拟了多个按键的情况
//模拟了按键消抖

顶层模块仿真结果及说明

231d0c6a1f4946ac87898dbe30685306.png

模拟了众多情况,包括按键防抖,边界情况,保证了模块的正常使用,具体可以看top_tb.vcd文件

代码

top模块:top.v

// 这是顶层模块

//共有4个模块,对应4个文件:
// clkDiv.v
// GPU.v
// segMsg.v
// top.v
// GPU通过dataBus1和dataBus2与segMsg1和segMsg2连接,用于传输显示的数据
// 传输速度为6hz,而数码管显示的速度为190hz,所以需要一个分频模块
// segMsg1和segMsg2通过pos1和po
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值