EDA课程设计交通信号灯控制器设计.docx

上传人:b****4 文档编号:5500233 上传时间:2022-12-17 格式:DOCX 页数:18 大小:28.01KB
下载 相关 举报
EDA课程设计交通信号灯控制器设计.docx_第1页
第1页 / 共18页
EDA课程设计交通信号灯控制器设计.docx_第2页
第2页 / 共18页
EDA课程设计交通信号灯控制器设计.docx_第3页
第3页 / 共18页
EDA课程设计交通信号灯控制器设计.docx_第4页
第4页 / 共18页
EDA课程设计交通信号灯控制器设计.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

EDA课程设计交通信号灯控制器设计.docx

《EDA课程设计交通信号灯控制器设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计交通信号灯控制器设计.docx(18页珍藏版)》请在冰豆网上搜索。

EDA课程设计交通信号灯控制器设计.docx

EDA课程设计交通信号灯控制器设计

 

海南大学信息科学技术学院

 

《EDA 技术课程设计报告》

 

专业班级:

2008 级通信工程

姓 名:

刘 洋

学 号:

20081604B062

指导老师:

刘文进老师

 

 

课程设计的要求及目的……………………………………………2

前言………………………………………………………………… 2

一 设计内容与目的……………………………………………… 2

1.1 设计内容………………………………………………… 3

1.2 设计目的………………………………………………… 3

二 方案设计……………………………………………………… 3

2.1设计思路…………………………………………………3

2.2设计总体框图……………………………………………4

2.3状态表……………………………………………………5

2.4电路原理图………………………………………………5

2.5静态显示电路……………………………………………5

三 功能电路的设计……………………………………………… 5

3.1细化的设计总体框图……………………………………5

3.2灯控制器电路设计………………………………………6

3.3计数器设计………………………………………………8

3.4显示控制部分设计………………………………………12

四 系统仿真图……………………………………………………13

五 设计心得会……………………………………………………14

六 参考文献………………………………………………………15

 

1

 

交通信号灯控制器设计

 

课程设计的要求及目的:

1.了解电子设计的具体流程和方法。

2. 掌握电子设计的基本要求,能够运用所学的知识解决生活中的一些问题。

 

3. 初步掌握 VHDL 语言编程,并设计出一个有意义的小型系统。

4. 掌握 MAX+plus Ⅱ软件的应用,并且了解相关硬件的组成和功能。

5. 用 EDA(Electronic Design Automation)或者原理图完成一个课题的设

计,并达到相应的功能要求。

 

前言

伴随着社会的发展以及人类生活水平的提高,汽车的数量在不断增加,交通

事业得以蓬勃发展,而随之引起的安全问题已经不容忽视。

EDA 技术的发展和

应用领域也在不断的扩大与深入,机械、电子、通信、航空航天、化工、矿产、

生物、医学、军事等各个领域的重要性日益突出。

众所周知,随着生活的进步,

我们身边的交通也日益繁忙,在众多的十字交叉路口,为了确保车辆安全,迅

速地通行,就必须在每个入口设置红绿灯。

本系统中设置了红,绿,黄三色共

三种信号灯。

红灯亮禁止一切该方向的行人和车辆通行,绿灯亮允许行人和车

辆通行,黄灯亮则提示行驶中的车辆注意不要抢道,并让它们有时间停靠到禁

行线之外或者加快通过,同时提醒行人加快行进或者等待下一次绿灯。

人行道

灯亮时,允许行人通过。

为了确保十字路口的行人和车辆顺利,畅通的通过,往往采用电子控制的交通

信号来进行指挥。

利用 EDA 技术设计交通灯来完成这个需求就显的更加迫切,

同样也是非常的实用和合理。

本交通信号灯控制系统以十字路口为例讲述设计

的功能要求和设计的具体过程。

 

一设计内容与目的:

2

 

1.1 设计内容:

用 EDA 设计一个简单的交通灯控制器,具有如下功能:

