北邮数电实验——0-19循环计数器

使用 Verilog 实现 FPGA 数码管计数器项目

本文将详细介绍一个基于 Verilog 的数码管计数器设计项目。本设计使用两个按键控制计数器的递增和复位,并在两个数码管上显示计数结果。同时,本文将详细解析每个模块的功能,包括计数器逻辑、数码管显示和按键消抖,并解释如何在设计中实现分频功能(尽管项目中未使用分频器模块)。
PS:由于偷懒,本文大部分文本由ai生成,代码是ai+人工调的,时序仿真基本正确,功能基本实现。

目录

  1. 计数器主模块 (counter)
  2. 数码管显示模块 (segment)
  3. 按键消抖模块 (debounce)
  4. 分频器模块 (prescaler)
  5. 测试模块 (tb_counter)
  6. 设计说明和总结

1. 计数器主模块 (counter)

counter 模块是整个项目的核心逻辑,包含了计数控制、按键状态检测以及输出显示处理。

module counter(clk, btn, seg, cat, bcd_num);
    input clk;                 // 时钟信号,设计为100Hz
    input [1:0] btn;           // 两位按键,btn[1] 复位,btn[0] 递增
    output [7:0] seg;          // 数码管的显示输出
    output [1:0] cat;          // 数码管位选信号
    output reg [7:0] bcd_num;  // BCD编码,表示两位数的计数值,这个变量目前只用于仿真好观察,真正烧录要将这个删除,并且记得在端口里删除
    wire clk_1;                // 分频后的脉冲信号
    wire [1:0] btn_state;      // 中间变量,存放按键状态
//reg [7:0]bcd_num;
    reg [6:0] counter = 7'b0000_000; // 用于控制计数器的递增速率
    
    initial begin
        bcd_num = 8'b0000_0000;  // 初始化计数器
    end

    // 实例化按键消抖模块
    debounce u_debounce_1 (.clk(clk), .button(btn[0]), .btn_st
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芝麻柚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值