当前位置:首页 >> 信息与通信 >>

EDA课程设计-----交通灯设计


课程

EDA 技术课程设计 交通灯控制器

题目

专业

电子信息工程

姓名

学号

主要内容、基本要求、主要参考资料等

主要内容:
设计一个交通信号灯控制器, 由一条主干道和一条支干道汇合成十字路口, 在每个入口处设置红、 绿、 黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

基本要求:
1、红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是否到来的信号,实验电路用 逻辑开关代替。 2、主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道亮绿灯时,支干道亮红灯; 支干道亮绿灯时,主干道亮红灯。 3、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45 秒、25秒计时、显示电路,选择1HZ时钟脉冲作为系统时钟。 4、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行 线外,设立5秒计时、显示电路。

主要参考资料:
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

完成期限

2012.3.2

指导教师

专业负责人 2012 年 2 月 27 日

一、总体设计思想
1.基本原理 1.基本原理 基本 交通灯是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。本实 例就是实现一个常见的十字路通灯功能。读者通过学习这个交通灯控制器,可 以实现一个更加完整的交通灯。例如实现实时配置各种灯的时间,手动控制各 个灯的状态等。 一个十字路口的交通一般分为两个方向,每个方向具有红灯、绿灯和黄灯 3 种, 另外每个方向还具有左转灯,因此每个方向具有 4 个灯。 这个交通灯还为每一个灯的状态设计了倒计时数码管显示功能。可以为每一个 灯的状态设置一个初始值,灯状态改变后,开始按照这个初始值倒计时。倒计 时归零后,灯的状态将会改变至下一个状态。 值得注意的是,交通灯两个方向的灯的状态是相关的。也就是说,每个方向的 灯的状态影响着另外一个方向的灯的状态,这样才能够协调两个方向的车流。 如果每个方向的灯是独立变化的,那么交通灯就没有了意义。 2.设计框图 2.设计框图 设计 交通灯控制器原理框图如下图所示,包括置数模块、计数模块、主控制器 模块和译码器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模 块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入 下一个状态的倒计时。其中,核心部分是主控制模块。

1

红 红 绿 黄

绿 黄

清零

主控制器

特殊状态

定时计数器

置数器

译码器

显示器

二、设计步骤和调试过程
1、总体设计电路

2、模块设计和相应模块程序 (1)交通灯控制器 JTDKZ 设计模块与程序

2

源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JTDKZ IS PORT(CLK,SM,SB: IN STD_LOGIC; MR,MY,MG,BR,BY,BG: OUT STD_LOGIC); END JTDKZ; ARCHITECTURE ART OF JTDKZ IS TYPE STATE_TYPE IS(A,B,C,D); SIGNAL STATE:STATE_TYPE; BEGIN CNT:PROCESS(CLK) IS VARIABLE S:INTEGER RANGE 0 TO 45; VARIABLE CLR,EN:BIT; BEGIN IF(CLK'EVENT AND CLK='1')THEN IF CLR='0'THEN S:=0; ELSIF EN='0' THEN S:=S; ELSE S:=S+1; END IF; CASE STATE IS WHEN A=>MR<='0';MY<='0';MG<='1'; BR<='1';BY<='0';BG<='0'; IF(SB AND SM)='1'THEN IF S=45 THEN STATE<=B;CLR:='0';EN:='0';
3

ELSE STATE<=A;CLR:='1';EN:='1'; END IF; ELSIF(SB AND (NOT SM))='1'THEN STATE<=B;CLR:='0';EN:='0'; ELSE STATE<=A;CLR:='1';EN:='1'; END IF; WHEN B=>MR<='0';MY<='1';MG<='0'; BR<='1';BY<='0';BG<='0'; IF S=5 THEN STATE<=C;CLR:='0';EN:='0'; ELSE STATE<=B;CLR:='1';EN:='1'; END IF; WHEN C=>MR<='1';MY<='0';MG<='0'; BR<='0';BY<='0';BG<='1'; IF(SM AND SB)='1'THEN IF S=25 THEN STATE<=D;CLR:='0';EN:='0'; ELSE STATE<=C;CLR:='1';EN:='1'; END IF; ELSIF SB='0' THEN STATE<=D;CLR:='0';EN:='0'; ELSE STATE<=C;CLR:='1';EN:='1'; END IF ; WHEN D=>MR<='1';MY<='0';MG<='0'; BR<='0';BY<='1';BG<='0'; IF S=5 THEN STATE<=A;CLR:='0';EN:='0'; ELSE STATE<=D;CLR:='1';EN:='1'; END IF; END CASE; END IF; END PROCESS CNT; END ARCHITECTURE ART;

(2)显示控制单元 CSKZ 设计模块与程序

4

源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CSKZ IS PORT(EN45,EN25,EN05M,EN05B:IN STD_LOGIC; AIN45M,AIN45B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); AIN25M,AIN25B,AIN05:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUTM,DOUTB:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CSKZ; ARCHITECTURE ART OF CSKZ IS BEGIN PROCESS(EN45,EN25,EN05M,EN05B) IS BEGIN IF EN45='1' THEN DOUTM<=AIN45M(7 DOWNTO 0);DOUTB<=AIN45B(7 DOWNTO 0); ELSIF EN05M ='1'THEN DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0); ELSIF EN25='1' THEN DOUTM<=AIN25M(7 DOWNTO 0); DOUTB<=AIN25B(7 DOWNTO 0); ELSIF EN05B='1' THEN DOUTM<=AIN05(7 DOWNTO 0);DOUTB<=AIN05(7 DOWNTO 0); END IF ; END PROCESS; END ARCHITECTURE ART;

