【正文】
END behave。 END IF。 IF t=26 THEN c=?1?。 END IF。 BEGIN IF ( clk?EVENT AND clk=?1?)THEN IF enable=?1? AND t26 THEN 23 t:=t+1。 END count30。 enable:IN STD_LOGIC。 USE 。 END behave。 END IF。 IF t=5 THEN c=?1?。 END IF。 BEGIN IF ( clk?EVENT AND clk=?1?)THEN IF enable=?1? AND t5 THEN t:=t+1。 END count30。 enable:IN STD_LOGIC。 22 USE 。 END behave。 END IF。 IF t=30 THEN c=?1?。 END IF。 BEGIN IF ( clk?EVENT AND clk=?1?)THEN IF enable=?1? AND t30 THEN t:=t+1。 END count30。 enable:IN STD_LOGIC。 USE 。 END behave。 y2=?1? WHEN state=s1 ELSE ?0?。 g1=?1? WHEN state=s2 ELSE ?0?。 r1=?1? WHEN state=s1 OR state=s0 ELSE ?0?。 c2=?1? WHEN state=s1 OR state=s3 ELSE ?0?。 END PROCESS。 END CASE。 WHEN s3=IF w2=?1? THEN state=s0。 WHEN s2=IF w3=?1? THEN state=s3。 WHEN s1=IF w2=?1? THEN state=s2。 ELSIF(clk?EVENT AND clk=?1?)THEN CASE state IS WHEN s0=IF w1=’ 1’ THEN 條件信號賦值語句 state=s1。 SIGNAL state:state_space。 復位信號 END traffic_control。 兩個方向的黃燈信號 g1,g2:OUT STD_LOGIC。 各定時計數(shù)器的工作信號 r1,r2:OUT STD_LOGIC。 c1,c2,c3:OUT STD_LOGIC。 USE 。 圖 35 交通管理器仿真波形 (五) 設(shè)計 總結(jié) 本次課程設(shè)計對數(shù)字電子技術(shù)有了更進一步的熟悉,實際操作和課本上的知識有很大聯(lián)系,但又高于課本,一個看似很簡單的電路,要動手把它設(shè)計出來就比較困難了,因為是設(shè)計要求我們在以后的學習中注 意這一點,要把課本上所學到的知識和實際聯(lián)系起來,同時通過本次電路的設(shè)計,不但鞏固了所學知識,也使我們把理論與實踐從真正意義上結(jié)合起來,增強了學習的興趣,考驗了我們借助互聯(lián)網(wǎng)絡(luò)搜集、查閱相關(guān)文獻資料,和組織材料的綜合能力。從圖中可以看出,首先是甲道禁止( r1為高電平),乙道通行( g2 為高電平);經(jīng)過 30 秒后,轉(zhuǎn)換成甲道禁止( r1 為高電平),乙道停車( y2 為高電平);經(jīng)過 5 秒后,轉(zhuǎn)換成甲道通行 ( g1 為高電平),乙道禁止( r2 為高電 平);經(jīng)過 26 秒后,轉(zhuǎn)換成甲道停車( y1 為高電平 ) ,乙道禁止( r2 為高電平);再經(jīng)過 5 秒,再次轉(zhuǎn)換成甲 道禁止( r1 為高電平),乙道通行( g2 為高電平),乙道通行( g2 為高電平)狀態(tài),完成一個工作循環(huán)。 END PROCESS。 ELSE c=?0?。 END IF。 ELSE t:=0。 BEGIN PROCESS(clk) VARIABLE t: INTEGER RANGE 26 DOWNTO 0。 26 s 定時單元的 VHDL 源程序 26 s 定時單元的設(shè)計原理與 30s 定時單元的設(shè)計原理相同,使用加法計數(shù),實現(xiàn)信號值自加, 程序中 clk 為脈沖信號輸入端 。 END IF。 IF t=5 THEN c=?1?。 END IF。 BEGIN IF ( clk?EVENT AND clk=?1?)THEN IF enable=?1? AND t5 THEN t:=t+1。 enable 為甲乙道定時器使能信號 輸入端, 1 為開始計數(shù) , 0 表示不計數(shù)。 5 s 定時單元的 VHDL 源程序 5 s 定時單元的設(shè)計原理與 30s 定時單元的設(shè)計原理相同,使用加法計數(shù),實現(xiàn)信號值自加 。 END IF。 IF t=30 THEN c=?1?。 END IF。 BEGIN IF ( clk?EVENT AND clk=?1?)THEN IF enable=?1? AND t30 THEN t:=t+1。程序中 clk 為脈沖信號的輸入端, enable 為甲乙道定時器使能信號 輸入端, 1 為開始計數(shù) , 0表示不計數(shù) 。 當 控制器處于 s0 狀態(tài)時, c1=1, g2=1, r1=1, 即控制乙道的計數(shù)器開始計數(shù),乙道綠燈亮,甲道紅燈亮,否則 c g r1 清零; 當控制器處于 s1 狀態(tài)時, c2=1, y2=1, r1=1,即控制公共停車的計數(shù)器開始計數(shù), 乙道黃燈亮,甲道紅燈亮,否則 c y r1 清零; 當控制器處于 s2 狀態(tài)時, c3=1, g1=1, r2=1,即控制甲道的計數(shù)器開始計數(shù),甲道綠燈亮,乙道紅燈亮,否則 c g r2 清零。 g2=?1? WHEN state=s0 ELSE ?0?。 r2=?1? WHEN state=s2 OR state=s3 ELSE ?0?。 y1=?1? WHEN state=s3 ELSE ?0?。 c3=?1? WHEN state=s2 ELSE ?0?。 c1=?1? WHEN state=s0 ELSE ?0?。 S3 狀態(tài),甲道黃燈亮,乙道紅燈亮,若 W2 等于 1,表示 S3 狀態(tài)執(zhí)行完畢,則轉(zhuǎn)入S0 狀態(tài);若 W3 不等于 1,表示 S3 狀態(tài)正在執(zhí)行,則繼續(xù)執(zhí)行 S3 狀態(tài)。當 W3=1,即乙道禁止,甲道停車,則執(zhí)行 S3 狀態(tài),否則繼續(xù)執(zhí)行 S2 狀態(tài),直到 W3 等于 1。 控制器處于 S2 狀態(tài)時,為了實現(xiàn)甲道處于停車狀態(tài),而乙道禁止通行的功能,由現(xiàn)時間 W3 決定次狀態(tài)而進行相應的跳轉(zhuǎn)。 S1 狀態(tài),甲道紅燈亮,乙道黃燈亮,若 W2 等于 1,表示 S1 狀態(tài)執(zhí)行完畢,則轉(zhuǎn)入 S2 狀態(tài);若 W2 不等于1,表示 S1 狀態(tài)正在執(zhí)行,則繼續(xù)執(zhí)行 S1 狀態(tài)。 當 W1=1,即 乙 道停 車,甲道禁止 ,則執(zhí)行 S1 狀態(tài) ,否則繼續(xù)執(zhí)行 S0 狀態(tài),直到 W1 等于 1。 15 控制器處于 S0 狀態(tài)時,為了實現(xiàn)甲道處于通行狀態(tài),而乙道禁止通行的功能,由現(xiàn)時間 W1 決定次狀態(tài)而進行相應的跳轉(zhuǎn)。 END IF。 END IF。 END IF。 END IF。 ELSIF(clk?EVENT AND clk=?1?)THEN 程序利用進程的順序語句,在脈沖信號 clk 的作用下,由系統(tǒng)復位信號 reset,決定 state 的變化。程序的狀態(tài)轉(zhuǎn)換如 圖 33 所示。程序中 clk 為脈沖信號的輸入端, SM, SB 分別為主干道,支干道有車無車的表示信號輸入端, 1 表示有車, 0 表示無車。圖 34 是交通管理器頂層圖形輸入文件,它用原理圖形式表明系統(tǒng)的組成,即系統(tǒng)由控制器和 3 個定時計數(shù)器組成;