📄 十字交通灯.txt
字号:
module top(clk,rst,R1,Y1,G1,R2,Y2,G2,led,sel);
input clk,rst;
output R1,Y1,G1,R2,Y2,G2;
output [6:0] led;
output [3:0]sel;
reg R1,Y1,G1,R2,Y2,G2;
reg [25:0]c;
reg [25:0]c1;
reg [6:0] led;
reg [3:0] led1;
reg [3:0] led2;
reg [3:0] led3;
reg [3:0] led4;
reg [3:0] sel;
reg [3:0] din;
reg [4:0] fin;
reg [1:0]state;
parameter S0=0,S1=1,S2=2,S3=3;
always@(posedge clk)
begin
if(!rst)begin
R1<=0;Y1<=0;G1<=0;R2<=0;Y2<=0;G2<=0;
led1<=3;led2<=0;led3<=2;led4<=5;
c<=0;fin<=0;
state<=S0;
end
else case(state)
S0:begin
R1<=0;Y1<=1;G1<=1;R2<=1;Y2<=1;G2<=0;
if(fin==25)begin
state<=S1;
fin<=0;
led1<=0;
led2<=5;
led3<=0;
led4<=5;
end
else if(c<5000_0000)c<=c+1;
else begin
c<=0;
fin<=fin+1;
if(led2==0)begin
led1<=led1-1;
led2<=9;
led4<=led4-1;
end
else if(led4==0)begin
led2<=led2-1;
led3<=led3-1;
led4<=9;
end
else begin
led2<=led2-1;
led4<=led4-1;
end
end
end
S1:begin
R1<=0;Y1<=1;G1<=1;R2<=1;G2<=1;
if(fin==5)begin
state<=S2;
fin<=0;
led1<=2;
led2<=5;
led3<=3;
led4<=0;
end
else if(c<5000_0000)c<=c+1;
else begin
fin<=fin+1;
c<=0;
Y2<=~Y2;
led2<=led2-1;
led4<=led4-1;
end
end
S2:begin
R1<=1;Y1<=1;G1<=0;R2<=0;Y2<=1;G2<=1;
if(fin==25)begin
state<=S3;
fin<=0;
led1<=0;
led2<=5;
led3<=0;
led4<=5;
end
else if(c<5000_0000)c<=c+1;
else begin
c<=0;
fin<=fin+1;
if(led2==0)begin
led1<=led1-1;
led2<=9;
led4<=led4-1;
end
else if(led4==0)begin
led2<=led2-1;
led3<=led3-1;
led4<=9;
end
else begin
led2<=led2-1;
led4<=led4-1;
end
end
end
S3:begin
R1<=1;G1<=1;R2<=0;Y2<=1;G2<=1;
if(fin==5)begin
state<=S0;
fin<=0;
led1<=3;
led2<=0;
led3<=2;
led4<=5;
end
else if(c<5000_0000)c<=c+1;
else begin
fin<=fin+1;
c<=0;
Y1<=~Y1;
led2<=led2-1;
led4<=led4-1;
end
end
endcase
end
always @(posedge clk)
begin
if(!rst)
begin
led<=7'b0111111;
sel[3:0]<=4'b1110;
c1<=0;
din<=0;
end
else if(c1<10_0000)c1<=c1+1;
else begin
c1<=0;
sel[0]<=sel[3];
sel[3:1]<=sel[2:0];
case(sel)
4'b1110: din<=led4;
4'b1101: din<=led3;
4'b1011: din<=led2;
4'b0111: din<=led1;
endcase
case(din)
0:led<=7'b011_1111;
1:led<=7'b000_0110;
2:led<=7'b101_1011;
3:led<=7'b100_1111;
4:led<=7'b110_0110;
5:led<=7'b110_1101;
6:led<=7'b111_1101;
7:led<=7'b000_0111;
8:led<=7'b111_1111;
9:led<=7'b110_1111;
default:led<=7'b011_1111;
endcase
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -