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

📄 manual.vhd

📁 此为用VHDL编写的可实现动感图像的点阵
💻 VHD
📖 第 1 页 / 共 2 页
字号:
library ieee;
use  ieee.std_logic_1164.all;
use  ieee.std_logic_signed.all;
entity manual is
      port(
              clk:  in  std_logic;
              cp:in  std_logic;
              en:  in std_logic_vector(1 downto 0);
              count: in std_logic_vector(1 downto 0);
               L1:out std_logic;
               L2:out std_logic;
               L3:out std_logic;
               L4:out std_logic;
               L5:out std_logic;
               L6:out std_logic;
               L7:out std_logic;
               L8:out std_logic;
               h1:out std_logic;
               h2:out std_logic;
               h3:out std_logic;
               h4:out std_logic;
               h5:out std_logic;
               h6:out std_logic;
               h7:out std_logic;
               h8:out std_logic

              );
      end ;
architecture behavor  of  manual is
  signal b:std_logic_vector(12 downto 0):="0000000000000";
  signal a:std_logic_vector(2 downto 0);
  signal e:std_logic_vector(2 downto 0);
  signal z:std_logic_vector(2 downto 0);
  signal x:std_logic_vector(2 downto 0);
  signal n:std_logic_vector(1 downto 0);
  signal m:std_logic_vector(4 downto 0);
  signal c:std_logic_vector(0 to 7);
  signal d:std_logic_vector(0 to 7);
  begin
  process(clk,cp)
  begin
 if(clk'event and clk='1') then
    if(cp='0')then
     b<=b+1;
     else
     b<="0000000000000";
   end if;
 end if;
 end process;

 process(clk)
  begin
  e(0)<=b(0);
  e(1)<=b(1);
  e(2)<=b(2);
  z(0)<=b(6);
  z(1)<=b(7);
  z(2)<=b(8);

           if(clk'event and clk='1') then
           if(en="00")then
           case  z is
           when  "000"=>c<="10000000";
           when  "001"=>c<="01000000";
           when  "010"=>c<="00100000";
           when  "011"=>c<="00010000";
           when  "100"=>c<="00001000";
           when  "101"=>c<="00000100";
           when  "110"=>c<="00000010";
           when  others=>c<="00000001";
           end  case;
           else
           case  e is
           when  "000"=>c<="10000000";
           when  "001"=>c<="01000000";
           when  "010"=>c<="00100000";
           when  "011"=>c<="00010000";
           when  "100"=>c<="00001000";
           when  "101"=>c<="00000100";
           when  "110"=>c<="00000010";
           when  others=>c<="00000001";
           end  case;
           end if;
             h8<=c(0);
             h7<=c(1);
             h6<=c(2);
             h5<=c(3);
             h4<=c(4);
             h3<=c(5);
             h2<=c(6);
             h1<=c(7);

           end if;
  end process;

  process(clk)
  begin
  a(0)<=b(0);
  a(1)<=b(1);
  a(2)<=b(2);
  x(0)<=b(9);
  x(1)<=b(10);
  x(2)<=b(11);
  n(0)<=b(9);
  n(1)<=b(10);
  m(0)<=b(8);
  m(1)<=b(9);
  m(2)<=b(10);
  m(3)<=b(11);
  m(4)<=b(12);
           if(clk'event and clk='1') then
           if(en="10")then


           if(count="00")then
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11000111";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11000111";
           when   "101"    =>d<="11011011";
           when   "110"    =>d<="11011011";
           when   others   =>d<="11000111";
           end case;
           
          
           elsif(count="01")then
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11011011";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11011011";
           when   "101"    =>d<="11011011";
           when   "110"    =>d<="11011011";
           when   others   =>d<="11100111";
           end case;
           
           elsif(count="10")then
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11000111";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11000111";
           when   "101"    =>d<="11011111";
           when   "110"    =>d<="11011111";
           when   others   =>d<="11011111";
           end case;
           
           else
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="00000000";
           when   "010"    =>d<="11100111";
           when   "011"    =>d<="11100111";
           when   "100"    =>d<="11100111";
           when   "101"    =>d<="11100111";
           when   "110"    =>d<="11100111";
           when   others   =>d<="11100111";
           end case;
           end if;
           
           elsif(en="00")then
           case x is
           when   "000"    =>d<="01111111";
           when   "001"    =>d<="00111111";
           when   "010"    =>d<="00011111";
           when   "011"    =>d<="00001111";
           when   "100"    =>d<="00000111";
           when   "101"    =>d<="00000011";
           when   "110"    =>d<="00000001";
           when   others   =>d<="00000000";
           end case;

           elsif(en="01")then
           if(n="00")then      
          case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11000111";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11000111";
           when   "101"    =>d<="11011011";
           when   "110"    =>d<="11011011";
           when   others   =>d<="11000111";
           end case;
           elsif(n="01")then
         case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11011011";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11011011";
           when   "101"    =>d<="11011011";
           when   "110"    =>d<="11011011";
           when   others   =>d<="11100111";
           end case;
           elsif(n="10")then
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="11000111";
           when   "010"    =>d<="11011011";
           when   "011"    =>d<="11011011";
           when   "100"    =>d<="11000111";
           when   "101"    =>d<="11011111";
           when   "110"    =>d<="11011111";
           when   others   =>d<="11011111";
           end case;
           elsif(n="11")then
           case a is
           when   "000"    =>d<="11111111";
           when   "001"    =>d<="00000000";
           when   "010"    =>d<="11100111";
           when   "011"    =>d<="11100111";
           when   "100"    =>d<="11100111";
           when   "101"    =>d<="11100111";
           when   "110"    =>d<="11100111";
           when   others   =>d<="11100111";
           end case;
           end if;
           elsif(en="11")then
           if(m="00000" or m="00001" )then      
           case a is
           when   "000"    =>d<="00000000";
           when   "001"    =>d<="11100111";
           when   "010"    =>d<="11100111";
           when   "011"    =>d<="11100111";
           when   "100"    =>d<="11100111";
           when   "101"    =>d<="11100111";
           when   "110"    =>d<="11100111";
           when   others   =>d<="00000000";
           end case;
           elsif(m="00010")then
          case a is
           when   "000"    =>d<="00000001";
           when   "001"    =>d<="11001111";
           when   "010"    =>d<="11001111";
           when   "011"    =>d<="11001111";
           when   "100"    =>d<="11001111";
           when   "101"    =>d<="11001111";
           when   "110"    =>d<="11001111";
           when   others   =>d<="00000001";
           end case;
           elsif(m="00011")then
           case a is
           when   "000"    =>d<="00000011";
           when   "001"    =>d<="10011111";
           when   "010"    =>d<="10011111";
           when   "011"    =>d<="10011111";
           when   "100"    =>d<="10011111";
           when   "101"    =>d<="10011111";
           when   "110"    =>d<="10011111";
           when   others   =>d<="00000011";
           end case;
           elsif(m="00100")then
           case a is
           when   "000"    =>d<="00000111";
           when   "001"    =>d<="00111111";
           when   "010"    =>d<="00111111";
           when   "011"    =>d<="00111111";
           when   "100"    =>d<="00111111";
           when   "101"    =>d<="00111111";
           when   "110"    =>d<="00111111";
           when   others   =>d<="00000111";
           end case;
           elsif(m="00101")then
           case a is
           when   "000"    =>d<="00001111";
           when   "001"    =>d<="01111111";
           when   "010"    =>d<="01111110";
           when   "011"    =>d<="01111110";
           when   "100"    =>d<="01111111";
           when   "101"    =>d<="01111111";
           when   "110"    =>d<="01111111";
           when   others   =>d<="00001111";
           end case;
           elsif(m="00110")then
           case a is
           when   "000"    =>d<="00011111";
           when   "001"    =>d<="11111110";
           when   "010"    =>d<="11111101";
           when   "011"    =>d<="11111101";
           when   "100"    =>d<="11111110";
           when   "101"    =>d<="11111111";
           when   "110"    =>d<="11111111";
           when   others   =>d<="00011111";
           end case;
           elsif(m="00111")then
           case a is
           when   "000"    =>d<="00111111";
           when   "001"    =>d<="11111100";
           when   "010"    =>d<="11111011";
           when   "011"    =>d<="11111011";
           when   "100"    =>d<="11111101";
           when   "101"    =>d<="11111110";
           when   "110"    =>d<="11111111";
           when   others   =>d<="00111111";
           end case;
           elsif(m="01000")then
           case a is

⌨️ 快捷键说明

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