Verilog状态机

在这里插入图片描述
//红绿灯状态机的设计

module trafficlight1(clock,reset,red,yellow,green);
input clock,seset;
output red,yellow,green;
reg red,yellow,green;
reg[1:0] current_state,next_state;
parameter red_state = 2'b00;
		 yellow_state = 2'b01,
		 green_state = 2'b10,
		 delay_r2y = 4'd8,
		 delay_y2g = 4'd3,
		 delay_g2r = 4'd11;
//第一段,用于把下一状态赋值给当前状态
always@(posedge clock or posedge reset)
begin 
if(reset)
current_state <= red_state;
else 
current_state <= next_state;
end
//第二段always,用于根据当前状态判断下一状态,并产生输出
always@(current_state)
begin 
case(current_state)
red state:begin
		red = 1;
		yellow=0;
		green = 0;
		repeat(delay_r2y)@(posedge clock);
		next_state = yellow_state;
		end
yellow state:begin
		red = 0;
		yellow=1;
		green = 0;
		repeat(delay_y2g)@(posedge clock);
		next_state = green_state;
		end	
green state:begin
		red = 0;
		yellow=0;
		green = 1;
		repeat(delay_g2r)@(posedge clock);
		next_state = red_state;
		end		
default:begin
		red = 1;
		yellow=0;
		green = 0;
		next_state = red_state;
		end	
endcase
end
endmodule		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值