📄 jiaotongdeng.v
字号:
//date:2007/7/1 traffic lamp on the crossing/* singal definition as follows:clk: ??????en?????lampa???A??4????????lamp0?lamp3?????A???????????????lampb???B??4????????lamp0?lamp3?????A???????????????acount???A?????????????8??????2????bcount???B?????????????8??????2???? */module traffic(clk,en,lampa,lampb,acount,bcount); output[7:0] acount,bcount; output[3:0] lampa,lampb; input clk,en; reg[7:0]numa,numb; reg tempa,tempb; reg[2:0]counta,countb; reg[7:0]ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft; reg[3:0]lampa,lampb; always @(en) if (!en) begin ared <=8'b01010101; //55s ayellow <=8'b00000101; //5s agreen <=8'b01000000; //40s aleft <=8'b00010101; //15s bred <=8'b01100101; //65s byellow <=8'b00000101; //5s bleft <=8'b00010101; //15s bgreen <=8'b00110000; //30s end assign acount=numa; assign bcount=numb; always @(posedge clk) begin if(en) begin if(!tempa) begin tempa<=1; case(counta) //?????? 0: begin numa<=agreen; lampa<=2; counta<=1; end 1: begin numa<=ayellow; lampa<=4; counta<=2; end 2: begin numa<=aleft; lampa<=1; counta<=3; end 3: begin numa<=ayellow; lampa<=4; counta<=4; end 4: begin numa<=ared; lampa<=8; counta<=0; end default: lampa<=8; endcase end else begin if(numa>1) if(numa[3:0]) begin numa[3:0]<=4'b1001; numa[7:4]<=numa[7:4]-1; end else numa[3:0]<=numa[3:0]-1; if(numa==2) tempa<=0; end end else begin lampa<=0; tempa<=0; end end always@(posedge clk) begin if(en) begin if(!tempa) begin tempb<=1; case(countb) 0: begin numb<=bred; lampb<=8; countb<=1; end 1: begin numb<=bgreen; lampb<=2; countb<=2; end 2: begin numb<=byellow; lampb<=4; countb<=3; end 3: begin numb<=bleft; lampb<=1; countb<=4; end 4: begin numb<=byellow; lampb<=4; countb<=0; end default: lampb<=8; endcase end else begin //??? if(numb>1) if(!numb[3:0]) begin numb[3:0]<=9; numb[7:4]<=1; end else numb[3:0]<=numb[3:0]-1; if(numb==2) tempb<=0; end end else begin lampb<=4'b1000; tempb<=0; countb<=0; end end endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -