交通灯信号控制设计 精品Word文档下载推荐.docx
《交通灯信号控制设计 精品Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《交通灯信号控制设计 精品Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
主芯片:
EPM7128SLC84-15或EP1K100QC208-3。
下载电缆,导线等。
三、实验内容
设计并调试好一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:
1.主、支干道各设一个绿、黄、红指示灯,两个显示数码管。
2.主干道处于常允许通行状态,而支干道有车来时才允许通行。
当主干道允许通行亮绿灯时,支干道亮红灯。
而支干道允许通行亮绿灯时,主干道亮红灯。
3.当主、支干道均有车时,两者交替允许通行,主干道每次放行45S,支干道每次放行25S,在每次由亮绿灯变成亮红灯的转换过程中,要亮5S的黄灯作为过渡,并进行减计时显示。
要求编写交通灯控制器电路逻辑图中的各个模块的VHDL语言程序,并完成交通灯控制器的顶层设计,然后利用开发工具软件对其进行编译和仿真,最后要通过实验开发系统对其进行硬件验证。
(一)编写交通灯控制器JTDKZ模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
ENTITYJTDKZIS
PORT(CLK,SM,SB:
INSTD_LOGIC;
MR,MY,MG,BR,BY,BG:
OUTSTD_LOGIC);
ENDENTITYJTDKZ;
ARCHITECTUREARTOFJTDKZIS
TYPESTATE_TYPEIS(A,B,C,D);
SIGNALSTATE:
STATE_TYPE;
signalcnt:
integerrange0to45;
BEGIN
PROCESS(CLK)IS
BEGIN
IF(CLK'
EVENTANDCLK='
1'
)THEN
CASESTATEIS
WHENA=>
IF(SBANDSM)='
THEN
IFCNT=44THEN
CNT<
=0;
STATE<
=B;
ELSE
CNT<
=CNT+1;
STATE<
=A;
ENDIF;
ELSIF(SBAND(NOTSM))='
STATE<
CNT<
ELSESTATE<
ENDIF;
WHENB=>
IFCNT=4THEN
=C;
ELSE
WHENC=>
IF(SMANDSB)='
THEN
IFCNT=24THEN
=D;
ELSIFSB='
0'
WHEND=>
IFCNT=4THEN
ENDCASE;
ENDIF;
ENDPROCESS;
RGY:
PROCESS(STATE)IS
BEGIN
CASESTATEIS
WHENA=>
MR<
='
;
MY<
MG<
BR<
BY<
BG<
WHENB=>
WHENC=>
WHEND=>
ENDCASE;
ENDPROCESSRGY;
ENDARCHITECTUREART;
(二)编写45S定时单元CNT45S模块的VHDL程序,并对其进行编译和仿真,初步验证设计的正确性。
--45s定时模块源程序CNT45S.VHD
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYtime_45sIS
PORT(SB,SM,CLK,EN45:
DOUT45M,DOUT45B:
OUTSTD_LOGIC_VECTOR(7DOWNTO0));
ENDENTITYtime_45s;
ARCHITECTUREARTOFtime_45sIS
SIGNALCNT6B:
STD_LOGIC_VECTOR(5DOWNTO0);
BEGIN
PROCESS(SB,SM,CLK,EN45)IS
IF(CLK'
EVENTANDCLK='
IFSB='
ANDSM='
IFEN45='
THENCNT6B<
=CNT6B+1;
ELSECNT6B<
="
000000"
ENDIF;
ELSECNT6B<
ENDPROCESS;
PROCESS(CNT6B)IS
CASECNT6BIS
WHEN"
=>
DOUT45M<
01000101"
DOUT45B<
01010000"
--BCD数45,50
000001"
01000100"
01001001"
--BCD数44,49
000010"
01000011"
01001000"
--BCD数43,48
000011"
01000010"
01000111"
--BCD数42,48
000100"
01000001"
01000110"
--BCD数41,50
000101"
01000000"
--BCD数40,49
000110"
00111001"
--BCD数39,48
000111"
00111000"
--BCD数38,48
001000"
00110111"
--BCD数37,50
001001"
00110110"
--BCD数36,49
001010"
00110101"
--BCD数35,48
001011"
00110100"
--BCD数34,48
001100"
00110011"
--BCD数33,50
001101"
00110010"
--BCD数32,49
001110"
00110001"
--BCD数31,48
001111"
00110000"
--BCD数30,48
010000"
00101001"
--BCD数29,50
010001"
00101000"
--BCD数28,49
010010"
00100111"
--BCD数27,48
010011"
00100110"
--BCD数26,48
010100"
00100101"
--BCD数25,50
010101"
00100100"
--BCD数24,49
010110"
00100011"
--BCD数23,48
010111"
00100010"
--BCD数22,48
011000"
00100001"
--BCD数21,50
011001"
00100000"
--BCD数20,49
011010"
00011001"
--BCD数19,48
011011"
00011000"
--BCD数18,48
011100"
00010111"
--BCD数17,50
011101"
00010110"
--BCD数16,49
011110"
DOU