trafficproject文档格式.docx
《trafficproject文档格式.docx》由会员分享,可在线阅读,更多相关《trafficproject文档格式.docx(19页珍藏版)》请在冰点文库上搜索。
![trafficproject文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/3/e9d4066d-b0cc-4b4d-b80e-b2ea25066653/e9d4066d-b0cc-4b4d-b80e-b2ea250666531.gif)
PIG:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);
--Determineswhichdisplayison,MSBis0111,LSBis1110.
BUZOnOFF:
INSTD_LOGIC);
--Over-rideswitchforbuzzer
endTLP;
architectureBehavioralofTLPis
COMPONENTClock_ManagerIS
PORT(TT:
INTEGERRANGE0TO30;
--Allowustocountbackwardsindisplay,TT=DurationofFlow-T
F:
--Integertoderminewhichflowweareinfor7segDisplayraninClock_Manager
CLK:
MSec:
outSTD_LOGIC;
Sec:
BU:
--DeterminesifBuzzerison,1ison0isoff
SEG:
--SEGandPIGdefinedthroughclock,whichwilllooktotheeyeasifitis
PIG:
--changingatthesametime(atfastfrequency).
BUZOnOFF:
ENDCOMPONENT;
SIGNALCLK1,CLK2:
STD_LOGIC;
SIGNALM:
STD_LOGIC_VECTOR(3DOWNTO0);
--4Sensors,Switches.
SIGNALK:
STD_LOGIC:
='
1'
;
--Wheneachflowfinishweenternextflowgivenk='
.
SIGNALKT:
STD_LOGIC_VECTOR(2DOWNTO0):
="
000"
--Pedestrianbutton3bit."
isOff
SIGNALT,F,TT:
--Thisistokeeptrackoftimerforclockedges.(maxis22,withyellowandred).
SIGNALLIGHT:
STD_LOGIC_VECTOR(29DOWNTO0);
--TrafficLights(30lights,10setsof3each)
TYPESTATEIS(F1,F2,F3,F4,F5,F6,F7);
--7Differentflowstates.
SIGNALSTATE_M:
STATE;
--GROUPCODE
BEGIN
M<
=A&
B&
C&
D;
--4SensorsA:
Pymble,B:
Waste,C:
Ryde,D:
Macquarie
CLKM:
CLOCK_MANAGER--Clock
PORTMAP(TT,F,CLOCK,CLK1,CLK2,BU,SEG,PIG,BUZonOFF);
traffic:
PROCESS(CLK2)
BEGIN
--ChecksifBuzzeristurnedon(Alextype)
IF(K1='
0'
ORK2='
ORK3='
)THEN--WhenpedestrianbuttonispressedNegativelogic
IFK1='
THEN--Macquarie
KT
(2)<
='
--Firstbit-MSB-inKTisMacquarie
IFKT
(1)='
THENKT
(1)<
ENDIF;
--Weusethistoholdthelightsignalonwhenotherpedestrianlightisturnedon.
IFKT(0)='
THENKT(0)<
ENDIF;
IFK2='
THEN--Pymble
KT
(1)<
--2ndbitinKTisPymble
IFKT
(2)='
THENKT
(2)<
IFK3='
THEN--Waste
KT(0)<
--Lastbit-LSB-inKTisMacquarie
ELSE--Werequirethiscodetoleavelightsignalonwithouthavingtopressdownonit.
IF(KT
(2)='
AND((K='
)OR(K='
AND(STATE_M=F2ORSTATE_M=F3ORSTATE_M=F4ORSTATE_M=F5ORSTATE_M=F7))))
THENKT
(2)<
IF(KT
(1)='
AND(STATE_M=F1ORSTATE_M=F3ORSTATE_M=F4ORSTATE_M=F5ORSTATE_M=F6ORSTATE_M=F7))))
THENKT
(1)<
IF(KT(0)='
AND(STATE_M=F1ORSTATE_M=F3ORSTATE_M=F4ORSTATE_M=F5ORSTATE_M=F6ORSTATE_M=F2))))
THENKT(0)<
IF(RS='
)THEN
IF(ClK2='
ANDCLK2'
event)THEN
T<
=T+1;
--Keeptrackoftiming.
IFK='
THEN--Don'
tenternextflowwithoutcompletingperviouswhenK='
T<
=0;
--Whenenterknewflowresettimer.
IF(KT="
)THEN--Nopedestrianbuttonpressedgointonormalflow
--GroupCodeDiscuss:
TimCode
--Thefollowingcodedetermineswhichsensorsequenceison.Thendetermineswhichflowprocesstofollow.
IFM="
0000"
THEN
CASESTATE_MIS
WHENF1=>
STATE_M<
=F1;
WHENOTHERS=>
ENDCASE;
ELSIFM="
0001"
=F2;
WHENF2=>
0100"
=F3;
WHENF3=>
1010"
CASESTATE_MIS
=F4;
WHENF4=>
1000"
=F5;
WHENF5=>
0010"
=F6;
WHENF6=>
0101"
1011"
WHENF2=>
1001"
0011"
1110"
1100"
0110"
1111"
1101"
0111"
ELSIFKT
(2)='
THEN--Flow6alsoavailablehoweverchooseF1foroptimization,ForMacquarie
ELSIFKT
(1)='
--ForPymble
ELSIFKT(0)='
=F7;
--Forwaste
--Wenowdefinewhateachflowdoeswhenweenterthatflow.
----------ALEXCODE
IFSTATE_M=F1THEN
F<
=1;
--Determinetheflowforsegment
TT<
=22-T;
--TTisrequiredtocountbackwards
IFT<
21THEN
LIGHT<
="
001001100100100100001100100100"
K<
ELSIFT=21THEN
010010100100100100010100100100"
ELSIFT=22THEN
100100100100100100100100100100"
--Turnoffpedlightonceflowisdone
----------TIMCODE
ELSIFSTATE_M=F2THEN
=2;
=9-T;
7THEN
100100100100100100100100001001"
ELSIFT=8THEN
100100100100100100100100010010"
ELSIFT=9THEN
----------NANCODE
ELSIFSTATE_M=F3THEN
=7-T;
=3;
5THEN
100100100001001001100100100100"
ELSIFT=6THEN
100100100010010010100100100100"
ELSIFT=7THEN
----------LENACODE
ELSIFSTATE_M=F4THEN
=4;
100100001100100100100001100100"
100100010100100100100010100100"
----------COCOCODE
ELSIFSTATE_M=F5THEN
=5;
001001001100100100100100100100"
001001010100100100100100100100"
001001100100100100100100100100"
----------TEAMCODE
ELSIFSTATE_M=F6THEN
=6;
100100100100100100001001100100"
100100100100100100001010100100"
100100100100100100001100100100"
----------TEAMCODE--Thisflowisforpedestriantowalkalong'
Waste'
ELSIFSTATE_M=F7THEN
=7;
100001001100100100100100100100"
100010010100100100100100010100"
ENDPROCESStraffic;
--Seteachsetoflightsusingour30bitLight
----------TEAMCODE
AL<
=LIGHT(29)&
LIGHT(28)&
LIGHT(27);
AT<
=LIGHT(26)&
LIGHT(2