EDA技术与应用课程交通灯控制器的设计文档格式.docx
《EDA技术与应用课程交通灯控制器的设计文档格式.docx》由会员分享,可在线阅读,更多相关《EDA技术与应用课程交通灯控制器的设计文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
1.1设计任务
设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:
1.主、支干道各设一个绿、黄、红指示灯用于指示状态,两位显示数码管用于显示倒计时时间。
2.当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由绿灯转换为红灯时,要有5s的黄灯作为过渡。
应有倒计时显示。
3.特殊功能,智能交通灯控制:
若支干道无车时,主干道处于常允许通行状态。
4.用vhdl语言设计上述功能的交通灯控制器,并用层次化设计方法该电路。
5.完成电路全部设计后,通过系统实验箱下载验证设计课题的正确性。
1.2设计思路
交通灯控制器原理框图如下图所示,包括置数模块、计数模块、主控制器模块和译码器模块。
置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,
主控电路改变输出状态,电路进入下一个状态的倒计时。
其中,核心部分是主控制模块。
控制情况表。
状态
主干道
主干道倒计时
支干道
1
绿灯亮
45
红灯亮
50
2
黄灯亮
5
3
30
25
4
第二章设计原理
2.1设计目的
学习DEA开发软件和Quartus
的使用方法,熟悉可编程逻辑器件的使用。
通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制
2.2设计说明
2.2.1分模块设计
1、红、绿、黄灯控制模块,模块名JTDKZ;
2、倒计时传输、控制模块XSKZ;
3、倒计时45s——CNT45s;
4、倒计时25s——CNT25s;
5、倒计时5s——CNT05s。
6、输入、输出。
2.2.2模块设计思路
1、JTDKZ
根据交通灯显示有4种状态,可以采用CASE语句设置选择4种状态。
设置3个输入:
CLK(时钟脉冲)、SB(支干道传感器)、SM(主干道传感器)。
2、XSKZ
根据需要交通灯显示的不同数倒计时据设置4个输入使能信号:
EN45(45s倒计时使能信号)、EN25(25s倒计时使能信号)、EN05(5s倒计时使能信号);
再设置5个倒计时计数数据输入信号将此时倒计时数据输出:
AIN45M、AIN45B、AIN25M、AIN25B、AIN05;
2个输出信号使数码管显示正在倒计时的时间。
3、CNT45S
根据倒计时计数的要求设置3个输入信号:
CLK(计数脉冲)、
EN45(计数使能)、SB(支干道传感器信号);
2个输出DOUT45M、DOUT45B,分别用于主、支干道显示。
4、CNT25s
根据倒计时计数的要求设置4个输入信号:
EN45(计数使能)、SM(主干道传感器信号)、SB(支干道传感器信号);
2个输出DOUT25M、DOUT25B,分别用于主、支干道显示。
5、CNT05s
EN05B(计数使能)、EN05M(计数使能);
1个输出DOUT05,用于主、支干道显示。
6、输入输出模块
3个输入分别为:
CLK、SB、SM,2个输出分别为
DOUT1[7..0]、DOUT2[7..0]。
第三章VHDL程序
3.1源程序
交通灯控制器JTDKZ的VHDL源程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYJTDKZIS
PORT(CLK,SM,SB:
INSTD_LOGIC;
MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC);
ENDJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALSTATE:
STATE_TYPE;
BEGIN
CNT:
PROCESS(CLK)IS
VARIABLES:
INTEGERRANGE0TO45;
VARIABLECLR,EN:
BIT;
IF(CLK'
EVENTANDCLK='
1'
)THEN
IFCLR='
0'
THEN
S:
=0;
ELSIFEN='
THEN
=S;
ELSE
S:
=S+1;
ENDIF;
CASESTATEIS
WHENA=>
MR<
='
;
MY<
MG<
BR<
BY<
BG<
IF(SBANDSM)='
IFS=45THEN
STATE<
=B;
CLR:
EN:
ELSE
STATE<
=A;
ELSIF(SBAND(NOTSM))='
WHENB=>
IFS=5THEN
=C;
WHENC=>
IF(SMANDSB)='
IFS=25THEN
=D;
ELSIFSB='
ENDIF;
WHEND=>
ENDCASE;
ENDPROCESSCNT;
ENDARCHITECTUREART;
ENTITYCSKZIS
PORT(EN45,EN25,EN05M,EN05B:
INSTD_LOGIC;
AIN45M,AIN45B:
INSTD_LOGIC_VECTOR(7DOWNTO0);
AIN25M,AIN25B,AIN05:
DOUTM,DOUTB:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYCSKZ;
ARCHITECTUREARTOFCSKZIS
PROCESS(EN45,EN25,EN05M,EN05B)IS
IFEN45='
DOUTM<
=AIN45M(7DOWNTO0);
DOUTB<
=AIN45B(7DOWNTO0);
ELSIFEN05M='
=AIN05(7DOWNTO0);
ELSIFEN25='
=AIN25M(7DOWNTO0);
=AIN25B(7DOWNTO0);
ELSIFEN05B='
ENDPROCESS;
45s定时单元的VHDL源程序
ENTITYCNT45SIS
PORT(SB,CLK,EN45:
DOUT45M,DOUT45B:
ENDCNT45S;
ARCHITECTUREARTOFCNT45SIS
SIGNALCNT6B:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(SB,CLK,EN45)IS
IFSB='
THENCNT6B<
=CNT6B-CNT6B-1;
ELSIF(CLK'
IFEN45='
THENCNT6B<
=CNT6B+1;
ELSIFEN45='
ENDIF;
PROCESS(CNT6B)IS
CASECNT6BIS
WHEN"
000000"
=>
DOUT45M<
="
01000101"
DOUT45B<
01010000"
000001"
01000100"
01001001"
000010"
01000011"
01001000"
000011"
01000010"
01000111"
000100"
01000001"
01000110"
000101"
01000000"
000110"
00111001"
000111"
00111000"
001000"
00110111"
001001"
00110110"
001010"
00110101"
001011"
00110100"
001100"
00110011"
001101"
00110010"
001110"
00110001"
001111"
00110000"
010000"
00101001"
010001"
00101000"
010010"
00100111"
010011"
00100110"
010100"
00100101"
010101"
00100100"
010110"
00100011"
010111"
00100010"
011000"
00100001"
011001"
00100000"
011010"
00011001"
011011"
00011000"
011100"
00010111"
011101"
00010110"
011110"
00010101"
011111"
00010100"
100000"
00010011"
100001"
00010010"
100010"
00010001"
100011"
00010000"
100100"
00001001"
100101"
00001000"
100110"
00000111"
100111"
00000110"
101000"
00000101"
101001"
00000100"
101010"
00000011"
101011"
00000010"
101100"
00000001"
WHENOTHERS=>
01010001"
25s定时单元的VHDL源程序
ENTITYCNT25SIS
PORT(SB,SM,CLK,EN25:
DOUT25M,DOUT25B:
ENDENTITYCNT25S;
ARCHITECTUREARTOFCNT25SIS
SIGNALCNT5B:
STD_LOGIC_VECTOR(4DOWNTO0);
PROCESS(SB,SM,CLK,EN25)IS
ORSM='
THENCNT5B<
=CNT5B-CNT5B-1;
ELSIFSM='
IFEN25='
=CNT5B+1;
ELSIFEN25='
ENDPROCESS;
PROCESS(CNT5B)IS
CASECNT5BIS
WHEN"
00000"
DOUT25B<
DOUT25M<
00001"
00010"
00011"
00100"
00101"
00110"
00111"
01000"
01001"
01010"
01011"
01100"
01101"
01110"
01111"
10000"
10001"
10010"
10011"
10100"
10101"
10110"
10111"
11000"
WHENOTHERS=>
5s定时单元的VHDL源程序
ENTITYCNT05SIS
PORT(CLK,EN05M,EN05B:
DOUT5:
ENDCNT05S;
ARCHITECTUREARTOFCNT05SIS
SIGNALCNT3B:
STD_LOGIC_VECTOR(2DOWNTO0);
PROCESS(CLK,EN05M,EN05B)IS
IF(CLK'
IFEN05M='
THEN
CNT3B<
=CNT3B+1;
ELSIFEN05B='
ELSE
000"
PROCESS(CNT3B)
CASECNT3BIS
DOUT5<
001"
010"
011"
100"
000