【正文】
ntity hld2 isport(reset:in std_logic。 clk:in std_logic。 ena_scan:in std_logic。 recount:in std_logic。 sign_state:in std_logic_vector(2 downto 0)。 load:out std_logic_vector(7 downto 0))。end。architecture bhv of hld2 isconstant redew_time:integer:=15。constant yellowew_time:integer:=5。constant greenew_time:integer:=25。constant redsn_time:integer:=15。constant yellowsn_time:integer:=5。constant greensn_time:integer:=25。beginprocess(reset,clk)begin if reset=39。139。 then load=00000000。 elsif (clk39。event and clk=39。139。) then if (ena_scan=39。139。 and recount=39。139。) then case sign_state is when 000=load=conv_std_logic_vector(greensn_time,8)。 when 001=load=conv_std_logic_vector(yellowsn_time,8)。 when 010=load=conv_std_logic_vector(redsn_time,8)。 when 011=load=conv_std_logic_vector(redew_time,8)。 when 100=load=conv_std_logic_vector(yellowew_time,8)。 when 101=load=conv_std_logic_vector(greenew_time,8)。 when others=load=conv_std_logic_vector(yellowsn_time,8)。 end case。 end if。 end if。 end process。end。architecture bhv of hld2 isconstant redew_time:integer:=15。東西方向紅燈設(shè)定為15s。constant yellowew_time:integer:=5。東西方向黃燈設(shè)定為5s。constant greenew_time:integer:=25。東西方向綠燈設(shè)定為25s。constant redsn_time:integer:=15。南北方向紅燈設(shè)定為15s。constant yellowsn_time:integer:=5。南北方向黃燈設(shè)定為5s。constant greensn_time:integer:=25。南北方向綠燈設(shè)定為25s。process(clk,reset)beginif (reset=39。139。) then t_ff=00000000。 led=0000000000000000000000000。elsif (clk39。event and clk=39。139。) then if ena_1hz=39。139。 then if (recount=39。139。) then t_ff=load1。 else t_ff=t_ff1。 end if。 end if。 case conv_integer(t_ff) is when 0=led(24 downto 0)=1000000000000000000000000。 when 1=led(24 downto 0)=1100000000000000000000000。 when 2=led(24 downto 0)=1110000000000000000000000。 when 3=led(24 downto 0)=1111000000000000000000000。 …… when 23=led(24 downto 0)=1111111111111111111111110。 when 24=led(24 downto 0)=1111111111111111111111111。 when others=led(24 downto 0)=0000000000000000000000000。 end case。倒計(jì)時(shí)控制電路程序代碼library ieee。use 。use 。use 。entity hld3 isport(reset:in std_logic。 clk:in std_logic。 ena_1hz:in std_logic。 recount:in std_logic。 load:in std_logic_vector(7 downto 0)。 led:out std_logic_vector(24 downto 0)。 next_state:out std_logic)。end。architecture bhv of hld3 issignal t_ff:std_logic_vector(7 downto 0)。beginprocess(clk,reset)beginif (reset=39。139。) then t_ff=00000000。 led=0000000000000000000000000。elsif (clk39。event and clk=39。139。) then if ena_1hz=39。139。 then if (recount=39。139。) then t_ff=load1。 else t_ff=t_ff1。 end if。 end if。 case conv_integer(t_ff) is when 0=led(24 downto 0)=1000000000000000000000000。 when 1=led(24 downto 0)=1100000000000000000000000。 when 2=led(24 downto 0)=1110000000000000000000000。 when 3=led(24 downto 0)=1111000000000000000000000。 when 4=led(24 downto 0)=1111100000000000000000000。 when 5=led(24 downto 0)=1111110000000000000000000。 when 6=led(24 downto 0)=1111111000000000000000000。 when 7=led(24 downto 0)=1111111100000000000000000。 when 8=led(24 downto 0)=1111111110000000000000000。 when 9=led(24 downto 0)=1111111111000000000000000。 when 10=led(24 downto 0)=1111111111100000000000000。 when 11=led(24 downto 0)=1111111111110000000000000。 when 12=led(24 downto 0)=1111111111111000000000000。 when 13=led(24 downto 0)=1111111111111100000000000。 when 14=led(24 downto 0)=1111111111111110000000000。 when 15=led(24 downto 0)=1111111111111111000000000。 when 16=led(24 downto 0)=1111111111111111100000000。 when 17=led(24 downto 0)=1111111111111111110000000。 when 18=led(24 downto 0)=1111111111111111111000000。 when 19=led(24 downto 0)=1111111111111111111100000。 when 20=led(24 downto 0)=1111111111111111111110000。 when 21=led(24 downto 0)=1111111111111111111111000。 when 22=led(24 downto 0)=1111111111111111111111100。 when 23=led(24 downto 0)=1111111111111111111111110。 when 24=led(24 downto 0)=1111111111111111111111111。 when others=led(24 downto 0)=0000000000000000000000000。 end case。 end if。end process。next_state=39。139。 when t_ff=1 else 39。039。end。library ieee。use 。use 。entity hld4 isport(reset:in std_logic。 clk:in std_logic。 ena_scan:in std_logic。 ena_1hz:in std_logic。 flash_1hz:in std_logic。 a_m:in std_logic。 st_butt:in std_logic。 next_state:in std_logic。 recount:out std_logic。 sign_state:out std_logic_vector(2 downto 0)。 red:out std_logic_vector(1 downto 0)。 green:out std_logic_vector(1 downto 0)。 yellow:out std_logic_vector(1 downto 0))。end。architecture bhv of hld4 istype sreg0_type is (rewgsn, rewysn, gewrsn, yewrsn, yewysn, yewgsn, gewysn, rewrsn)。signal state:sreg0_type。signal st_transfer:std_logic。signal light:std_logic_vector(5 downto 0)。beginprocess(reset,clk,ena_scan,st_butt)variable rebn_ff:std_logic_vector(5 downto 0)。beginif (st_butt=39。139。or reset=39。139。) then rebn_ff:=111111。 st_transfer=39。039。elsif (clk39。event and clk=39。139