EDA 交通信号灯.docx
- 文档编号:11190128
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:15
- 大小:39.38KB
EDA 交通信号灯.docx
《EDA 交通信号灯.docx》由会员分享,可在线阅读,更多相关《EDA 交通信号灯.docx(15页珍藏版)》请在冰豆网上搜索。
EDA交通信号灯
北华航天工业学院
《EDA技术综合设计》
课程设计报告
报告题目:
交通信号灯控制电路设计
作者所在系部:
作者所在专业:
作者所在班级:
作者姓名:
指导教师姓名:
完成时间:
内容摘要
EDA技术是现代电子信息工程领域的一门新技术,它是在先进的计算机平台上开发出来的一整套电子系统设计的软硬件工具,并提供了先进电子系统设计方法。
当今的技术,开发人员完全可以通过自己的电子系统设计来制定芯片内部的电路功能,使之成为设计者自己的专用集成电路芯片。
这种技术中常用软件有quartusII,而程序的编辑是用VHDL语言实现逻辑功能的。
本实验试验系统中可用可编程逻辑器件为FPGA,本实验的交通信号灯的设计:
首先在quartusII软件当中编辑程序,编译完成之后仿真,当仿真结果正确时下载到试验箱的系统中。
最终的目的要在实验板上用红路灯表示出来,并且同时要用数码管显示出人们的等待时间,交通灯的状态变化和显示时间同步。
关键字:
交通灯、QuartusII、FPGA
目录
一、设计任务…………………………………………………………………………………1
二、设计结构…………………………………………………………………………………1
1、clk时钟秒脉冲发生电路或分频器………………………………………………1
2、六十进制计数器……………………………………………………………………1
3、次态发生器………………………………………………………………………2
4、状态寄存器及等待时间输出……………………………………………………2
5、时间显示电路………………………………………………………………………2
6、时钟扫描电路………………………………………………………………………2
三、原理图……………………………………………………………………………………2
四、程序………………………………………………………………………………………3
五、心得体会……………………………………………………………………………7
课程设计任务书
课题名称
交通信号的控制电路设计
完成时间
、
、
、
、
、
、
陈子超
、
B09232
总体设计要求和技术要点
设计一个交通信号灯控制电路。
要求:
1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒;
2、每次绿灯变红灯时,黄灯先亮5秒钟,此时原红灯不变;
3、用十进制数字(递增计数)显示放行和等待时间。
技术要点:
1、主(支)干道红灯时间等于支(主)干道红绿黄灯时间之和;
2、用时钟数据扫描通过视觉暂留来数码管显示等待时间;
3、状态寄存器和状态寄存器的结合灵活运用;
4、计数时间值要译成七段译码值。
工作内容及时间进度安排
工作内容:
在软件上编辑、编译程序,并仿真到达实验要求。
进度安排;
课下编写程序,并要求程序能通过编译仿真;
第十四周的周三在实验板上下载调试程序;
周四课设答辩。
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
3.成果使用说明书
4.设计工作量要求
交通信号控制器的VHDL的设计
一、设计任务
模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,用数码管显示等待时间。
设计一个交通信号灯控制器。
能达到的要求:
(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;
(2)交通灯红变绿是直接进行的,没有间隔时间;
(3)主干道上的绿灯时间为30秒,支干道的绿灯时间为20秒;
(4)在任意时间,显示等待时间。
支干道
主干道
图1路口交通管理示意图
A
B
C
D
主干道交通灯
绿(30秒)
黄(5秒)
红(20秒)
红(5秒)
支干道交通灯
红
红
绿
黄
表1交通信号灯的4种状态
二、设计结构
学习EDA开发软件quartusII的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
1、clk时钟秒脉冲发生电路或分频器
在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。
模块说明:
系统输入信号:
Clk_in:
由外接信号发生器提供153的时钟信号;
系统输出信号:
clk:
产生每秒一个脉冲的信号;
2、六十进制计数器
该计数器的功能就是来一个脉冲信号time值加一,在六十内循环,为等待时间的技术做准备。
模块说明:
系统输入:
clk:
接收由分频器提供的1hz的时钟脉冲信号;
系统输出信号:
time:
产生计数值;
3、次态发生器
次态发生器故名词义就是产生下一个状态,每秒状态更新一次,在S0,S1,S2,S3,四个状态中循环
模块说明:
系统输入:
clk:
接收分频器提供的1hz的时钟脉冲信号;
current_state:
状态寄存器的当前输入;
系统输出信号:
next_sate:
产生新的状态;
4、状态寄存器及等待时间输出
该模块相当于本试验的核心,在计数值time的增加下不不安变换状态,在不同的时间内输出交通灯应有的状态,同时输出距当时状态结束的时间值。
模块说明:
系统输入:
time:
接收计数器提供的脉冲信号;
Next_state:
接受次态发生器的输出;
系统输出信号:
day_out:
信号灯的状态;Tm:
等待时间值;
5、时间显示电路
本电路负责红绿灯的计数时间的显示即译出段码值。
模块说明:
系统输入:
tm:
接收次态发生器提供的等待时间值;
系统输出信号:
led7s1:
负责红绿灯的显示秒数个位。
led7s2:
负责红绿灯的显示秒数十位。
6、时钟扫描电路
负责不断地扫描俩个数码管显示其值,在153hz的频率下形成视觉暂留,显示等待时间
三、原理图
信号灯输出
分频计
计数器
时间显示
状态寄存器
七段段码
数码管片选
次态发生器
时钟扫描
四、试验程序
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitytrafficis
port(clk_in:
instd_logic;
selout:
outstd_logic_vector(6downto0);
sel:
outstd_logic_vector(1downto0);
da_out:
outstd_logic_vector(5downto0));
endtraffic;
architectureoneoftrafficis
typedmis(s0,s1,s2,s3);
signalcurrent_state,next_state:
dm;
signalclk:
std_logic;
signalcount:
std_logic_vector(1downto0);
signalled7s1:
std_logic_vector(6downto0);
signalled7s2:
std_logic_vector(6downto0);
signaltime:
std_logic_vector(6downto0);
signaltm:
std_logic_vector(6downto0);
signaltl:
std_logic_vector(6downto0);
signalth:
std_logic_vector(1downto0);
begin
sel<=count;
fen:
process(clk_in)
variablecnt:
std_logic_vector(8downto0);
begin
ifclk_in'eventandclk_in='1'then
ifcnt="100110001"then
cnt:
="010011000";
clk<='1';
elsecnt:
=cnt+1;
clk<='0';
endif;
endif;
endprocessfen;
a:
process(clk_in,count,led7s1,led7s2)
begin
ifclk_in'eventandclk_in='1'then
ifcount="01"then
count<="00";
elsecount<=count+1;
endif;
endif;
casecountis
when"00"=>selout<=led7s2;
when"01"=>selout<=led7s1;
whenothers=>null;
endcase;
endprocessa;
process(clk)
begin
ifclk'eventandclk='1'then
iftime="0111100"then
time<="0000001";
elsetime<=time+1;
endif;
endif;
endprocess;
reg:
process(clk,current_state)
begin
ifclk='1'andclk'eventthen
current_state<=next_state;
endif;
endprocessreg;
com:
process(current_state,time)
begin
casecurrent_stateis
whens0=>da_out<="001100";tm<=30-time;
iftime=29thennext_state<=s1;
elsenext_state<=s0;
endif;
whens1=>da_out<="010100";tm<=35-time;
iftime=34thennext_state<=s2;
elsenext_state<=s1;
endif;
whens2=>da_out<="100001";tm<=55-time;
iftime=54thennext_state<=s3;
elsenext_state<=s2;
endif;
whens3=>da_out<="100010";tm<=60-time;
iftime=59thennext_state<=s0;
elsenext_state<=s3;
endif;
endcase;
endprocesscom;
process(tm)
begin
iftm>=30THENth<="11";tl<="0000000";
elsiftm>=20THENth<="10";tl<=tm-20;
elsiftm>=10THENth<="01";tl<=tm-10;
elsifth<="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;
endone;
五、心得体会
通过本次课程设计我进一步了解了VHDL语言的结构和编程方法,了解了EDA的工作原理,学会了各个并行进程之间相互通信协同工作的过程。
并通过硬件实验和对FPGA的程序下载初步掌握了电子EDA的设计方法。
。
在编写程序的过程中,遇到了很多问题,对VHDL语言掌握程度不够,对如何将电路的性能与自己设计的语言不能相一致,存在很多不足,但通过与同组同学探讨,对VHDL语言有了更胜一步的掌握,并加深了对交通灯原理和设计思路的了解,同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。
做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。
最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。
。
指导教师评语及设计成绩
评语
课程设计成绩:
指导教师:
日期:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 交通信号灯 交通 信号灯