(3)倒计时 45s——CNT45s 设计模块与程序

5

源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT45S IS PORT(SB,CLK,EN45:IN STD_LOGIC; DOUT45M,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END CNT45S; ARCHITECTURE ART OF CNT45S IS SIGNAL CNT6B:STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN PROCESS(SB,CLK,EN45) IS BEGIN IF SB='0' THEN CNT6B<=CNT6B-CNT6B-1; ELSIF(CLK'EVENT AND CLK='1')THEN IF EN45='1'THEN CNT6B<=CNT6B+1; ELSIF EN45='0'THEN CNT6B<=CNT6B-CNT6B-1; END IF; END IF; END PROCESS; PROCESS(CNT6B)IS BEGIN CASE CNT6B IS WHEN"000000"=>DOUT45M<="01000101";DOUT45B<="01010000"; WHEN"000001"=>DOUT45M<="01000100";DOUT45B<="01001001"; WHEN"000010"=>DOUT45M<="01000011";DOUT45B<="01001000"; WHEN"000011"=>DOUT45M<="01000010";DOUT45B<="01000111"; WHEN"000100"=>DOUT45M<="01000001";DOUT45B<="01000110"; WHEN"000101"=>DOUT45M<="01000000";DOUT45B<="01000101"; WHEN"000110"=>DOUT45M<="00111001";DOUT45B<="01000100"; WHEN"000111"=>DOUT45M<="00111000";DOUT45B<="01000011"; WHEN"001000"=>DOUT45M<="00110111";DOUT45B<="01000010";
6

WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001"; WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000"; WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="00111001"; WHEN"001100"=>DOUT45M<="00110011";DOUT45B<="00111000"; WHEN"001101"=>DOUT45M<="00110010";DOUT45B<="00110111"; WHEN"001110"=>DOUT45M<="00110001";DOUT45B<="00110110"; WHEN"001111"=>DOUT45M<="00110000";DOUT45B<="00110101"; WHEN"010000"=>DOUT45M<="00101001";DOUT45B<="00110100"; WHEN"010001"=>DOUT45M<="00101000";DOUT45B<="00110011"; WHEN"010010"=>DOUT45M<="00100111";DOUT45B<="00110010"; WHEN"010011"=>DOUT45M<="00100110";DOUT45B<="00110001"; WHEN"010100"=>DOUT45M<="00100101";DOUT45B<="00110000"; WHEN"010101"=>DOUT45M<="00100100";DOUT45B<="00101001"; WHEN"010110"=>DOUT45M<="00100011";DOUT45B<="00101000"; WHEN"010111"=>DOUT45M<="00100010";DOUT45B<="00100111"; WHEN"011000"=>DOUT45M<="00100001";DOUT45B<="00100110"; WHEN"011001"=>DOUT45M<="00100000";DOUT45B<="00100101"; WHEN"011010"=>DOUT45M<="00011001";DOUT45B<="00100100"; WHEN"011011"=>DOUT45M<="00011000";DOUT45B<="00100011"; WHEN"011100"=>DOUT45M<="00010111";DOUT45B<="00100010"; WHEN"011101"=>DOUT45M<="00010110";DOUT45B<="00100001"; WHEN"011110"=>DOUT45M<="00010101";DOUT45B<="00100000"; WHEN"011111"=>DOUT45M<="00010100";DOUT45B<="00011001"; WHEN"100000"=>DOUT45M<="00010011";DOUT45B<="00011000"; WHEN"100001"=>DOUT45M<="00010010";DOUT45B<="00010111"; WHEN"100010"=>DOUT45M<="00010001";DOUT45B<="00010110"; WHEN"100011"=>DOUT45M<="00010000";DOUT45B<="00010101"; WHEN"100100"=>DOUT45M<="00001001";DOUT45B<="00010100"; WHEN"100101"=>DOUT45M<="00001000";DOUT45B<="00010011"; WHEN"100110"=>DOUT45M<="00000111";DOUT45B<="00010010"; WHEN"100111"=>DOUT45M<="00000110";DOUT45B<="00010001"; WHEN"101000"=>DOUT45M<="00000101";DOUT45B<="00010000"; WHEN"101001"=>DOUT45M<="00000100";DOUT45B<="00001001"; WHEN"101010"=>DOUT45M<="00000011";DOUT45B<="00001000"; WHEN"101011"=>DOUT45M<="00000010";DOUT45B<="00000111"; WHEN"101100"=>DOUT45M<="00000001";DOUT45B<="00000110"; WHEN OTHERS=>DOUT45M<="01000110";DOUT45B<="01010001"; END CASE; END PROCESS; END ARCHITECTURE ART;

(4)倒计时 25s——CNT25s 设计模块与程序

7

源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT25S IS PORT(SB,SM,CLK,EN25:IN STD_LOGIC; DOUT25M,DOUT25B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT25S; ARCHITECTURE ART OF CNT25S IS SIGNAL CNT5B:STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN PROCESS(SB,SM,CLK,EN25)IS BEGIN IF SB='0' OR SM='0'THEN CNT5B<=CNT5B-CNT5B-1; ELSIF SM='0'THEN CNT5B<=CNT5B-CNT5B-1; ELSIF(CLK'EVENT AND CLK='1')THEN IF EN25='1'THEN CNT5B<=CNT5B+1; ELSIF EN25='0'THEN CNT5B<=CNT5B-CNT5B-1; END IF; END IF; END PROCESS; PROCESS(CNT5B)IS BEGIN CASE CNT5B IS WHEN"00000"=>DOUT25B<="00100101";DOUT25M<="00110000"; WHEN"00001"=>DOUT25B<="00100100";DOUT25M<="00101001"; WHEN"00010"=>DOUT25B<="00100011";DOUT25M<="00101000"; WHEN"00011"=>DOUT25B<="00100010";DOUT25M<="00100111"; WHEN"00100"=>DOUT25B<="00100001";DOUT25M<="00100110"; WHEN"00101"=>DOUT25B<="00100000";DOUT25M<="00100101"; WHEN"00110"=>DOUT25B<="00011001";DOUT25M<="00100100"; WHEN"00111"=>DOUT25B<="00011000";DOUT25M<="00100011";
8

WHEN"01000"=>DOUT25B<="00010111";DOUT25M<="00100010"; WHEN"01001"=>DOUT25B<="00010110";DOUT25M<="00100001"; WHEN"01010"=>DOUT25B<="00010101";DOUT25M<="00100000"; WHEN"01011"=>DOUT25B<="00010100";DOUT25M<="00011001"; WHEN"01100"=>DOUT25B<="00010011";DOUT25M<="00011000"; WHEN"01101"=>DOUT25B<="00010010";DOUT25M<="00010111"; WHEN"01110"=>DOUT25B<="00010001";DOUT25M<="00010110"; WHEN"01111"=>DOUT25B<="00010000";DOUT25M<="00010101"; WHEN"10000"=>DOUT25B<="00001001";DOUT25M<="00010100"; WHEN"10001"=>DOUT25B<="00001000";DOUT25M<="00010011"; WHEN"10010"=>DOUT25B<="00000111";DOUT25M<="00010010"; WHEN"10011"=>DOUT25B<="00000110";DOUT25M<="00010001"; WHEN"10100"=>DOUT25B<="00000101";DOUT25M<="00010000"; WHEN"10101"=>DOUT25B<="00000100";DOUT25M<="00001001"; WHEN"10110"=>DOUT25B<="00000011";DOUT25M<="00001000"; WHEN"10111"=>DOUT25B<="00000010";DOUT25M<="00000111"; WHEN"11000"=>DOUT25B<="00000001";DOUT25M<="00000110"; WHEN OTHERS=>DOUT25B<="00100110";DOUT25M<="00110001"; END CASE; END PROCESS; END ARCHITECTURE ART;

(5)倒计时 5s——CNT05s 的设计模块与程序

源程序:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT05S IS PORT(CLK,EN05M,EN05B:IN STD_LOGIC; DOUT5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END CNT05S; ARCHITECTURE ART OF CNT05S IS SIGNAL CNT3B:STD_LOGIC_VECTOR(2 DOWNTO 0);
9

BEGIN PROCESS(CLK,EN05M,EN05B)IS BEGIN IF(CLK'EVENT AND CLK='1')THEN IF EN05M='1'THEN CNT3B<=CNT3B+1; ELSIF EN05B='1'THEN CNT3B<=CNT3B+1; ELSE CNT3B<="000"; END IF; END IF; END PROCESS; PROCESS(CNT3B) BEGIN CASE CNT3B IS WHEN"000"=>DOUT5<="00000101"; WHEN"001"=>DOUT5<="00000100"; WHEN"010"=>DOUT5<="00000011"; WHEN"011"=>DOUT5<="00000010"; WHEN"100"=>DOUT5<="00000001"; WHEN OTHERS=>DOUT5<="00000000"; END CASE; END PROCESS; END ARCHITECTURE ART;

3、仿真及仿真结果分析 仿真及仿真结果分析 结果

仿真图
10

4、实验调试结果 开始时,支干道没有车辆行驶。主干道处于常通行状态,支干道处于禁止 状态; 当支干道有车来时,主干道亮绿灯,经行 45 秒倒计时,支干道亮红灯,经 行 25 秒倒计时; 主干道 45 秒倒计时结束后跳变到黄灯,进行 5 秒倒计时,支干道继续亮红 灯,进行倒计时; 主干道 5 秒倒计时结束后跳变到红灯,经行 45 秒倒计时,支干道跳变到绿 灯,进行 25 秒倒计时; 支干道 25 秒倒计时结束后跳变到黄灯,进行 5 秒倒计时,主干道继续亮红 灯,进行倒计时; 支干道 5 秒倒计时结束后,判断支干道是否有车,若有车跳变到 S1 状态, 没有车跳变到 S0 状态

三、结论及心得体会 结论及心得体会
这次课程设计要求我们熟练掌握 EDA 理论、数字系统设计等相关知识,独 立思考完成自己的设计。设计过程中出现很多问题,关于各个不同功能模块设 计的实现,程序编写也出现了很多错误。 将编写好的源程序输入电脑,编译后出现很多错误,这些错误有许多时平 时的实验遇到过的,例如:输入的分号位置不对,零和字母 o 弄混淆了,漏掉 了 end if 等等,幸好这些错误在平时的实验中遇到了,所以改错误很容易,但 同时也说明了,平时的错误现在还在犯,证明错误我还没有完全的改正,这点 我以后一定要注意了。同样的错误犯了两次就不能再犯了。除了常见的错误外,
11

还有一些是程序编写的错误。这类错误说明我掌握的知识还不够,仅凭我自己 的能力还不能把错误找出来,所以就请老师帮忙了!经过多次的修改和向别人 请教,错误都排除了,编译通过了,但功能没有达到设计的要求,所以我们又 请老师帮忙解决。最后,经过几天在实验室的努力,终于实现了课程设计的全 部要求。 通过本次设计,我系统的了解了交通灯的设计流程,尤其是硬、软件的设 计方法,掌握了延时程序的基本功能及编程方法,掌握了它的一般原理,也进 一步掌握了 QuartusⅡ的使用。而且也开拓了思路,锻炼了实践动手能力,提高 了分工协作能力和分析问题,解决问题的能力,达到了本次课程设计的目的。

参考资料
[1] 潘松著.EDA技术实用教程(第二版). 北京:科学出版社,2005. [2] 康华光主编.电子技术基础 模拟部分. 北京:高教出版社,2006. [3] 阎石主编.数字电子技术基础. 北京:高教出版社,2003.

12


相关文章:
EDA课程设计交通灯_图文.doc
EDA课程设计交通灯 - 交通信号灯控制电路设计 一、概述 城市道路交叉口是
基于VHDL的交通灯设计(EDA课程设计报告)!!.doc
EDA 课程设 计实验报告 交通信号控制器的 VHDL 的设计一、设计任务及要求:设计任务: 模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、 黄、绿 LED ...
EDA课程设计 交通灯控制器.doc
EDA课程设计 交通灯控制器_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档EDA课程设计 交通灯控制器_工学_高等教育_教育专区。序号 优秀( )良好(...
EDA课程设计之交通灯设计报告_图文.doc
EDA课程设计交通灯设计报告 - 广东工业大学信息工程的EDA课程设计报告,题
交通灯设计(EDA课程设计).doc
交通灯设计(EDA课程设计) - EDA 课程设计报告 题 目:基于 FPGA
EDA课程设计报告交通灯.doc
EDA课程设计报告交通灯 - EDA课程设计报告 EDA课程设计报告 题 目:
EDA课程设计之交通灯设计报告_图文.pdf
EDA课程设计交通灯设计报告_交通运输_工程科技_专业资料 暂无评价|0人阅读|0次下载 | 举报文档 EDA课程设计交通灯设计报告_交通运输_工程科技_专业资料。EDA...
EDA课程设计交通灯.doc
EDA课程设计交通灯 - 经过调试可以运行,功能完整,程序详细... EDA课程设计交通灯_工学_高等教育_教育专区。经过调试可以运行,功能完整,程序详细 ...
基于VHDL的交通灯设计(EDA课程设计报告).doc
基于VHDL的交通灯设计(EDA课程设计报告) - EDA 课程设 计实验报告
EDA交通灯课程设计.pdf
EDA交通灯课程设计 - 目 录 前言 ………4 1 设计任务………...
EDA交通灯课程设计报告(EDA).doc
EDA交通灯课程设计报告(EDA) - 数字电路课程设计报告 数字电路课程设计报告交通灯设计 第 1 页共 18 页 数字电路课程设计报告 目 录 序...
eda课程设计交通灯控制.doc
eda课程设计交通灯控制 - 课程设计任务书 EDA 技术课程设计 交通灯控制器
EDA课程设计交通灯源程序.doc
EDA课程设计交通灯源程序_计算机软件及应用_IT/计算机_专业资料。EDA 课程设计交通灯源程序 EDA 课程设计交通灯源程序一、 分频模块 library ieee; ...
EDA交通灯课程设计论文.doc
EDA交通灯课程设计论文 - EDA 技术与应用论文 论文题目: 论文题目:交通灯设计 姓 名: 王 五 专 业: 电子信息工程 班学 级: XXXXXX 号: XXXX 指导...
eda课程设计---交通灯信号控制器.doc
eda课程设计---交通灯信号控制器 - 成绩 课 程 设 计 说 明 书 课程设计名称: 题目: EDA 技术课程设计 交通灯信号控制器 日期:2012 年 6 月 14...
EDA课程设计交通信号灯控制器设计 2_图文.doc
EDA课程设计交通信号灯控制器设计 2 - 海南大学信息科学技术学院 《EDA 技术课程设计报告》 专业班级:2008 级通信工程 姓名: 刘洋 学号:20081604B062 指...
广西科技大学EDA课程设计 基于VHDL的交通灯控制器设计_....pdf
课程设计 基于 VHDL 的交通灯控制器设计 目录一、研究背景...1 二、 EDA 技术与 VHDL 语言技术简介...1 (一) EDA 技术及其发展......
EDA课程设计---交通灯设计.doc
EDA课程设计---交通灯设计 - 课程 EDA 技术课程设计 交通灯控制器 题
EDA课程设计.doc
EDA课程设计 - 成绩 指导教师: 《EDA 技术与 VHDL 语言计》 课程设计 题姓院专班学 目: 名: 系: 业: 级: 号: 交通灯控制器 李海杰 电子信息工程系 ....
交通灯控制器eda课程设计报告书大学论文_图文.doc
交通灯控制器eda课程设计报告书大学论文 - 《EDA 应用实训》课程设计说明书
更多相关标签: