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

📄 xianshi.vhd

📁 利用FPGA编写的键盘译码程序
💻 VHD
📖 第 1 页 / 共 2 页
字号:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity xianshi is
  port( ch: in std_logic_vector(7 downto 0);
       sel: in std_logic_vector(3 downto 0);
         q: out std_logic_vector(15 downto 0));
end xianshi;

architecture rt1 of xianshi is
signal y: std_logic_vector(15 downto 0);
begin
  process(ch,sel)
	begin
      case ch is
           when "00000000"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111111100000000";
             when "1011"=>q<="1100001100000000";
             when "1100"=>q<="1100001100000000";
             when "1101"=>q<="1100001100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
  when "00000001"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="0000000000000000";
             when "1011"=>q<="0000000000000000";
             when "1100"=>q<="0000000000000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000010"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1101111100000000";
             when "1011"=>q<="1101111100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1101101100000000";
             when "1110"=>q<="1111101100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000011"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1101101100000000";
             when "1011"=>q<="1101101100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000100"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111100000000000";
             when "1011"=>q<="1111100000000000";
             when "1100"=>q<="0001100000000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000101"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111101100000000";
             when "1011"=>q<="1111101100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1101111100000000";
             when "1110"=>q<="1101111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000110"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111111100000000";
             when "1011"=>q<="1111111100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1101101100000000";
             when "1110"=>q<="1101111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00000111"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1100000000000000";
             when "1011"=>q<="1100000000000000";
             when "1100"=>q<="1100000000000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
 when "00001000"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111111100000000";
             when "1011"=>q<="1111111100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
when "00001001"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="0000000000000000";
             when "1001"=>q<="0000000000000000";

             when "1010"=>q<="1111101100000000";
             when "1011"=>q<="1111101100000000";
             when "1100"=>q<="1101101100000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
when "00010000"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="1111111100000000";
             when "1001"=>q<="1111111100000000";

             when "1010"=>q<="1111111100000000";
             when "1011"=>q<="1111111100000000";
             when "1100"=>q<="1100001100000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
when "00010001"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";
             when "0110"=>q<="0000000000000000";
             when "0111"=>q<="0000000000000000";
             when "1000"=>q<="1111111100000000";
             when "1001"=>q<="1111111100000000";

             when "1010"=>q<="0000000000000000";
             when "1011"=>q<="0000000000000000";
             when "1100"=>q<="0000000000000000";
             when "1101"=>q<="1111111100000000";
             when "1110"=>q<="1111111100000000";

             when "1111"=>q<="0000000000000000";
             when others=>null;
          end case;
when "00010010"=>
           case sel is
             when "0000"=>q<="0000000000000000";
             when "0001"=>q<="0000000000000000";
             when "0010"=>q<="0000000000000000";
             when "0011"=>q<="0000000000000000";
             when "0100"=>q<="0000000000000000";

             when "0101"=>q<="0000000000000000";

⌨️ 快捷键说明

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