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

📄 display.vhd

📁 数字频率计是一种用来测试周期性变化信号工作频率的装置。其原理是在规定的单位时间(闸门时间)内
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity display is
port(disclk:in std_logic;
     num1:in std_logic_vector(3 downto 0);
     num2:in std_logic_vector(3 downto 0);
     num3:in std_logic_vector(3 downto 0);
     num4:in std_logic_vector(3 downto 0);
     num5:in std_logic_vector(3 downto 0);
     num6:in std_logic_vector(3 downto 0);
     num7:in std_logic_vector(3 downto 0);
     num8:in std_logic_vector(3 downto 0);

     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_sa:out std_logic;
     led_sb:out std_logic;
     led_sc:out std_logic);
end display;

architecture behav of display is
signal q:std_logic_vector(5 downto 0);
signal sel:std_logic_vector(2 downto 0);
signal s:std_logic_vector(2 downto 0);
signal num:std_logic_vector(3 downto 0);
signal led:std_logic_vector(6 downto 0);
begin 
  s<=q(5 downto 3);
  led_sa<=sel(0);
  led_sb<=sel(1);
  led_sc<=sel(2);
  led_a<=led(0);
  led_b<=led(1);
  led_c<=led(2);
  led_d<=led(3);
  led_e<=led(4);
  led_f<=led(5);
  led_g<=led(6);
  
  process(disclk)
  begin
    if(disclk'event and disclk ='1')then
      if(q="111111")then
         q<="000000";
      else
         q<=q+'1';
      end if;
    end if;
  end process;
 
 process(num1,num2,num3,num4,num5,num6,num7,num8,sel,disclk)
 begin  
   if(disclk'event and disclk ='1')then
     if s="000" then
       num<=num1;
       sel<="000";
       elsif s="001" then
       num<=num2;
       sel<="001";
       elsif s="010" then
       num<=num3;
       sel<="010";
       elsif s="011" then
       num<=num4;
       sel<="011";
       elsif s="100" then
       num<=num5;
       sel<="100";
       elsif s="101" then
       num<=num6;
       sel<="101";
       elsif s="110" then
       num<=num7;
       sel<="110";
     else
       num<=num8;
       sel<="111";
     end if;
   end if;
 end process;

 led<="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
      "1000000" when num=15 else
      "0000000";
end behav;

⌨️ 快捷键说明

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