交通信号灯EDA课程设计文档格式.docx
- 文档编号:7860518
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:17
- 大小:108.86KB
交通信号灯EDA课程设计文档格式.docx
《交通信号灯EDA课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《交通信号灯EDA课程设计文档格式.docx(17页珍藏版)》请在冰点文库上搜索。
4.状态转换………………………………………………………………………………3
5.时间显示………………………………………………………………………………4
6.译码模块………………………………………………………………………………4
5、试验程序……………………………………………………………………………5
六、原理图………………………………………………………………………………7
七、仿真结果……………………………………………………………………………7
八、实验步骤……………………………………………………………………………8
九、实验结果……………………………………………………………………………8
十、实验总结……………………………………………………………………………8
十一、参考文献…………………………………………………………………………8
课程设计任务书
课题名称
交通信号灯
完成时间
2014年12月5日
指导教师
崔瑞雪
职称
副教授
学生姓名
徐幔雪
班级
B12222
总体设计要求和技术要点
设计一个交通信号灯控制电路。
要求:
1、主干道和支干道交替放行,主干道每次放行30秒,支干道每次放行20秒;
2、每次绿灯变红灯时,黄灯先亮5秒钟,此时原红灯不变;
3、用十进制数字(递增计数)显示放行和等待时间。
技术要点:
1、主(支)干道红灯时间等于支(主)干道红绿黄灯时间之和;
2、用时钟数据扫描通过视觉暂留来数码管显示等待时间;
3、状态寄存器和状态寄存器的结合灵活运用;
4、计数时间值要译成七段译码值。
工作内容及时间进度安排
工作内容:
在软件上编辑、编译程序,并仿真到达实验要求。
进度安排;
课下编写程序,并要求程序能通过编译仿真;
第十四周的周四在实验板上下载调试程序;
课程设计成果
1.与设计内容对应的软件程序
2.课程设计报告书
1、实验目的
学习EDA开发软件和Quartus
的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。
二、硬件要求
(1)主芯片EPF10K10LC84-4。
(2)6个LED灯。
(3)clk发生器。
(4)2个8位八段扫描共阴极数码显示管。
3、方案论证
模拟十字路口交通信号灯的工作过程,设计一个交通信号灯控制器,需要一个范围为0—59(共60秒)的计数器,并根据计数值选择信号灯状态,利用实验板上的两组红、黄、绿LED作为交通信号灯;
用数码管显示等待时间,需输入较高频率的CLK时钟信号,驱动七段数码管,还需要一个译码电路。
(1)交通灯从绿变红时,有5秒黄灯亮的间隔时间;
(2)交通灯红变绿是直接进行的,没有间隔时间;
(3)主干道上的绿灯时间为30秒,支干道的绿灯时间为20秒;
(4)在任意时间,显示等待时间。
交通信号灯的4种状态
S0(30秒)
S1(5秒)
S2(20秒)
S3(5秒)
主干道交通灯
绿
黄
红
支干道交通灯
四、模块说明
时钟的设计共化分为6个模块:
1.clk时钟秒脉冲发生电路或分频器;
2.时钟扫描电路;
3.六十进制计数器;
4.状态转换;
5.时间显示;
6.译码模块。
下面具体分析各个模块的原理、内容和功能。
(1)clk时钟秒脉冲发生电路
输入信号clk_in:
由外接信号发生器提供153hz的时钟信号
输出CLK:
产生每秒一个脉冲的信号;
fen:
process(clk_in)
variablecnt:
std_logic_vector(16downto0);
begin
ifclk_in'
eventandclk_in='
1'
then-----上升沿触发
ifcnt="
10011000100101101"
then-----clk_in153个周期清零clk高电平(一个周期),
cnt:
="
00000000000000000"
;
clk<
='
elsecnt:
=cnt+1;
-----否则自加一
clk<
='
0'
endif;
endprocessfen;
(2)时钟扫描电路
输入clk_in:
由外接信号发生器提供153hz的时钟信号;
输出count:
个十位选择端,值传递给sel
a:
process(clk_in,count)
begin
eventandclk_in='
then------高频信号clk_in触发count不断出现00和01
ifcount="
01"
then
count<
00"
elsecount<
=count+1;
casecountis-------不断扫描count出现的00和01状态使两个数码管轮流闪亮
when"
=>
selout<
=led7s2;
=led7s1;
whenothers=>
null;
endcase;
endprocessa;
(3)六十进制计数器time0
process(clk)
begin
ifclk'
eventandclk='
then
iftime0="
0111100"
then
time0<
0000001"
elsetime0<
=+1;
endprocess;
(4)红绿灯状态转换
输入clk:
接收由clk电路的提供的1hz的时钟脉冲信号;
输出tm:
接收计数秒数选择电路状态转换信号;
da_out:
负责红绿灯的状态显示。
reg:
process(clk,current_state)------定义当前状态与次态的触发关系
begin-----产生上升沿时次态把自己的状态赋予当前状态
ifclk='
andclk'
eventthen
current_state<
=next_state;
endprocessreg;
com:
process(current_state,time0)------设定四种亮灯状态的时间和触发顺序
Begin
casecurrent_stateis
whens0=>
<
001100"
tm<
=30-time0;
-----主绿和支红状态,
iftime0=29thennext_state<
=s1;
----当计时到29秒时将s1状态赋给次态,
elsenext_state<
=s0;
----此时当前状态还是s0,
---等到下一个上升沿后次态将s1赋给当前状态
whens1=>
da_out<
010100"
=35-time0;
-----主黄和支红状态
iftime0=34thennext_state<
=s2;
whens2=>
100001"
=55-time0;
-----主红和支绿状态
iftime0=54thennext_state<
=s3;
whens3=>
100010"
=60-time0;
-----主红和支黄状态
iftime0=59thennext_state<
endprocesscom;
(5)时间显示
输入信号:
tl:
倒计数值秒数个位变化控制信号;
th:
倒计数值秒数十位变化控制信号。
输出信号:
led7s1:
负责红绿灯的显示秒数个位;
led7s2:
负责红绿灯的显示秒数十位。
process(tm)-----根据计数控制个、十位数码管显示倒计时数
iftm>
=30THENth<
11"
tl<
0000000"
elsiftm>
=20THENth<
10"
=tm-20;
=10THENth<
=tm-10;
elseth<
=tm;
(6)译码模块
process(th,tl)
casethis-----控制十位数码管显示0,1,2,3
led7s1<
1111110"
0110000"
1101101"
1111001"
casetlis-----控制个位数码管显示0,1,2,3,4,5,6,7,8,9
when"
led7s2<
="
0000010"
0000011"
0000100"
0110011"
0000101"
1011011"
0000110"
1011111"
0000111"
1110000"
0001000"
1111111"
0001001"
1111011"
五、试验程序
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);
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:
signaltime0:
std_logic_vector(6downto0);
signaltm:
signaltl:
signalth:
std_logic_vector(1downto0);
sel<
=count;
ifcnt="
then
cnt:
casecountis
=time0+1;
process(clk,current_state)
process(current_state,time0)
process(tm)
casethis
casetlis
endone;
六、原理图
七、仿真结果
八、实验步骤
(1)安装quartusⅡ软件,为本项设计建立文件夹。
(2)输入设计项目的各个模块,存盘检查,编译并仿真至无误。
(3)调用各个模块,进行存盘检查,编译仿真至无误。
(4)将PC机与试验箱进行连接选择器件并锁定引脚,然后进行编译下载。
(5)按照锁定好的引脚进行连线,进行硬件测试,验证仿真和测试结果。
九、实验结果
通过硬件测试,得到如下测试结果:
(1)主干路支干路红绿灯循环点亮。
(2)数码管能够正确显示时钟数字,并以秒计数。
十、总结
1、程序要分步分模块调试后连接在一起实现功能,同组同学可分工配合,提高效率。
2、同一课题的同学要多交流,遇到问题大家一起交流可以很快找出错误解决问题。
3、在试验箱调程序要细心认真,注意细节。
更正连线错误时要先断电。
十一、参考文献
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通 信号灯 EDA 课程设计