EDA课程设计交通灯的设计.docx

上传人:b****5 文档编号:6439183 上传时间:2023-01-06 格式:DOCX 页数:18 大小:460.26KB
下载 相关 举报
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课程设计

题目:

交通灯控制器VHDL设计

 

专业:

通信工程

班级:

通信082

姓名:

谢振峰

学号:

0810920213

 

一、设计题目:

交通灯控制器VHDL设计

二、设计目标:

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

2、红、绿、黄发光二极管作信号灯,。

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

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

4、主、支干道均有车时,两者交替允许通行,主干道每次放行45秒,支干道每次放行25秒,设立45秒、25秒计时、显示电路。

5、在每次由绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡,使行驶中的车辆有时间停到禁行线外,设立5秒计时、显示电路。

三、设计原理

1.原理图框图如下:

图1、原理图框图

2.原理图说明

交通灯状态控制模块内部设置有一个状态机和一个秒计数器。

状态用来控制主干道路、支干道路交通灯状态的切换;定时器用来控制5秒、25秒、45秒定时器的启动。

定时器模块同时集成有主干道路、支干道路的时间定时。

时间选择显示模块根据交通灯状态的转变而让主、支道路显示不同的定时时间。

四、设计内容

1)交通灯状态控制模块

图2

该模块由时钟信号输入端口clk、复位端口rst及主干道路状态灯输出端口south_red(主红灯)、south_yellow(主黄灯)、south_green(主绿灯),支干道路状态灯输出端口east_red(支红灯)、east_yellow(支黄灯)、east_green(支绿灯),5秒、25秒、45秒定时使能输出端口EN5OUT、EN25OUT、EN45OUT组成。

里面设置有一个状态机和一个秒计数器,用来控制主、支道路交通灯状态的转换,状态转换图如下图所示:

图3

状态机说明

源状态

目的状态

转换条件

输出

A

A

计数时间小于45s

主绿灯亮,支红灯亮,计数器清零,EN45OUT=‘1’

A

B

计数时间等于45s

主黄灯亮,支红灯亮,计数器清零,EN5OUT=’1’

B

B

计数时间小于5秒

主黄灯亮,支红灯亮,计数器清零,EN5OUT=’1’

B

C

计数时间等于5秒

主红灯亮,支绿灯亮,计数器清零,

EN25OUT=’1’

C

C

计数时间小于25s

主红灯亮,支绿灯亮,计数器清零,

EN25OUT=’1’

C

D

计数时间等于25s

主红灯亮,支黄灯亮,计数器清零,

EN5OUT=’1’

D

D

计数时间小于25s

主红灯亮,支黄灯亮,计数器清零,

EN5OUT=’1’

A/B/C/D

A

Reset=’1’

主绿灯亮,支红灯亮,计数器清零,EN45OUT=‘1’

模块仿真图如图所示:

图4

2)定时模块

定时模块有5s、25s、45s三个定时模块。

2.1)5s定时模块

图5

模块由时钟输入信号clk、复位信号rst、使能输入端EN05及定时数据输出端DOUT5组成。

5秒定时模块仿真图如图所示:

图6

2.2)25s定时模块

图7

模块由时钟输入信号clk、复位信号rst、使能输入端EN25及主干路定时数据输出端DOUT25M、支路定时数据输出端DOUT25B组成。

其中主干路从30秒倒计时到6秒,支干路从25秒计时到1秒。

25秒定时模块仿真图如图所示:

图8

2.3)45秒定时模块

图9

模块由时钟输入信号clk、复位信号rst、使能输入端EN45及主干路定时数据输出端DOUT45M、支路定时数据输出端DOUT45B组成。

其中主干路从45秒倒计时到1秒,支干路从50秒计时到6秒。

45秒定时模块仿真图如图所示:

图10

3)时间选择显示模块

图11

该模块由时间选择显示使能输入信号EN5、EN25、EN45,时钟数据输入端口AIN及主、支道路时间输出端口DOUT组成。

