?? settime2.v
字號:
module SetTime2( t_clk, t_sw, d_second, t_diswork , t_sec, display_time, t_scan );
input t_clk;
input [3:0] t_sw;
input [7:0] d_second;
output t_diswork;
reg t_diswork;
output [7:0] t_sec;
reg [7:0] t_sec;
output [7:0] display_time;
reg [7:0] display_time;
output [3:0] t_scan;
reg [3:0] t_scan;
parameter FIRST = 4'b1110;
parameter SECOND = 4'b1101;
parameter THIRD = 4'b1011;
parameter FOURTH = 4'b0111;
parameter FIVETH = 4'b0001;
parameter SIXTH = 4'b0010;
parameter SEVENTH= 4'b0100;
parameter EIGHTH = 4'b1000;
parameter Zero = 4'b0000;
parameter One = 4'b0001;
parameter Two = 4'b0010;
parameter Three = 4'b0011;
parameter Four = 4'b0100;
parameter Five = 4'b0101;
parameter Six = 4'b0110;
parameter Seven = 4'b0111;
parameter Eight = 4'b1000;
parameter Nine = 4'b1001;
parameter No = 4'b1111;
parameter ZERO = 8'b11111100;
parameter ONE = 8'b01100000;
parameter TWO = 8'b11011010;
parameter THREE = 8'b11110010;
parameter FOUR = 8'b01100110;
parameter FIVE = 8'b10110110;
parameter SIX = 8'b10111110;
parameter SEVEN = 8'b11100100;
parameter EIGHT = 8'b11111110;
parameter NINE = 8'b11110110;
parameter NO = 8'b00000000;
reg [2:0] t_round;
reg t_enter;
wire t_ok;
reg t_next_diswork;
reg t_next_enter;
reg [3:0] t_press;
/* the 16 switch
t_diswork Seven Eight Nine
t_enter Four Five Six
t_ok One Two Three
Zero
*/
reg [1:0] t_set_sw, t_enter_sw, t_ok_sw, one_sw, two_sw, three_sw, four_sw,
five_sw, six_sw, seven_sw, eight_sw, nine_sw, zero_sw;
wire set, enter, one, two, three, four, five, six, seven, eight, nine, zero;
assign set = t_set_sw[0];
assign enter = t_enter_sw[0];
assign t_ok = t_ok_sw[0];
assign one = one_sw[0];
assign two = two_sw[0];
assign three = three_sw[0];
assign four = four_sw[0];
assign five = five_sw[0];
assign six = six_sw[0];
assign seven = seven_sw[0];
assign eight = eight_sw[0];
assign nine = nine_sw[0];
assign zero = zero_sw[0];
always @(posedge t_clk )
begin
case( t_round )
3'b000: t_scan=FIRST;
3'b001: t_scan=SECOND;
3'b010: t_scan=THIRD;
3'b011: t_scan=FOURTH;
3'b100: t_scan=FIVETH;
3'b101: t_scan=SIXTH;
3'b110: t_scan=SEVENTH;
3'b111: t_scan=EIGHTH;
endcase
t_round = t_round + 1;
////////////////////////////
t_diswork = t_next_diswork;
t_enter = t_next_enter;
if( t_diswork==1 )
begin
if( t_enter==0 )
t_sec[7:4] = t_press;
else if( t_enter==1 )
t_sec[3:0] = t_press;
/* if( (t_ok==1) && (t_enter==0) )
begin
t_next_diswork=0;
t_next_enter=0;
t_sec[3:0] = t_press;
t_press=No;
end
else if ( t_ok==1 )
begin
t_next_diswork=0;
t_next_enter=0;
t_press=No;
end
t_ok=0;
*/ end
end
////////////////////////////////////////////////////////////////////////////////////////////////
always @(t_scan)
begin
case(t_scan)
FIRST:
begin
display_time = NO;
case ( t_set_sw )
2'b00: if( t_sw[0]==0 ) t_set_sw<=2'b01;
2'b01: t_set_sw<=2'b10;
2'b10: if( t_sw[0]==1 ) t_set_sw<=2'b00;
default: t_set_sw<=2'b00;
endcase
case ( seven_sw )
2'b00: if( t_sw[1]==0 ) seven_sw<=2'b01;
2'b01: seven_sw<=2'b10;
2'b10: if( t_sw[1]==1 ) seven_sw<=2'b00;
default: seven_sw<=2'b00;
endcase
case ( eight_sw )
2'b00: if( t_sw[2]==0 ) eight_sw<=2'b01;
2'b01: eight_sw<=2'b10;
2'b10: if( t_sw[2]==1 ) eight_sw<=2'b00;
default: eight_sw<=2'b00;
endcase
case ( nine_sw )
2'b00: if( t_sw[3]==0 ) nine_sw<=2'b01;
2'b01: nine_sw<=2'b10;
2'b10: if( t_sw[3]==1 ) nine_sw<=2'b00;
default: nine_sw<=2'b00;
endcase
if( set==1 ) t_next_diswork=1;
if( one==1 )
begin
if( t_diswork ==1 ) t_press=Seven;
end
if( two==1 )
begin
if( t_diswork ==1 ) t_press=Eight;
end
if( three==1 )
begin
if( t_diswork ==1 ) t_press=Nine;
end
end
///////////////////////////////////////////
SECOND:
begin
display_time = NO;
case ( t_enter_sw )
2'b00: if( t_sw[0]==0 ) t_enter_sw<=2'b01;
2'b01: t_enter_sw<=2'b10;
2'b10: if( t_sw[0]==1 ) t_enter_sw<=2'b00;
default: t_enter_sw<=2'b00;
endcase
case ( four_sw )
2'b00: if( t_sw[1]==0 ) four_sw<=2'b01;
2'b01: four_sw<=2'b10;
2'b10: if( t_sw[1]==1 ) four_sw<=2'b00;
default: four_sw<=2'b00;
endcase
case ( five_sw )
2'b00: if( t_sw[2]==0 ) five_sw<=2'b01;
2'b01: five_sw<=2'b10;
2'b10: if( t_sw[2]==1 ) five_sw<=2'b00;
default: five_sw<=2'b00;
endcase
case ( six_sw )
2'b00: if( t_sw[3]==0 ) six_sw<=2'b01;
2'b01: six_sw<=2'b10;
2'b10: if( t_sw[3]==1 ) six_sw<=2'b00;
default: six_sw<=2'b00;
endcase
if( enter==1 )
begin
if( t_diswork==1 ) t_next_enter=1;
end
if( four==1 )
begin
if( t_diswork ==1 ) t_press=Four;
end
if( five==1 )
begin
if( t_diswork ==1 ) t_press=Five;
end
if( six==1 )
begin
if( t_diswork ==1 ) t_press=Six;
end
end
//////////////////////////////////
THIRD:
begin
display_time = NO;
case ( t_ok_sw )
2'b00: if( t_sw[0]==0 ) t_ok_sw<=2'b01;
2'b01: t_ok_sw<=2'b10;
2'b10: if( t_sw[0]==1 ) t_ok_sw<=2'b00;
default: t_ok_sw<=2'b00;
endcase
case ( one_sw )
2'b00: if( t_sw[1]==0 ) one_sw<=2'b01;
2'b01: one_sw<=2'b10;
2'b10: if( t_sw[1]==1 ) one_sw<=2'b00;
default: one_sw<=2'b00;
endcase
case ( two_sw )
2'b00: if( t_sw[2]==0 ) two_sw<=2'b01;
2'b01: two_sw<=2'b10;
2'b10: if( t_sw[2]==1 ) two_sw<=2'b00;
default: two_sw<=2'b00;
endcase
case ( three_sw )
2'b00: if( t_sw[3]==0 ) three_sw<=2'b01;
2'b01: three_sw<=2'b10;
2'b10: if( t_sw[3]==1 ) three_sw<=2'b00;
default: three_sw<=2'b00;
endcase
if( t_ok==1 )
begin
if( t_diswork==1 )
begin
t_next_diswork=0;
t_next_enter=0;
end
end
if( one==1 )
begin
if( t_diswork ==1 ) t_press=One;
end
if( two==1 )
begin
if( t_diswork ==1 ) t_press=Two;
end
if( three==1 )
begin
if( t_diswork ==1 ) t_press=Three;
end
end
/////////////////////////////
FOURTH:
begin
display_time = NO;
case ( zero_sw )
2'b00: if( t_sw[2]==0 ) zero_sw<=2'b01;
2'b01: zero_sw<=2'b10;
2'b10: if( t_sw[2]==1 ) zero_sw<=2'b00;
default: zero_sw<=2'b00;
endcase
if( zero==1 )
begin
if( t_diswork ==1 ) t_press=Zero;
end
end
/////////////////////////////////////////////
FIVETH:
begin
if( t_diswork==0 )
begin
case( d_second )
8'd00, 8'd01, 8'd02, 8'd03, 8'd04, 8'd05, 8'd06, 8'd07, 8'd08, 8'd09:
display_time = ZERO;
8'd10, 8'd11, 8'd12, 8'd13, 8'd14, 8'd15, 8'd16, 8'd17, 8'd18, 8'd19:
display_time = ONE;
8'd20, 8'd21, 8'd22, 8'd23, 8'd24, 8'd25, 8'd26, 8'd27, 8'd28, 8'd29:
display_time = TWO;
8'd30, 8'd31, 8'd32, 8'd33, 8'd34, 8'd35, 8'd36, 8'd37, 8'd38, 8'd39:
display_time = THREE;
8'd40, 8'd41, 8'd42, 8'd43, 8'd44, 8'd45, 8'd46, 8'd47, 8'd48, 8'd49:
display_time = FOUR;
8'd50, 8'd51, 8'd52, 8'd53, 8'd54, 8'd55, 8'd56, 8'd57, 8'd58, 8'd59:
display_time = FIVE;
8'd60, 8'd61, 8'd62, 8'd63, 8'd64, 8'd65, 8'd66, 8'd67, 8'd68, 8'd69:
display_time = SIX;
8'd70, 8'd71, 8'd72, 8'd73, 8'd74, 8'd75, 8'd76, 8'd77, 8'd78, 8'd79:
display_time = SEVEN;
8'd80, 8'd81, 8'd82, 8'd83, 8'd84, 8'd85, 8'd86, 8'd87, 8'd88, 8'd89:
display_time = EIGHT;
8'd90, 8'd91, 8'd92, 8'd93, 8'd94, 8'd95, 8'd96, 8'd97, 8'd98, 8'd99:
display_time = NINE;
default:display_time = NO;
endcase
end
else
display_time = NO;
end
////////////////////////////////////
SIXTH:
begin
if( t_diswork==0 )
begin
case( d_second )
8'd00, 8'd10, 8'd20, 8'd30, 8'd40, 8'd50, 8'd60, 8'd70, 8'd80, 8'd90:
display_time = ZERO;
8'd01, 8'd11, 8'd21, 8'd31, 8'd41, 8'd51, 8'd61, 8'd71, 8'd81, 8'd91:
display_time = ONE;
8'd02, 8'd12, 8'd22, 8'd32, 8'd42, 8'd52, 8'd62, 8'd72, 8'd82, 8'd92:
display_time = TWO;
8'd03, 8'd13, 8'd23, 8'd33, 8'd43, 8'd53, 8'd63, 8'd73, 8'd83, 8'd93:
display_time = THREE;
8'd04, 8'd14, 8'd24, 8'd34, 8'd44, 8'd54, 8'd64, 8'd74, 8'd84, 8'd94:
display_time = FOUR;
8'd05, 8'd15, 8'd25, 8'd35, 8'd45, 8'd55, 8'd65, 8'd75, 8'd85, 8'd95:
display_time = FIVE;
8'd06, 8'd16, 8'd26, 8'd36, 8'd46, 8'd56, 8'd66, 8'd76, 8'd86, 8'd96:
display_time = SIX;
8'd07, 8'd17, 8'd27, 8'd37, 8'd47, 8'd57, 8'd67, 8'd77, 8'd87, 8'd97:
display_time = SEVEN;
8'd08, 8'd18, 8'd28, 8'd38, 8'd48, 8'd58, 8'd68, 8'd78, 8'd88, 8'd98:
display_time = EIGHT;
8'd09, 8'd19, 8'd29, 8'd39, 8'd49, 8'd59, 8'd69, 8'd79, 8'd89, 8'd99:
display_time = NINE;
default:display_time = NO;
endcase
end
else
display_time = NO;
end
/////////////////////////////
SEVENTH:
begin
if( t_diswork==1 )
begin
case( t_sec[7:4] )
Zero: display_time = ZERO;
One: display_time = ONE;
Two: display_time = TWO;
Three: display_time = THREE;
Four: display_time = FOUR;
Five: display_time = FIVE;
Six: display_time = SIX;
Seven: display_time = SEVEN;
Eight: display_time = EIGHT;
Nine: display_time = NINE;
No: display_time = NO;
default:display_time = NO;
endcase
end
else
display_time = NO;
end
/////////////////////
EIGHTH:
begin
if( t_diswork==1 )
begin
case( t_sec[3:0] )
Zero: display_time = ZERO;
One: display_time = ONE;
Two: display_time = TWO;
Three: display_time = THREE;
Four: display_time = FOUR;
Five: display_time = FIVE;
Six: display_time = SIX;
Seven: display_time = SEVEN;
Eight: display_time = EIGHT;
Nine: display_time = NINE;
No: display_time = NO;
default:display_time = NO;
endcase
end
else
display_time = NO;
end
///////////////////////
default:
begin
display_time = NO;
end
endcase
end
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -