1/9
文档分类:IT计算机

用verilog语言编写交通灯程序.docx


下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

特别说明:文档预览什么样,下载就是什么样。

下载所得到的文件列表
用verilog语言编写交通灯程序.docx
文档介绍:





交通灯

一、 实验目的

写一个交通灯,要求:

① 有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为 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<
内容来自淘豆网www.taodocs.com转载请标明出处.
相关文档
非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cby201601
  • 文件大小141 KB
  • 时间2021-04-17