(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字路

口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许

通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。

(2)用红、绿、黄发光二极管作信号灯,用传感器或逻辑开关作检测车辆是

否到来的信号。

(3)主干道处于常允许通行的状态,支干道有车来时才允许通行。

主干道亮

绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。

主、支干道均有车时,两者交替允许通行,主干道每次放行 45 秒,支干道每次

放行 25 秒,设立 45 秒、25 秒计时、显示电路。

(4)在每次由绿灯亮到红灯亮的转换过程中,要亮 5 秒黄灯作为过渡,使行

驶中的车辆有时间停到禁行线外,设立 5 秒计时、显示电路。

 

1.2 设计目的:

(1)掌握十字路口交通灯控制的设计原理,并能够运用 VHDL 编程语言编写

出实验程序,进一步对所学的 EDA 知识进行掌握与实际应用。

(2)学会在 MAX+plus Ⅱ软件环境中仿真,熟悉软件的基本操作和运行环境。

 

(3)锻炼自己获取信息的能力,以及能够独立自主的思考和解决问题的能力。

 

二方案设计:

2.1 设计思路

(1(主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。

(2(45 秒、25 秒、5 秒定时信号可用顺计时,也可用倒计时,计时起始信

号由主控电路给出,定时结束信号也输入到主控电路,由主控电路启、闭三

色信号灯或启动另一计时电路。

(3(主控电路是核心,这是一个时序电路,其输入信号为:

车辆检测信号

3

 

(A,B);45 秒、25 秒、5 秒定时信号(C,D,E)。

其状态转化图如下

所示:

 

2.2 设计总体框图:

 

4

主干道

支干道

指示灯

亮灯时间

指示灯

亮灯时间

红灯亮

30s

绿灯亮

25s

红灯亮

黄灯亮

5s

绿灯亮

45

红灯亮

50s

黄灯亮

5s

红灯亮

 

 

2.3 状态表

2.4 电路原理图:

 

2.5 输出显示电路 :

 静态扫描电路。

 

三 功能电路的设计

3.1 细化的设计总体框图

根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画

5

 

出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如

下图 3.1 所示

CLK

 

交通灯控制及计时模块

 

扫描显示模块

 

LED 显示

3.2 灯控制器电路设计

由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、

黄、左拐允许四盏信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行

驶中的车辆有时间停在禁行线外,左拐灯亮允许车辆向左拐弯。

信号灯变换次

序为:

主支干道交替允许通行,主干道每次放行 40S,亮 5S 红灯让行驶中的车

辆有时间停到禁行线外,左拐放行 15 秒,亮 5S 红灯;支干道放行 30S,亮 5S

黄灯,左拐放行 15 秒,亮 5S 红灯,其中主支干道的红黄绿灯表示如

MR、MY、MG、BR、BY、BG。

 

程序如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY JTDKZ IS

PORT(CLK,SM,SB:

IN STD_LOGIC;

6

 

MR,MY,MG,BR,BY,BG:

OUT STD_LOGIC);

END ENTITY 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';

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';

 

7

 

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;

 

3.3计数器的设计

根据路上状况,设计各个显示计时部分,包括 45s、25s 和 5s,各部分采用

顺时计数方法。

各模块如下:

 

程序如下:

----CNT45S.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

 

8

 

ENTITY CNT45S IS

PORT

(SB,CLK,EN45:

IN STD_LOGIC;

DOUT45M,DOUT45B:

OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ENTITY 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<="01001011";

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";

WHEN"001001"=>DOUT45M<="00110110";DOUT45B<="01000001";

WHEN"001010"=>DOUT45M<="00110101";DOUT45B<="01000000";

WHEN"001011"=>DOUT45M<="00110100";DOUT45B<="01101001";

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";

 

9

 

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<="00000000";DOUT45B<="00000000";

END CASE;

END PROCESS;

END ARCHITECTURE ART;

--CNT25S.VHD

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 ;

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(CLK'EVENT AND CLK='1')THEN

 

10

 

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";

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<="00001001";DOUT25M<="00010100";

WHEN "10010"=>DOUT25B<="00001000";DOUT25M<="00010011";

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<="00000000";DOUT25M<="00000000";

END CASE;

END PROCESS;

END ARCHITECTURE ART;

--CNT05S.VHD

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

 

11

 

ENTITY CNT05S IS

PORT

(CLK,EN05M,EN05B:

IN STD_LOGIC;

DOUT5:

OUT STD_LOGIC_VECTOR(7 DOWNTO 0));

END ENTITY CNT05S;

 

ARCHITECTURE ART OF CNT05S IS

SIGNAL CNT3B:

STD_LOGIC_VECTOR(2 DOWNTO 0);

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;

ELSIF EN05B='0' THEN CNT3B<=CN

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1