📄 clkscan.v
字号:
//s8~s1为state的8个状态,分别用于控制scan_en[8:1]
`define s1 3'd0
`define s2 3'd1
`define s3 3'd2
`define s4 3'd3
`define s5 3'd4
`define s6 3'd5
module clkscan(clk, reset, scan_en, data, second, minute, hour);
input clk, reset;
input[7:0] second, minute, hour;
output[8:1] scan_en;
output[3:0] data;
reg[8:1] scan_en;
reg[3:0] data;
reg[2:0] state;
always @(negedge clk or negedge reset )
begin
if(!reset) //① 异步复位(注意复位时使数码管1一直点亮)
begin
state = `s1;
scan_en='b00000001;
data = 0;
end
else //② 若按下startn按钮
// 则进行状态机的状态转移
// 并产生串行扫描使能信号
begin
case(state)
`s1:begin state = `s2;scan_en='b00000010;data=second/10;end
`s2:begin state = `s3;scan_en='b00001000;data=minute%10;end
`s3:begin state = `s4;scan_en='b00010000;data=minute/10;end
`s4:begin state = `s5;scan_en='b01000000;data=hour%10;end
`s5:begin state = `s6;scan_en='b10000000;data=hour/10;end
`s6:begin state = `s1;scan_en='b00000001;data=second%10;end
default:begin state = `s1;scan_en='b00000001;data=0;end
endcase
// 扫描数据计数器加1计数
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -