【正文】
HEN 1=NUM_IN=0011。 WHEN 17=CASE TEMP IS WHEN 0=NUM_IN=0000。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0000。 WHEN 2=NUM_IN=0001。 WHEN 1=NUM_IN=0101。 WHEN 15=CASE TEMP IS WHEN 0=NUM_IN=0000。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0010。 WHEN 2=NUM_IN=0001。 WHEN 1=NUM_IN=0111。 WHEN 13=CASE TEMP IS WHEN 0=NUM_IN=0000。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0100。 WHEN 2=NUM_IN=0001。 WHEN 1=NUM_IN=1001。 WHEN 11=CASE TEMP IS WHEN 0=NUM_IN=0000。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0110。 WHEN 2=NUM_IN=0001。 WHEN 1=NUM_IN=0001。 WHEN 9=CASE TEMP IS WHEN 0=NUM_IN=0001。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=1000。 WHEN 2=NUM_IN=0001。 WHEN 1=NUM_IN=0011。 WHEN 7=CASE TEMP IS WHEN 0=NUM_IN=0001。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0000。 WHEN 2=NUM_IN=0010。 WHEN 1=NUM_IN=0101。 WHEN 5=CASE TEMP IS WHEN 0=NUM_IN=0001。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0010。 WHEN 2=NUM_IN=0010。 WHEN 1=NUM_IN=0111。 WHEN 3=CASE TEMP IS WHEN 0=NUM_IN=0001。CAT=111110。CAT=111101。CAT=101111。CAT=011111。 END CASE。 WHEN 3=NUM_IN=0100。 WHEN 2=NUM_IN=0010。 WHEN 1=NUM_IN=1001。 CASE COUNTER IS通過計數(shù)器輸入信號控制狀態(tài) WHEN 1=CASE TEMP IS在每個狀態(tài)內(nèi)部設置數(shù)碼管掃描過程,由于COUNTER和掃描時鐘不同 則可在數(shù)碼管上同時顯示4個數(shù)字,以狀態(tài)1(COUNTER=1)為例 顯示“1924”,并在共陰極上掃描,以下同 共標記50種狀態(tài) WHEN 0=NUM_IN=0001。END PROCESS P1。 END IF。)THEN IF(TEMP=3)THEN TEMP=0。EVENT AND CLK=39。BEGINP1:PROCESS(CLK)內(nèi)部時鐘,控制7段數(shù)碼管顯示掃描內(nèi)容 BEGIN COUNTER=CONV_INTEGER(COUNT)。SIGNAL CAT:STD_LOGIC_VECTOR(5 DOWNTO 0):=011111。ARCHITECTURE COUNTSHOW OF COUNTDOWN ISSIGNAL TEMP:INTEGER RANGE 0 TO 3。7端數(shù)碼管共陰極輸出控制信號 NUMIN1:OUT STD_LOGIC_VECTOR (3 DOWNTO 0)輸出7段數(shù)碼管顯示數(shù)字信號(波形圖觀察) )。時鐘信號 NUMIN:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)。ENTITY COUNTDOWN IS PORT( COUNT:IN STD_LOGIC_VECTOR(5 DOWNTO 0)。USE 。l LIBRARY IEEE。END PROCESS。南北紅燈,且禁止左轉(zhuǎn) LIGHT2=1001。南北紅燈,且禁止左轉(zhuǎn) LIGHT2=0100。南北紅燈,且禁止左轉(zhuǎn) LIGHT2=0010。南北黃燈 LIGHT2=1001。南北綠燈 LIGHT2=1001。END PROCESS P1。46秒到50秒 END CASE。21秒到25秒 WHEN 26 TO 45 = STATE=S2。 ELSE CASE TEMPCOUNT IS由計數(shù)器控制狀態(tài)持續(xù)時間 WHEN 1 TO 20 = STATE=S0。139。BEGINP1:PROCESS(COUNT,EMERGENCY)BEGINTEMPCOUNT=CONV_INTEGER(COUNT)。SIGNAL STATE:STATES。END LIGHT。緊急信號輸入,控制緊急狀態(tài) COUNT:IN STD_LOGIC_VECTOR(5 DOWNTO 0)。USE 。USE 。內(nèi)部信號轉(zhuǎn)化為輸出END CON。COUNTER=CONV_STD_LOGIC_VECTOR(TEMPCOUNT,6)。 END IF。139。 THEN當緊急信號為高電平,進入緊急狀態(tài) TEMPCOUNT=TEMPCOUNT。 ELSIF EMERGENCY=39。計數(shù)器計數(shù)狀態(tài),加1 ELSE TEMPCOUNT=TEMPCOUNT+1。 THEN復位狀態(tài) TEMPCOUNT=1。 IF RESET=39。 THEN當不是緊急狀態(tài) BELL=39。 THEN外部時鐘,1Hz IF EMERGENCY=39。EVENT AND CLK=39。ARCHITECTURE CON OF COUNTER ISSIGNAL TEMPCOUNT:INTEGER RANGE 1 TO 50:=1。警鈴信號輸出 COUNTERS:OUT STD_LOGIC_VECTOR (5 DOWNTO 0)計數(shù)信號輸出(波形) )。緊急信號輸入 COUNTER:OUT STD_LOGIC_VECTOR (5 DOWNTO 0):=000001。外部時鐘輸入 RESET:IN STD_LOGIC。USE 。USE 。END。 END IF。139。039。 END IF。)THEN IF(TEMP=4999999)THEN TEMP=0。EVENT AND CLK=39。ARCHITECTURE FREQ OF FREQUENCY ISSIGNAL TEMP:INTEGER RANGE 0 TO 4999999。 CLK_OUT:OUT STD_LOGIC )。USE 。l ,1HzLIBRARY IEEE。U5:SHOW PORT MAP (NUM_IN=TEMPNUM,NUM=NUM)。U3:LIGHT PORT MAP (EMERGENCY=EMERGENCY,COUNT=TEMPCOUNT,LIGHT1=LIGHT1,LIGHT2=LIGHT2)。BEGIN將各個模塊接口連接起來U1:FREQUENCY PORT MAP (CLK=CLK,CLK_OUT=TEMPCLK)。 NUM:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) )。END COMPONENT。 CAT_TEMP:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)。 CLK:IN STD_LOGIC。END COMPONENT。 COUNT:IN STD_LOGIC_VECTOR(5 DOWNTO 0)。END COMPONENT。 BELL:OUT STD_LOGIC。 EMERGENCY:IN STD_LOGIC。COMPONENT COUNTER IS PORT( CLK:IN STD_LOGIC。 CLK_OUT:OUT STD_LOGIC )。SIGNAL TEMPNUM:STD_LOGIC_VECTOR(3 DOWNTO 0)。ARCHITECTURE TRAFFICSHOW OF TRAFFIC ISSIGNAL TEMPCLK:STD_LOGIC。輸出信號(用十進制在波形圖顯示數(shù)字) COUNTERS:OUT STD_LOGIC_VECTOR (5 DOWNTO 0)輸出信號(用十進制在波形圖中顯示周期狀態(tài)) )。輸出7端數(shù)碼管共陰極信號 BELL:OUT STD_LOGIC。輸出東西南北向兩個紅信號 NUM:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)。ENTITY TRAFFIC IS PORT( CLK,RESET,EMERGENCY:IN STD_LOGIC。USE 。輸入接口:NUMIN輸入信號輸出接口:NUM譯碼輸出u LIGHT信號燈控制模塊,使用狀態(tài)機,雙進程控制5個狀態(tài)輸入接口:COUNT計數(shù)器信號,EMERGENCY緊急狀態(tài)控制輸出接口:LIGHT1,LIGHT2信號燈輸出三.仿真波形及波形分析仿真波形由于時鐘為50MHz,故在仿真時為了波形圖更易讀,將分頻器設為20分頻1.狀態(tài)周期為1~50,在每個狀態(tài)內(nèi),數(shù)碼管共陰極進行掃描,且掃描同時數(shù)碼管顯示進行循環(huán)變化2.周期狀態(tài),在1~20,21~25,26~45,46~50進行紅綠燈顯示變化~50,在1~20,21~25,26~45,46~50進