基于VHDL的交通灯设计.docx
- 文档编号:25439161
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:11
- 大小:164.15KB
基于VHDL的交通灯设计.docx
《基于VHDL的交通灯设计.docx》由会员分享,可在线阅读,更多相关《基于VHDL的交通灯设计.docx(11页珍藏版)》请在冰豆网上搜索。
基于VHDL的交通灯设计
基于VHDL的交通灯设计
————————————————————————————————作者:
————————————————————————————————日期:
EDA课程设计报告书
课题名称
基于VHDL的交通灯设计
姓名
学号
院系
专业
指导教师
年月日
1.设计任务及要求:
2.设计任务:
模拟十字路口交通信号灯的工作过程,利用实验板上的两组
红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。
设计要求:
(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;
(2)交通灯红变绿是直接进行的,没有间隔时间;
(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;
(4)在任意时间,显示每个状态到该状态结束所需的时间。
指导教师签名:
年月日
二、指导教师评语:
指导教师签名:
年月日
三、成绩
验收盖章
年月日
基于VHDL的交通灯设计
一、设计任务及要求:
设计任务:
模拟十字路口交通信号灯的工作过程,利用实验板上的两组
红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。
设计要求:
(1)交通灯从绿变红时,有4秒黄灯亮的间隔时间;
(2)交通灯红变绿是直接进行的,没有间隔时间;
(3)主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;
(4)在任意时间,显示每个状态到该状态结束所需的时间。
支干道
主干道
图1路口交通管理示意图
A
B
C
D
主干道交通灯
绿(40秒)
黄(4秒)
红(20秒)
红(4秒)
支干道交通灯
红
红
绿
黄
表1交通信号灯的4种状态
二、设计原理:
设计目的:
学习DEA开发软件和QuartusII的使用方法,熟悉可编辑
器件的使用。
通过制作来了解交通灯控制系统,交通灯系统主要是实现城市十字交叉路口红绿灯的控制。
设计说明:
(1)第一模块:
clk时钟秒脉冲发生电路
在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:
系统输入信号:
clk:
由外接信号发生器提供256的时钟信号;
系统输出信号:
full:
产生每秒一个脉冲的信号;
(2)第二模块:
计数秒数选择电路
计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。
模块说明:
系统输入信号:
full:
接收由clk电路的提供的1hz的时钟脉冲信号;
系统输出信号:
tm:
产生显示电路状态转换信号;
tl:
倒计数值秒数个位变化控制信号;
th:
倒计数值秒数十位变化控制信号;
(3)第三模块:
红绿灯状态转换电路。
本电路负责红绿灯的转换。
模块说明:
系统输入信号:
full:
接收由clk电路的提供的1hz的时钟脉冲信号;
tm:
接收计数秒数选择电路状态转换信号;
comb_out:
负责红绿灯的状态显示。
(4)第四模块:
时间显示电路。
本电路负责红绿灯的计数时间的显示。
模块说明:
系统输入信号:
tl:
倒计数值秒数个位变化控制信号;
th:
倒计数值秒数十位变化控制信号;
系统输出信号:
led7s1:
负责红绿灯的显示秒数个位。
led7s2:
负责红绿灯的显示秒数十位。
3、设计方案
时间显示数据输出
红黄绿灯信号输出
图2交通信号灯控制器的原理框图
CLK
时间显示数据输出
信号灯输出
图3交通信号灯控制器程序原理框图
该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。
进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。
四、程序清单
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytrafficis
port(clk:
instd_logic;
led7s1:
outstd_logic_vector(6downto0);
led7s2:
outstd_logic_vector(6downto0);
comb_out:
outstd_logic_vector(5downto0));
end;
architectureoneoftrafficis
typedmis(s0,s1,s2,s3);
signalcurrent_state,next_state:
dm;
signalfull:
std_logic;
signaltl:
std_logic_vector(6downto0);
signalth:
std_logic_vector(1downto0);
signaltm:
std_logic_vector(6downto0);
signaltime:
std_logic_vector(6downto0);
begin
P_REG:
process(clk)
variablecnt8:
std_logic_vector(7downto0);
begin
ifclk'eventandclk='1'then
ifcnt8="11111111"then
cnt8:
="01111111";
full<='1';
elsecnt8:
=cnt8+1;
full<='0';
endif;
endif;
endprocessP_REG;
process(full)
begin
iffull'eventandfull='1'then
Iftime<"1000011"then
time<=time+1;
elsetime<="0000000";
endif;
endif;
endprocess;
REG:
process(full,current_state)
begin
iffull='1'andfull'eventthen
current_state<=next_state;
endif;
endprocess;
COM:
process(current_state,time)
begin
casecurrent_stateis
whens0=>comb_out<="001100";tm<=39-time;
iftime=39thennext_state<=s1;
elsenext_state<=s0;
endif;
whens1=>comb_out<="010100";tm<=43-time;
iftime=43thennext_state<=s2;
elsenext_state<=s1;
endif;
whens2=>comb_out<="100010";tm<=63-time;
iftime=63thennext_state<=s3;
elsenext_state<=s2;
endif;
whens3=>comb_out<="100001";tm<=67-time;
iftime=67thennext_state<=s0;
elsenext_state<=s3;
endif;
endcase;
endprocess;
process(tm)
begin
iftm>=30thenth<="11";tl<=tm-30;
elsiftm>=20thenth<="10";tl<=tm-20;
elsiftm>=10thenth<="01";tl<=tm-10;
elseth<="00";tl<=tm;
endif;
endprocess;
process(th,tl)
begin
casethis
when"00"=>led7s1<="0111111";
when"01"=>led7s1<="0000110";
when"10"=>led7s1<="1011011";
when"11"=>led7s1<="1001111";
whenothers=>null;
endcase;
casetlis
when"0000000"=>led7s2<="0111111";
when"0000001"=>led7s2<="0000110";
when"0000010"=>led7s2<="1011011";
when"0000011"=>led7s2<="1001111";
when"0000100"=>led7s2<="1100110";
when"0000101"=>led7s2<="1101101";
when"0000110"=>led7s2<="1111101";
when"0000111"=>led7s2<="0000111";
when"0001000"=>led7s2<="1111111";
when"0001001"=>led7s2<="1101111";
whenothers=>null;
endcase;
endprocess;
end;
五、仿真结果
六、实验心得体会
通过这次课程设计,我进一步加深了对电子设计自动化的了解。
并进一步熟练了对QuartusII软件的操作。
在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。
通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。
同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。
做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,再按照这个方向分模块的把要实现的功能用流程图的形式展示。
最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。
总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
参考文献
[1]江国强.EDA技术与应用.第三版.北京:
电子工业出版社,2010.
[2]康华光,邹寿彬,秦臻.电子技术基础数字部分[M].华中科技大学电子技术课程组编,北京:
高等教育出版社,2006.1(2009重印)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 VHDL 交通灯 设计