⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 weizhi.vhd

📁 交通灯控制程序.实现十字路口的交通灯控制.使用vhdl编写,使用方便.
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity weizhi is
 port(clk1,clk2,rst:in std_logic;
                sel:out std_logic_vector(2 downto 0);
                led:out std_logic_vector(6 downto 0);
                  q:out std_logic_vector(0 to 11));
end;
architecture one of weizhi is
type jtd_st is(st0,st1,st2,st3,st4);
    signal state:jtd_st;
    signal sh,sl,num:std_logic_vector(3 downto 0);
    signal cnt:std_logic_vector(2 downto 0);
    signal y_ewsn,g_ewsn,r_ewsn:std_logic_vector(3 downto 0);
begin 
 process(clk1,rst)
 begin
  if rst='1' then state<=st0; sh<="0000";sl<="0010";
  elsif rising_edge (clk1) then
   case state is
   when st0=>y_ewsn<="1111";g_ewsn<="0000";r_ewsn<="0000";
        sl<=sl-'1';
     if sl="0000" then state<=st1;sh<="0010";sl<="1001";
     end if;
   when st1=>y_ewsn<="0000";g_ewsn<="1100";r_ewsn<="0011";         
       sl<=sl-'1';
      if  sl="0000" then  sh<=sh-'1';sl<="1001";
      if sl="0000" and sh="0000" then   state<=st2;sh<="0000";sl<="0010";
    end if;
     end if;
   when st2=>y_ewsn<="1100";g_ewsn<="0000";r_ewsn<="0011";        
     sl<=sl-'1';
    if sl="0000" then state<=st3;sh<="0010";sl<="1001";
     end if;
    when st3=>y_ewsn<="0000";g_ewsn<="0011";r_ewsn<="1100";               
     sl<=sl-'1';
      if  sl="0000" then  sh<=sh-1;sl<="1001";
      if sl="0000" and sh="0000" then   state<=st4;sh<="0000";sl<="0010";
    end if;
     end if;
    when st4=>y_ewsn<="0011";g_ewsn<="0000";r_ewsn<="1100"; 
        sl<=sl-'1';
     if sl="0000" then state<=st1;sh<="0010";sl<="1001";
     end if;
   end case;
end if;
 end process;
q(0)<=r_ewsn(3);q(1)<=g_ewsn(3);q(2)<=y_ewsn(3);
q(3)<=r_ewsn(1);q(4)<=g_ewsn(1);q(5)<=y_ewsn(1);
q(6)<=r_ewsn(2);q(7)<=g_ewsn(2);q(8)<=y_ewsn(2);
q(9)<=r_ewsn(0);q(10)<=g_ewsn(0);q(11)<=y_ewsn(0);
 process(clk2)
 begin
   if clk2'event and clk2='1' then
    if cnt=1 or sh=0 then
     cnt<="000";
     else cnt<=cnt+1;
    end if;
   end if;
end process;
sel<=cnt;
num<=sh when cnt=1 else sl;
led<="1111110"when num=0 else
       "0110000"when num=1 else
       "1101101"when num=2 else
       "1111001"when num=3 else
       "0110011"when num=4 else
       "1011011"when num=5 else
       "1011111"when num=6 else
       "1110000"when num=7 else
       "1111111"when num=8 else
       "1111011"when num=9 else
       "0000000";
 end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -