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

📄 display.vhd

📁 交通灯VHDL设计
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity display is
   port(din5:in std_logic_vector(3 downto 0);
        din4:in std_logic_vector(3 downto 0);
        din3:in std_logic_vector(3 downto 0);
        din2:in std_logic_vector(3 downto 0);
        din1:in std_logic_vector(3 downto 0);
        din0:in std_logic_vector(3 downto 0);
        clk:in std_logic;

        led_sa:  out std_logic;
        led_sb:  out std_logic;
        led_sc:  out std_logic;

        led_a:  out std_logic;
        led_b:  out std_logic;
        led_c:  out std_logic;
        led_d:  out std_logic;
        led_e:  out std_logic;
        led_f:  out std_logic;
        led_g:  out std_logic;
        led_dp:  out std_logic);
end display;
architecture behave of display is
    signal seg:std_logic_vector(6 downto 0);
    signal sel:std_logic_vector(2 downto 0);
    signal num:std_logic_vector(3 downto 0);
    signal s:std_logic_vector(2 downto 0);
begin 
    led_sa<=sel(0); 
    led_sb<=sel(1);
    led_sc<=sel(2);
    led_a<=seg(0);
    led_b<=seg(1);
    led_c<=seg(2);
    led_d<=seg(3);
    led_e<=seg(4);
    led_f<=seg(5);
    led_g<=seg(6); 
process(clk)
begin 
if clk'event and clk='1' then
      if s="101" then
      s<="000";
     else
      s<=s+'1';
       end if;
   end if;
end process;

process(s,din0,din1,din3,din4,din5)
begin
     if s="000" then 
        sel<="000";
         num<=din0;
        led_dp<='0';
     elsif s="001" then
        sel<="001";
        num<=din1;
        led_dp<='0'; 
     elsif s="010" then
        sel<="010";
        num<=din2;
        led_dp<='0';
     elsif s="011" then
        sel<="011";
        num<=din3;
        led_dp<='0';
elsif s="100" then
        sel<="100";
        num<=din4;
        led_dp<='0';
     elsif s="101" then
        sel<="101";
        num<=din5;
        led_dp<='0';
     else 
        sel<="XXX";
        num<="XXXX";
        led_dp<='0';
     end if;
end process;
seg<="0111111" when num=0 else
     "0000110" when num=1 else 
     "1011011" when num=2 else
 "1001111" when num=3 else
     "1100110" when num=4 else
     "1101101" when num=5 else
     "1111101" when num=6 else
     "0000111" when num=7 else
     "1111111" when num=8 else
     "1101111" when num=9 else
     "1110111" when num=10 else
     "1111100" when num=11 else
     "0111001" when num=12 else
     "1011110" when num=13 else
     "1111001" when num=14 else
     "1110001" when num=15 else
     "0000000";
end behave;

⌨️ 快捷键说明

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