⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 traffic.v

📁 verilog HDl 交通灯的实现,而且这是有别于一般的vhdl语言
💻 V
字号:
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'd55;
				ayellow		<=8'd5;
				agreen		<=8'd40;
				aleft		<=8'd15;
				bred		<=8'd65;
				byellow		<=8'd5;
				bgreen		<=8'd30;
				bleft		<=8'd15;
				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 <= ared;
										LAMPA <= 8;
										counta <= 0;
									end
								default:
										LAMPA <= 8;
						endcase		
				end	
			else begin
						if(numa > 1)
								if(numa [3:0] == 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 <= 4'b1000;
				counta <= 0;
				tempa <= 0;
					end
		end

	always @(posedge CLK) begin
		if(EN) begin
				if(!tempb) 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] <= 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;
				countb <= 0;
				tempb <= 0;
		      end
		end

endmodule								

⌨️ 快捷键说明

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