通过交通灯状态控制器输入的计时时间使能信号,选择输出主、支道路的时间数据,DOUT端口接数码管译码器即可完成时间显示。

 

五、仿真结果

1.原理图设计

图12

2.仿真结果

(1):

正常显示

图13

 

仿真结果

(2):

系统复位

图14

 

六、总结

本设计完整的实现了交通灯控制器的VHDL设计,能实现题目所要求的交通灯状态控制及系统复位功能。

通过本次课程设计让我加深了对硬件描述语言VHDL的理解,提高了我对电子设计的兴趣。

在设计过程中遇到了很多问题,通过查阅资料,提高了我发现问题、解决问题的能力。

七、附录

1.交通灯状态控制器源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYJTDKZIS

PORT(CLK,RST:

INSTD_LOGIC;

south_red,south_yellow,south_green:

OUTSTD_LOGIC;

east_red,east_yellow,east_green:

outstd_logic;

EN45OUT,EN25OUT,EN5OUT:

OUTSTD_LOGIC);

ENDENTITYJTDKZ;

ARCHITECTUREARTOFJTDKZIS

TYPESTATE_TYPEIS(A,B,C,D);

SIGNALSTATE:

STATE_TYPE;

BEGIN

CNT:

PROCESS(CLK,RST)IS

VARIABLES:

INTEGERRANGE0TO45;

VARIABLECLR,EN:

BIT;

BEGIN

