Verilog代码:数字时钟模块的详细设计与实现
[3:0]tmp_digit; reg [3:0]tmp_led; wire enable; wire enable_2; reg tmp_enable; reg tmp_enable_2; reg [2:0]tmp_seg_2; decoder_2to4 decoder1(.in(tmp_digit), .out(sel)); mux_2to1 mux1(.sel(sel[0]), .in1(seg1), .in2(seg2), .out(seg)); mux_2to1 mux2(.sel(sel[1]), .in1(seg2), .in2(seg3), .out(seg)); always @(posedge clk) begin if (tmp_reset == 1) begin tmp_second_reset <= 0; tmp_push1 <= 0; tmp_push2 <= 0; tmp_push3 <= 0; end else begin tmp_second_reset <= reset; tmp_push1 <= push1; tmp_push2 <= push2; tmp_push3 <= push3; end end always @(posedge clk) begin if (tmp_reset == 1) begin digit <= 0; end else begin if (tmp_push1 == 1) begin digit <= digit + 1; if (digit > 9) begin digit <= 0; end end end end always @(posedge clk_1khz) begin if (tmp_reset == 1) begin tmp_1sec_mux_out <= 4'b0000; tmp_1min_mux_out <= 4'b0000; tmp_1hour_mux_out <= 4'b0000; end else begin if (tmp_second_reset == 1) begin tmp_1sec_mux_out <= 4'b0000; end else begin tmp_1sec_mux_out <= tmp_1sec_mux_in; end if (tmp_push1 == 1) begin tmp_1min_mux_out <= 4'b0000; end else begin tmp_1min_mux_out <= tmp_1min_mux_in; end if (tmp_push2 == 1) begin tmp_1hour_mux_out <= 4'b0000; end else begin tmp_1hour_mux_out <= tmp_1hour_mux_in; end end end always @(posedge clk) begin if (tmp_reset == 1) begin tmp_1sec_mux_in <= 4'b0000; tmp_1min_mux_in <= 4'b0000; tmp_1hour_mux_in <= 4'b0000; end else begin if (tmp_push1 == 1) begin tmp_1sec_mux_in <= tmp_1sec_mux_in + 1; if (tmp_1sec_mux_in > 9) begin tmp_1sec_mux_in <= 0; end end if (tmp_push2 == 1) begin tmp_1min_mux_in <= tmp_1min_mux_in + 1; if (tmp_1min_mux_in > 9) begin tmp_1min_mux_in <= 0; end end if (tmp_push3 == 1) begin tmp_1hour_mux_in <= tmp_1hour_mux_in + 1; if (tmp_1hour_mux_in > 9) begin tmp_1hour_mux_in <= 0; end end end end always @(posedge clk) begin if (tmp_reset == 1) begin tmp_seg_2 <= 3'b000; tmp_enable <= 1'b0; tmp_led <= 4'b0000; end else begin if (tmp_push1 == 1) begin tmp_seg_2 <= tmp_seg_2 + 1; if (tmp_seg_2 > 4) begin tmp_seg_2 <= 0; end end if (tmp_push2 == 1) begin tmp_enable <= ~tmp_enable; end if (tmp_push3 == 1) begin tmp_led <= tmp_led + 1; if (tmp_led > 9) begin tmp_led <= 0; end end end end assign enable = tmp_enable; binary_counter_1hz counter1(.clk(clk), .reset(tmp_reset), .count(tmp_clk_1khz)); counter_24h counter2(.clk(tmp_clk_1khz), .reset(tmp_second_reset), .count(tmp_1sec_mux_out)); counter_60 counter3(.clk(tmp_clk_1khz), .reset(tmp_second_reset), .count(tmp_1min_mux_out)); counter_12 counter4(.clk(tmp_clk_1khz), .reset(tmp_second_reset), .count(tmp_1hour_mux_out)); always @(posedge clk) begin if (tmp_reset == 1) begin enable_2 <= 0; end else begin if (push2 == 1) begin enable_2 <= ~enable_2; end end end assign tmp_1sec_mux_in = enable_2 ? tmp_second_reset : tmp_1sec_mux_out; always @(posedge clk) begin if (reset == 1) begin seg1 <= 7'b1111111; // displays a "-" seg2 <= 7'b1111111; // displays a "-" seg3 <= 7'b1111111; // displays a "-" end else begin case(tmp_seg_2) 3'b000: begin seg1 <= tmp_1sec_mux_in; seg2 <= tmp_1min_mux_in; seg3 <= tmp_1hour_mux_in; end 3'b001: begin seg1 <= tmp_1min_mux_in; seg2 <= tmp_1hour_mux_in; seg3 <= tmp_1sec_mux_in; end 3'b010: begin seg1 <= tmp_1hour_mux_in; seg2 <= tmp_1sec_mux_in; seg3 <= tmp_1min_mux_in; end default: begin seg1 <= tmp_1sec_mux_in; seg2 <= tmp_1min_mux_in; seg3 <= tmp_1hour_mux_in; end endcase end end assign led = tmp_led; assign seg_2 = tmp_seg_2; assign enable_2 = tmp_enable_2; endmodule ######[AI写代码神器 | 3130点数解答 | 2024-11-15 10:14:41]
- C++ 实现:精准统计给定范围 [L, R] 内数字 2 出现的次数及代码详解(字节豆包 | 401点数解答 | 2026-02-05 21:17:05)36
- C++实现:统计[L, R]范围内数字2出现的次数及代码详解(字节豆包 | 489点数解答 | 2026-02-07 17:12:26)41
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)343
- PHP实训:从0到1搭建电商平台,收获技能与成长!(讯飞星火 | 674点数解答 | 2024-06-17 08:58:32)348
- 缜密逻辑,全新无名杀“风餐”技能代码精心打造与深度解析 (字节豆包 | 469点数解答 | 2025-04-05 11:37:06)240
- Python:用正则表达式从含多种字符的字符串中提取英文、数字和中文单词(GPT | 522点数解答 | 2024-05-31 19:05:27)313
- Python:用正则表达式结合 split 思路提取一行字符串中的英文、数字和中文单词 (GPT | 399点数解答 | 2024-05-31 19:07:31)310
- 繁体字编码代码修改:人物名字合法性验证函数转简体版(字节豆包 | 325点数解答 | 2024-10-21 18:57:01)285
- 计算区间 n 到 m 中数字 x 出现次数的 Python 实现与详解(字节豆包 | 289点数解答 | 2025-12-07 17:14:59)72
- Python 实现:计算区间 n 到 m 中数字 x 出现的次数(字节豆包 | 322点数解答 | 2025-12-13 21:37:08)74
- Verilog HDL:8位频率计代码实现及详细解析(百度文心 | 596点数解答 | 2024-05-07 23:35:35)254
- Verilog 定时计数器:实现、代码解析与使用注意事项(DeepSeek | 503点数解答 | 2025-07-17 09:13:05)106