基于EDA的VHDL语言设计的交通灯
更新时间:2024-06-20 12:24:01 阅读量: 综合文库 文档下载
- 用VHDL语言设计半加器推荐度:
- 相关推荐
玉林师范学院本科生课程设计论文
基于Verilog HDL的RS编码器设计
院 系 专 业 学 生 班 级 姓 名 学 号 指导教师单位 指导教师姓名
电子与通信工程学院
通信工程 通信111班 韦仁良 201108402123
电子与通信工程学院
陈宇宁
【摘 要】
随着社会上特别是城市中机动车辆保有量的不断增加,在现代城市的日常运行控制中,车辆的交通控制越来越重要,在十字交叉路口,越来越多的使用红绿灯进行交通指挥和管理。本文以VHDL硬件描述语言为设计手段,完成了交通信号灯控制电路的设计,其中交通信号灯控制电路的开发目的是设计一个适用于主、支干道十字交叉路口的红黄绿交通灯的控制系统,通过合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。所设计的交通信号灯控制电路经过在QuartusⅡ 软件下进行模拟仿真,观察其波形,证明所设计的交通信号灯控制电路完全可以实现预定的功能,并有一定的实用性。
【关键词】
VHDL; QuartusⅡ; 交通灯
【题目要求】
用有限状态机设计一个交通灯控制器,设计要求:A路和B路,每路都有
红、黄、绿三种灯,持续时间为:红灯45s、黄灯5s、绿灯40s。A、B路交通灯的转换状态是:
(1)A红、B绿 (持续时间40s); (2)A红、B黄 (持续时间5); (3)A绿、B红 (持续时间40s); (4)A黄、B红 (持续时间5s);
【系统总体设计原理】
外部时钟 4000Hz 分频器 50MHz 1秒分频器 交通灯控制器 显示模块 数码管 发光二极管 该系统主要由分频模块fen50m_1s、控制模块traffic_control、转换模块bin2bcd以及显示模块display电路构成。其中分频模块fen50m_1s主要将系统输入的基准时钟信号转换为1Hz的激励信号,驱动控制模块工作。控制模块traffic_control根据计数情况对交通灯的亮灭及持续时间进行控制。转换模块bin2bcd将控制模块设计的亮灯时间的二进制转换为bcd码。显示模块display主要将亮灯时间以倒计时的形式通过数码显示出来
【时钟分频模块】
系统时钟脉冲为50MHz,为满足各个模块脉冲需求,需要分频成2Hz和4000Hz的脉冲。
fen50m_1s模块设计,实现频率由50MHz到2Hz的转变,达到我们需要的1s的要求,模块如下图:
分频器一
端口说明:
clkin:输入50MHz时钟脉冲 clkout:输出2Hz脉冲
fen50m_1s实现Verilog语言描述如下:
module fen50m_1s(clkin,clkout); input clkin; output clkout; reg clkout; reg [24:0] q;
always @(posedge clkin) begin
if (q==24999999)
begin q<=0;
clkout<=~clkout; end
else q<=q+1; end endmodule
编译结果:
分频器二fen50m_4000模块设计,实现频率由50MHz到4000Hz的转变
分频器二
端口说明:
clkin:输入50MHz时钟脉冲 clkout:输出4000Hz脉冲
分频器fen50m_4000模块实现程序:
module fen50m_4000(clkin,clkout); input clkin;
output clkout; reg clkout; reg [24:0] q;
always @(posedge clkin) begin
if (q==12499) begin q<=0;
clkout<=~clkout; end
else q<=q+1; end endmodule
编译结果:
【交通灯控制及计时模块】
端口说明:
Clock:输入时钟信号,上升沿有效。 Reset:复位信号,高电平有效。
Red1、yellow1、green1:分别表示A路的红灯、黄灯、绿灯显示信号,高电平有效。
Red2、yellow2、green2:分别表示B路的红灯、黄灯、绿灯显示信号,高电平有效。
Timea:A路绿灯亮时间,高电平有效。 Timeb:B路红灯亮时间,高电平有效。 Alarm:倒计时信号输出
实现程序:
module
traffic_control(clock,reset,red1,yellow1,green1,red2,yellow2,green2,timea,timeb,alarm); input clock,reset;
output red1,yellow1,green1,red2,yellow2,green2,alarm; output [7:0] timea,timeb; reg [1:0] state=2'b00;
reg [7:0] timea=40; //A路绿灯亮时间 reg [7:0] timeb=45; //B路红灯亮时间
reg red1=1'b0,yellow1=1'b0,green1=1'b1; //A绿灯亮 reg red2=1'b1,yellow2=1'b0,green2=1'b0; //B红灯亮 reg alarm=1'b0;
always @(posedge clock or posedge reset) begin
if (reset) begin
state<=2'b00; timea<=40; timeb<=45; end else begin
case (state) 2'b00: begin
if (timea==0) //A绿灯亮时间40S结束 begin
timea<=5; //A黄灯亮时间5S
red1<=1'b0; yellow1<=1'b1; green1<=1'b0; //A黄灯亮 red2<=1'b1; yellow2<=1'b0; green2<=1'b0; //B红灯继续亮
state<=2'b01; //转到A黄灯,B红灯 end else begin
timea<=timea-1; //A绿灯亮时间40S-- timeb<=timeb-1; //B红灯亮时间45S-- state<=2'b00; end end 2'b01:
begin
if (timea==0) //A黄灯亮5S时间结束 begin
timea<=45; //A红灯亮时间45S timeb<=40; //B绿灯亮时间40S
red1<=1'b1; yellow1<=1'b0; green1<=1'b0; //A红灯亮 red2<=1'b0; yellow2<=1'b0; green2<=1'b1; //B绿灯亮 alarm<=1'b0;
state<=2'b10; //转到A红灯,B绿灯 end else begin
timea<=timea-1; //A黄灯亮时间3S-- timeb<=timeb-1; //B红灯亮时间3S-- alarm<=~alarm; yellow1<=~yellow1;
state<=2'b01; end end
2'b10:
begin
if (timeb==0) //B绿灯亮40S时间结束 begin
timeb<=5; //B灯黄亮时间5S
red1<=1'b1; yellow1<=1'b0; green1<=1'b0; //A红灯亮 red2<=1'b0; yellow2<=1'b1; green2<=1'b0; //B黄灯亮 state<=2'b11; //转到A红灯,B黄灯 end else begin
timea<=timea-1; //A红灯亮时间-- timeb<=timeb-1; //B绿灯亮时间-- state<=2'b10; end end
2'b11: begin
if (timeb==0) //B黄灯亮5S时间结束 begin
timea<=40; //A绿灯亮时间40S timeb<=45; //B绿灯亮时间45S
red1<=1'b0; yellow1<=1'b0; green1<=1'b1; //A绿灯亮 red2<=1'b1; yellow2<=1'b0; green2<=1'b0; //B红灯亮 alarm<=1'b0;
state<=2'b00; //转到A绿灯,B红灯 end else
begin
timea<=timea-1; //A红灯亮时间-- timeb<=timeb-1; //B黄灯亮时间-- alarm<=~alarm; yellow2<=~yellow2; state<=2'b11; end
end endcase end end
Endmodule
编译结果:
此模块是整个系统的核心部分,主要功能是完成四个状态的转换,并且在每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和各自数码管倒计时显示。
【bin2bcd转换模块】
该模块将二进制语言转换为BCD码输出,模块如下图:
端口说明:
numin[7..0]:输入8位二进制编码 numa[3..0]:输出高4位BCD码 numb[3..0]:输出低4位BCD码
bin2bcd转换模块实现程序:
module bin2bcd(numin,numa,numb); input[7:0] numin;
output[3:0] numa,numb; reg[3:0] numa,numb; always @(numin) begin
if (numin>=90) begin numa=9; numb=numin-90; end
else if (numin>=80) begin numa=8; numb=numin-80; end else if (numin>=70) begin numa=7; numb=numin-70; end else if (numin>=60) begin numa=6; numb=numin-60; end else if (numin>=50) begin numa=5; numb=numin-50; end else if (numin>=40) begin numa=4; numb=numin-40; end else if (numin>=30) begin numa=3; numb=numin-30; end else if (numin>=20) begin numa=2; numb=numin-20; end else if (numin>=10) begin numa=1; numb=numin-10; end else begin numa=0; numb=numin; end end endmodule
编译结果:
正在阅读:
基于EDA的VHDL语言设计的交通灯06-20
2017-2018学年度最新北师大版小学数学一年级下册一年级数学综合练习-精品试题01-04
论文关键词:少数民族音乐 兴趣04-23
亲爱的观后感、影评04-02
配置管理计划样例(软件开发)07-06
哪里有便宜的java培训机构 - 图文01-06
工程热力学大总结,第五版01-18
中国医科大学2015年9月补考《传染病护理学》考查课试题03-17
资深和功勋员工的条件04-01
2012年中考初中英语知识点梳理及操练03-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 交通灯
- 基于
- 语言
- 设计
- VHDL
- EDA
- 大学考试试卷《统计学》及答案3套
- 论文5
- 基于89C51单片机太阳能水温水位控制系统
- 助理物流师复习题
- 鼎龙逸挥中学校志(修订稿201612)
- 高中历史之世界近代民主政治高考题
- 新版人力资源管理三级 - 培训教程总结081111
- 川建发〔2017〕5号-四川省住房和城乡建设厅关于印发《四川省建设
- 第七章 静电场-典型例题
- 毕业设计计算书 - 副本
- 注会经济法·第一章法律基础知识(1)
- Powerpoint 2010 习题汇总及答案
- 旅游景点策划方案3篇
- Kbuild和Makefile
- 数字图像处理技术的研究现状及其发展方向
- 四川一体化政务服务平台总体框架设计方案
- 实施内部审计业务教材例题集锦
- 电子技术(一)习题库2015年.
- 2015新版pep小学六年级英语下册第一单元测试题Unit 1
- C语言教学计划