。
交通灯
一、 实验目的
写一个交通灯,要求:
① 有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为 30 个时间单位,绿灯时间为 25 个时间单位,黄灯时间为 5 个时间单位。最后用 modelsim 软件进行仿真。
② 要求设计是一个可综合设计。
二、 实验原理
根据实验要求的逻辑功能描述,可以分析得出原理图如下:
控制器即可以设计为一个有限状态机的形式:
E-W方向
S-N 方向
状态
R
Y
G
R
Y
G
1
0
0
1
0
0
IDLE
1
0
0
0
0
1
S1
1
0
0
0
1
0
S2
0
0
1
1
0
0
S3
0
1
0
1
0
0
S4
根据实验要求画出控制器的状态转移图如下:
三、 代码
。
1
。
1、 源代码
( 1)控制器模块
module traffic_lights(clk,rst,count,ew,sn);
input clk,rst;
input[5:0] count;
output[2:0] ew,sn;
reg[2:0] ew,sn;
reg[3:0] state;
parameter Idle=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100; always @(posedge clk)
if(!rst)
begin
state<=Idle;
end
else
casex(state)
Idle: if(rst)
begin
state<=s1;
end
s1: if(count=='d25)
begin
state<=s2;
end
s2: if(count=='d30)
begin
state<=s3;
end
。
2
。
s3: if(count=='d55)
begin
state<=s4;
end
s4: if(count=='d60)
begin
state<=s1;
end
endcase
always @(posedge clk)
begin
if(!rst)
begin
ew<=3'b100;
sn<=3'b100;
end
else
casex(state)
Idle: if(rst)
begin
ew<=3'b100;
sn<=3'b001;
end
s1: if(count=='d25)
begin
ew<=3'b100;
sn<
用verilog语言编写交通灯程序 来自淘豆网www.taodocs.com转载请标明出处.