【文章內(nèi)容簡(jiǎn)介】
CASE state IS WHEN green=IF a=39。039。THEN th:=0101。 tl:=0110。 a:=39。139。 ga=39。139。 ra=39。039。 ya=39。039。 ELSE IF NOT(th=0000 AND tl=0001)THEN IF tl=0000THEN tl:=1001。 th:=th1。 ELSE tl:=tl1。 END IF。 ELSE th:=0000。 tl:=0000。 16 a:=39。039。 state:=yellow2。 END IF。 END IF。 WHEN red=IF a=39。039。THEN th:=0101。 tl:=1001。 a:=39。139。 ra=39。139。 ya=39。039。 ga=39。039。 ELSE IF NOT(th=0000 AND tl=0001)THEN IF tl=0000THEN tl:=1001。 th:=th1。 ELSE tl:=tl1。 END IF。 ELSE th:=0000。 tl:=0000。 a:=39。039。 state:=yellow1。 END IF。 END IF。 WHEN yellow1=IF a=39。039。THEN th:=0000。 17 tl:=0010。 a:=39。139。 ya=39。139。 ga=39。039。 ra=39。039。 ELSE IF NOT(th=0000 AND tl=0001)THEN IF tl=0000THEN tl:=1001。 th:=th1。 ELSE tl:=tl1。 END IF。 ELSE th:=0000。 tl:=0000。 a:=39。039。 state:=green。 END IF。 END IF。 WHEN yellow2=IF a=39。039。THEN th:=0000。 tl:=0010。 a:=39。139。 ra=39。139。 ga=39。039。 ya=39。039。 ELSE IF NOT(th=0000 AND tl=0001)THEN 18 IF tl=0000THEN tl:=1001。 th:=th1。 ELSE tl:=tl1。 END IF。 ELSE th:=0000。 tl:=0000。 a:=39。039。 state:=red。 END IF。 END IF。 END CASE。 END IF。 timeah=th。 timeal=tl。 END PROCESS。 END bhv。 A 方向的倒計(jì)時(shí)控制模塊 contrala 的仿真波形圖 211 所示。 圖 211 A 方向的倒計(jì)時(shí)控制模的仿真波形 動(dòng)態(tài)顯示控制電路 片選信號(hào)產(chǎn)生模塊 片選信號(hào)產(chǎn)生模塊 sel(如圖 212 所示 )用于產(chǎn)生對(duì)數(shù)據(jù)選擇器模塊 mux41 的片 19 選信號(hào),控制數(shù)據(jù)選擇器模塊 mux41 的數(shù)據(jù)選擇。 圖 212 片選信號(hào)產(chǎn)生模塊 片選信號(hào)產(chǎn)生模塊 sel 的源程序如下: LIBRARY ieee。 USE 。 USE 。 ENTITY sel IS PORT(clk:IN std_logic。 sell:OUT std_logic_vector(2 DOWNTO 0))。 END sel。 ARCHITECTURE sel_arc OF sel IS BEGIN PROCESS(clk) VARIABLE tmp:std_logic_vector(2 DOWNTO 0)。 BEGIN IF(clk39。event AND clk=39。139。)THEN IF tmp=000THEN tmp:=001。 ELSIF tmp=001THEN tmp:=100。 ELSIF tmp=100THEN tmp:=101。 ELSIF tmp=101THEN tmp:=000。 20 END IF。 END IF。 sell=tmp。 END PROCESS。 END sel_arc。 片選信號(hào)產(chǎn)生模塊 sel 的仿真波形如圖 212 所示。由圖可以看出,在時(shí)鐘脈沖 clk 的控制下,輸出 sell 循環(huán)產(chǎn)生 000001100101 的片選數(shù)據(jù),用來(lái)控制數(shù)據(jù)選擇模塊的數(shù)據(jù)選擇。 圖 212 片選信號(hào)產(chǎn)生模塊的仿真波形 數(shù)據(jù)選擇模塊 數(shù)據(jù)選擇模塊 mux41(如圖 213 所示)在片選信號(hào) sel[ 1..0]的控制下,有選擇地、有循環(huán)地輸出倒計(jì)時(shí)顯示器要顯示的數(shù)字信號(hào)。該模塊還將輸出另一組片選信號(hào) so[1..0],用于控制動(dòng)態(tài)顯示數(shù)碼管的選擇。 圖 213 數(shù)據(jù)選擇模塊 數(shù)據(jù)選擇模塊 mux41 的源程序如下: LIBRARY ieee。 USE 。 ENTITY mux41 IS PORT(sel:IN std_logic_vector(2 DOWNTO 0)。 d0, d1, d2, d3:IN std_logic_vector(3 DOWNTO 0)。 21 q:OUT std_logic_vector(3 DOWNTO 0)。 so:OUT std_logic_vector(1 DOWNTO 0))。 END mux41。 ARCHITECTURE bhv OF mux41 IS BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN100=q=d2。so=00。 WHEN101=q=d3。so=01。 WHEN000=q=d0。so=10。 WHEN OTHERS=q=d1。so=11。 END CASE。 END PROCESS。 END bhv。 數(shù)據(jù)選擇模塊 mux41 的仿真波形 圖如圖 214 所示: 圖 214 數(shù)據(jù)選擇模塊的仿真波形 七段顯示譯碼模塊 七段顯示譯碼模塊 dec7s(如圖 215)的功能是將十進(jìn)制 BCD 碼轉(zhuǎn)化為七段數(shù)碼管顯示對(duì)應(yīng)的七段數(shù)據(jù)。 22 215 圖七段顯示譯碼模塊 七段顯示譯碼模塊 dec7s 的源程序如下: LIBRARY ieee。 USE 。 ENTITY dec7s IS PORT(d:IN std_logic_vector(3 DOWNTO 0)。 q0, q1, q2, q3, q4, q5, q6:OUT std_logic)。 END dec7s。 ARCHITECTURE bhv OF dec7s IS BEGIN PROCESS(d) VARIABLE q:std_logic_vector(6 DOWNTO 0)。 BEGIN CASE d IS WHEN0000=q:=0111111。 WHEN0001=q:=0000110。 WHEN0010=q:=1011011。 WHEN0011=q:=1001111。 WHEN0100=q:=1100111。 23 WHEN0101=q:=1101101。 WHEN0110=q:=1111101。 WHEN0111=q:=0100111。 WHEN1000=q:=1111111。 WHEN1001=q:=1101111。 WHEN OTHERS=q:=1111001。 END CASE。 q0=q(0)。 q1=q(1)。 q2=q(2)。 q3=q(3)。 q4=q(4)。 q5=q(5)。 q6=q(6)。 END PROCESS。 END bhv。 24 3 課程設(shè)計(jì)總結(jié) 本論文運(yùn)用 VHDL 語(yǔ)言,基