clkscan3_old.v

来自「此设计采用Verilog HDL硬件语言设计,在掌宇开发板上实现. 将整个电路」· Verilog 代码 · 共 34 行

V
34
字号
module clkscan3_old(clk,sec,min,hour,scan_data,scan_en);
  input clk;
  input[7:0] sec,min,hour; // 秒、分、时输入信号
  output[3:0] scan_data;
  output[6:1] scan_en;     // 分别驱动各数码管共阴极引脚SC6~SC1
  reg[3:0] scan_data;
  reg[6:1] scan_en;  
  
  reg[2:0] state;    // 状态机,s5~s1为state的6个状态,分别用于控制scan_en[6:1]
  parameter
    s1=3'b001,
    s2=3'b010,
    s3=3'b011,
    s4=3'b100,
    s5=3'b101,
    s6=3'b110;
  
  always @(posedge clk)
    begin
       case(state)
         s1:begin state<=s2;scan_data<=hour[7:4];scan_en<=1;end // 在S1状态下,DP1亮,显示小时高位
         s2:begin state<=s3;scan_data<=hour[3:0];scan_en<=2;end
         s3:begin state<=s4;scan_data<=min[7:4];scan_en<=4;end
         s4:begin state<=s5;scan_data<=min[3:0];scan_en<=8;end
         s5:begin state<=s6;scan_data<=sec[7:4];scan_en<=16;end
         s6:begin state<=s1;scan_data<=sec[3:0];scan_en<=32;end
         default:state<=s1;
       endcase
    end
endmodule

// 此程序与clkscan3.v类似,只是这里采用的是非阻塞赋值语句,
// scan_en和scan_data都比state的状态滞后了一个时钟周期

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?