EDA实验报告---交通灯.doc
文本预览下载声明
Harbin Institute of Technology
EDA自主设计实验报告
姓 名:
学 号:
班 级:
学 院:
课程名称: EDA技术与实验
实验名称: 交通灯的设计
实验日期: 2013.11.24
交通灯的设计
一.实验目的
通过用verilog hdl语言实现十字路口交通灯的设计,做到熟练掌握和应用verilog hdl语言;
进一步熟悉QuartusⅡ软件和FPGA的开发过程,练习调试电路,学会处理遇到的问题。
二.实验仪器
QuartusⅡ集成开发软件;
Altera FPGA开发板;
PC机一台。
三.设计过程
设计目的
本实验旨在模拟十字路口交通信号灯的工作过程,在实验板上选取的两组(每组三个)LED代替交通信号灯,设计一个交通信号灯控制器。两路LED灯的亮灭采用对应方式,即一路红灯亮10秒对应二路绿灯先亮7秒,黄灯再亮3秒;然后二路红灯亮10秒,对应一路绿灯亮7秒,黄灯亮3秒,即采用两路循环亮灯方式,两路亮灯对应时间如下表所示。每次亮灯时,倒计时时间通过数码管显示。
1 2 3 4 一路交通灯 红灯7秒 红灯3秒 绿灯7秒 黄灯3秒 二路交通灯 绿灯7秒 黄灯3秒 红灯7秒 红灯3秒 交通灯设计示意图如图1所示
图1 交通灯设计示意图
设计程序简介
本次交通灯设计的程序分为顶层模块和底层模块两部分,通过顶层模块调用底层模块实现本次设计的全部功能。
顶层模块。顶层模块控制交通信号灯的亮灭以及每种信号灯亮
顺序和时间。对应程序如下:
/*
信号定义与说明:
CLK: 为同步时钟;
EN: 使能信号,为1的话,则控制器开始工作;
LAMPA: 控制A方向三盏灯的亮灭;其中,LAMPA0—LAMPA2 ,分别控制A方向的绿灯、黄灯和红灯;
LAMPB: 控制B方向三盏灯的亮灭;其中,LAMPB0—LAMPB2 ,分别控制B方向的绿灯、黄灯和红灯;
ACOUNT: 用于A方向灯的时间显示,8位,可驱动两个数码管;
BCOUNT: 用于B方向灯的时间显示,8位,可驱动两个数码管。
*/
module control(CLK50,EN,LAMPA,LAMPB,aten,aone,bten,bone);
output[6:0] aten,aone,bten,bone;
output[2:0] LAMPA,LAMPB; //LAMP 绿色、黄色和红色
input CLK50,EN;
reg[7:0] numa,numb; //分成高低四位 用来表示数码管数字
reg tempa,tempb; //工作状态指示位
reg[2:0] counta,countb; //状态转换
reg[7:0] ared,ayellow,agreen,bred,byellow,bgreen; //存储灯内部的时间
reg[2:0] LAMPA,LAMPB;
wire CLK;
always@(EN)
begin
if(!EN)
begin //设置各种灯的计数器的预置数
ared =8d10; //10秒
ayellow =8d3; //3秒
agreen =8d7; //7秒
bred =8d10; //10秒
byellow =8d3; //3秒
bgreen =8d7; //7秒
end
end
always@(posedge CLK) //该进程控制A方向的三种灯
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=ared; LAMPA=1; counta=0; end
default: LAMPA=0;
endcase
end
else
begin //倒计时
if(numa1)
begin
if(numa[3:0]=
显示全部