Verilog HDL 运用 Top - Down 设计法实现多功能 LED 闪烁计数器及代码解析
module led_counter( input clk, // 时钟信号 input rst_n, // 复位信号,低电平有效 input start, // 启动信号,每按一次完成一次动作 output reg [7:0] led, // LED控制信号 output reg [13:0] dig // 数码管显示信号 ); reg [23:0] counter; // 计数器,用于控制LED灯工作时间 // LED计数器模块,包括对各LED灯的闪烁时间控制 always @(posedge clk or negedge rst_n) begin if (~rst_n) begin counter <= 0; led <= 8'b00000000; // 所有LED关闭 dig <= 14'b00000000000000; // 数码管清零 end else begin if (start) begin if (counter < 200_000_000) begin // 10秒 counter <= counter + 1; if (counter < 10_000_000) begin // d1-d2 led <= 8'b00000011; // LED d1-d2闪烁 dig <= 14'b0000_0000_0011; // 数码管显示10-1 end else if (counter < 20_000_000) begin // d3-d4 led <= 8'b00001100; // LED d3-d4闪烁 dig <= 14'b0000_0010_1010; // 数码管显示15-3 end else if (counter < 25_000_000) begin // d5-d6 led <= 8'b00110000; // LED d5-d6闪烁 dig <= 14'b0000_0101_0011; // 数码管显示05-3 end else begin // d7-d8 led <= 8'b11000000; // LED d7-d8常亮 dig <= 14'b0000_0000_1100; // 数码管显示05-3 end end else begin counter <= 0; led <= 8'b00000000; // 所有LED关闭 dig <= 14'b00000000000000; // 数码管清零 end end end end endmodule ######[AI写代码神器 | 1080点数解答 | 2024-07-10 21:31:31]
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)310
- 8051单片机代码详解:按钮控制LED闪烁及消抖原理(讯飞星火 | 697点数解答 | 2024-10-29 14:54:31)275
- C51 程序:利用外部中断 0 边沿触发实现 P2 口 8 个 LED 依次点亮及代码分析(DeepSeek | 228点数解答 | 2025-06-22 23:18:42)159
- 51单片机外部中断0实现LED流水灯:代码详解与要点提醒(DeepSeek | 214点数解答 | 2025-06-22 23:19:09)184
- 优化星空代码:从可读性到性能与交互的全面提升(字节豆包 | 171点数解答 | 2025-03-15 23:59:30)234
- 星空特效代码揭秘:从基础实现到性能优化全攻略(DeepSeek | 460点数解答 | 2025-03-16 00:00:00)192
- 51 单片机按键控 LED:代码详解、优化与注意事项揭秘(DeepSeek | 326点数解答 | 2025-06-22 23:19:40)202
- C++:用自定义双栈实现中缀表达式到后缀表达式的转换(阿里通义 | 877点数解答 | 2024-10-18 02:23:48)270
- C 代码实现二叉树节点栈及操作,三大关键逻辑点需注意!(字节豆包 | 95点数解答 | 2024-12-10 13:17:25)234
- C++:用一维数组实现双栈,含入栈出栈及边界处理代码(字节豆包 | 543点数解答 | 2024-11-29 09:50:17)278
- C++:用一维数组实现双栈的代码解析与示例(GPT | 643点数解答 | 2024-11-29 10:01:30)282
- 双栈实现:`push` 与 `pop` 函数代码解析及开发注意要点(字节豆包 | 637点数解答 | 2025-11-05 14:11:09)89