if(CLK'EVENTANDCLK='1')THEN

if(RST='1')thenSTATE<=A;S:

=0;

elsifCLR='0'THENS:

=0;

elsifEN='0'THENS:

=S;

ELSE

S:

=S+1;

ENDIF;

CASESTATEIS

WHENA=>EN45OUT<='1';

south_red<='0';

south_yellow<='0';

south_green<='1';--greenon45s

east_red<='1';--redon45s

east_yellow<='0';

east_green<='0';

IFS=45THEN

EN45OUT<='0';

STATE<=B;

CLR:

='0';

EN:

='0';

ELSE

STATE<=A;

CLR:

='1';

EN:

='1';

ENDIF;

 

WHENB=>EN5OUT<='1';

south_red<='0';

south_yellow<='1';--yellowon5s

south_green<='0';

east_red<='1';--redon

east_yellow<='0';

east_green<='0';

IFS=5THEN

EN5OUT<='0';

STATE<=C;

CLR:

='0';

EN:

='0';

ELSE

STATE<=B;

CLR:

='1';

EN:

='1';

ENDIF;

WHENC=>EN25OUT<='1';

south_red<='1';--redon

south_yellow<='0';

south_green<='0';

east_red<='0';

east_yellow<='0';

east_green<='1';--greenon25s

IFS=25THEN

EN25OUT<='0';

STATE<=D;

CLR:

='0';

EN:

='0';

ELSE

STATE<=C;

CLR:

='1';

EN:

='1';

ENDIF;

WHEND=>EN5OUT<='1';

south_red<='1';--redon

south_yellow<='0';

south_green<='0';

east_red<='0';

east_yellow<='1';--yellowon5s

east_green<='0';

IFS=5THEN

EN5OUT<='0';

STATE<=A;

CLR:

='0';

EN:

='0';

ELSE

STATE<=D;

CLR:

='1';

EN:

='1';

ENDIF;

ENDCASE;

ENDIF;

ENDPROCESSCNT;

ENDARCHITECTUREART;

2.时间选择显示模块源程序

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYXSKZIS

PORT(EN45,EN25,EN05M,EN05B:

INSTD_LOGIC;

AIN45M,AIN45B:

INSTD_LOGIC_VECTOR(7DOWNTO0);

AIN25M,AIN25B,AIN05:

INSTD_LOGIC_VECTOR(7DOWNTO0);

DOUTM,DOUTB:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYXSKZ;

ARCHITECTUREARTOFXSKZIS

BEGIN

PROCESS(EN45,EN25,EN05M,EN05B)IS

BEGIN

IFEN45='1'THEN

DOUTM<=AIN45M(7DOWNTO0);DOUTB<=AIN45B(7DOWNTO0);

ELSIFEN05M='1'THEN

DOUTM<=AIN05(7DOWNTO0);DOUTB<=AIN05(7DOWNTO0);

ELSIFEN25='1'THEN

DOUTM<=AIN25M(7DOWNTO0);DOUTB<=AIN25B(7DOWNTO0);

ELSIFEN05B='1'THEN

DOUTM<=AIN05(7DOWNTO0);DOUTB<=AIN05(7DOWNTO0);

ENDIF;

ENDPROCESS;

ENDARCHITECTUREART;

3.5秒定时模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT05SIS

PORT(

RST,CLK,EN05M,EN05B:

INSTD_LOGIC;

DOUT5:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYCNT05S;

ARCHITECTUREARTOFCNT05SIS

SIGNALCNT3B:

STD_LOGIC_VECTOR(2DOWNTO0);

BEGIN

PROCESS(CLK,EN05M,EN05B,RST)IS

BEGIN

ifRST='1'thenCNT3B<="000";

elsif(CLK'EVENTANDCLK='1')THEN

IFEN05M='1'OREN05B='1'THEN

ifCNT3B<4THEN

CNT3B<=CNT3B+1;

ELSE

CNT3B<="000";

ENDIF;

ENDif;

ENDIF;

ENDPROCESS;

PROCESS(CNT3B)IS

BEGIN

CASECNT3BIS

WHEN"000"=>DOUT5<="00000101";

WHEN"001"=>DOUT5<="00000100";

WHEN"010"=>DOUT5<="00000011";

WHEN"011"=>DOUT5<="00000010";

WHEN"100"=>DOUT5<="00000001";

WHENOTHERS=>DOUT5<="00000000";

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREART;

 

4.25秒定时模块

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT25SIS

PORT(

RST,CLK,EN25:

INSTD_LOGIC;

DOUT25B,DOUT25M:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));

ENDENTITYCNT25S;

ARCHITECTUREARTOFCNT25SIS

SIGNALCNT5B:

STD_LOGIC_VECTOR(4DOWNTO0);

BEGIN

PROCESS(CLK,EN25,RST)IS

BEGIN

ifRST='1'thenCNT5B<=(others=>'0');

elsif(CLK'EVENTANDCLK='1')

THEN

IFEN25='1'

THEN

ifCNT5B<24thenCNT5B<=CNT5B+1;

elseCNT5B<=(others=>'0');

ENDIF;

endif;

ENDIF;

ENDPROCESS;

PROCESS(CNT5B)IS

BEGIN

CASECNT5BIS

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

WHENOTHERS=>DOUT25B<="00000000";DOUT25M<="00000000";

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREART;

 

5.45秒定时模块

--CNT45S.VHD

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITYCNT45SIS

PORT(

RST,CLK,EN45:

INSTD_LOGIC;

DOUT45M,DOUT45B:

OUTSTD_LOGIC_VECTOR(7DOWNTO0));--,DOUT45B

ENDENTITYCNT45S;

ARCHITECTUREARTOFCNT45SIS

SIGNALCNT6B:

STD_LOGIC_VECTOR(5DOWNTO0);

BEGIN

PROCESS(RST,CLK,EN45)IS

BEGIN

ifRST='1'thenCNT6B<=(others=>'0');

elsif(CLK'EVENTANDCLK='1')

THEN

IFEN45='1'

THEN

ifCNT6B<44thenCNT6B<=CNT6B+1;

elseCNT6B<=(others=>'0');

endif;

endif;

ENDIF;

ENDPROCESS;

PROCESS(CNT6B)IS

BEGIN

CASECNT6BIS

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

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

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<="00

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

当前位置:首页 > 工程科技 > 能源化工

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

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