下载此文档

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


文档分类:IT计算机 | 页数:约9页 举报非法文档有奖
1/9
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/9 下载此文档
文档列表 文档介绍

交通灯
一、 实验目的
写一个交通灯,要求:
① 有东西南北四个方向,两组交通灯轮流交替变换,其中,红灯时间为 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转载请标明出处.

非法内容举报中心
文档信息
  • 页数9
  • 收藏数0 收藏
  • 顶次数0
  • 上传人cby201601
  • 文件大小141 KB
  • 时间2021-04-17