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

📄 xianshi.vhd.bak

📁 实现由一个4位十进制数码管(含小数点)显示结果
💻 BAK
📖 第 1 页 / 共 2 页
字号:
library ieee;
use ieee.std_logic_1164.all;
Use ieee.std_logic_unsigned.all;
entity xianshi is
   port( flage:in std_logic_vector(1 downto 0);
		 in0:in std_logic_vector(7 downto 0);
		 in1:in std_logic_vector(7 downto 0);
		 in2:in std_logic_vector(7 downto 0);
		 in3:in std_logic_vector(7 downto 0);
		out0:out std_logic_vector(7 downto 0);
        out1:out std_logic_vector(7 downto 0);
        out2:out std_logic_vector(7 downto 0);
        out3:out std_logic_vector(7 downto 0));
end;
architecture behav of xianshi is 
  signal A :std_logic_vector(1 downto 0);
  signal A0,A1,A2,A3,B0,B1,B2,B3,C0,C1,C2,C3,D0,D1,D2,D3: std_logic_vector(7 downto 0);
  signal F0,F1,F2,F3,G0,G1,G2,G3: std_logic_vector(7 downto 0);
  begin
    process(flage) 
     begin
         A<=flage;
      case A is
        when "00" =>
           A0<=in0; 
           A1<=in1;
           A2<=in2; 
           A3<=in3;
        when "01" =>
           A0<=in0; 
           A1<=in1 OR "10000000";
           A2<=in2; 
           A3<=in3;
        when "10" =>
           A0<=in0; 
           A1<=in1;
           A2<=in2 OR "10000000"; 
           A3<=in3;
         when "11" =>
           A0<=in0; 
           A1<=in1;
           A2<=in2; 
           A3<=in3 OR "10000000";
         when others =>null;
         end case;
             C0<=A0 AND "01111111";
             C1<=A1 AND "01111111";
             C2<=A2 AND "01111111";
             C3<=A3 AND "01111111";
             if C0="00000000" then
                 if C1="00000000" then
                    if C2="00000000" then
                       B0<=A3;B2<="00000000";B1<="00000000";B3<="00000000";    
                    else
                       B1<=A3;B0<=A2;B2<="00000000";B3<="00000000";
                    end if;
                  else
                       B2<=A3;B1<=A2;B0<=A1;B3<="00000000";
                   end if;
                 else
                     B3<=A3;B2<=A2;B1<=A1;B0<=A0;
              end if;
             F0<=B0 AND "01111111";
             F1<=B1 AND "01111111";
             F2<=B2 AND "01111111";
             F3<=B3 AND "01111111";
              if F3="00000000" then
                 if F2="00000000" then
                    if F1="00000000" then
                       G0<=B0;
                       CASE G0 IS
                          WHEN "00000000" => D0<="00111111";
                          WHEN "00000001" => D0<="00000110";
                          WHEN "00000010" => D0<="01011011";
                          WHEN "00000011" => D0<="01001111";
                          WHEN "00000100" => D0<="01100110";
                          WHEN "00000101" => D0<="01101101";
                          WHEN "00000110" => D0<="01111100";
                          WHEN "00000111" => D0<="00000111";
                          WHEN "00001000" => D0<="01111111";
                          WHEN "00001001" => D0<="01100111";
                          WHEN "10000000" => D0<="10111111";
                          WHEN "10000001" => D0<="10000110";
                          WHEN "10000010" => D0<="11011011";
                          WHEN "10000011" => D0<="11001111";
                          WHEN "10000100" => D0<="11100110";
                          WHEN "10000101" => D0<="11101101";
                          WHEN "10000110" => D0<="11111100"; 
                          WHEN "10000111" => D0<="10000111";
                          WHEN "10001000" => D0<="11111111";
                          WHEN "10001001" => D0<="11100111";
                          WHEN OTHERS     => NULL;
                          END CASE;
                        D1<="00000000";D2<="00000000";D3<="00000000";
                    else
                         G0<=B0;G1<=B1;
                         CASE G0 IS
                           WHEN "00000000" => D0<="00111111";
                           WHEN "00000001" => D0<="00000110";
                           WHEN "00000010" => D0<="01011011";
                           WHEN "00000011" => D0<="01001111";
                           WHEN "00000100" => D0<="01100110";
                           WHEN "00000101" => D0<="01101101";
                           WHEN "00000110" => D0<="01111100";
                           WHEN "00000111" => D0<="00000111";
                           WHEN "00001000" => D0<="01111111";
                           WHEN "00001001" => D0<="01100111";
                           WHEN "10000000" => D0<="10111111";
                           WHEN "10000001" => D0<="10000110";
                           WHEN "10000010" => D0<="11011011";
                           WHEN "10000011" => D0<="11001111";
                           WHEN "10000100" => D0<="11100110";
                           WHEN "10000101" => D0<="11101101";
                           WHEN "10000110" => D0<="11111100"; 
                           WHEN "10000111" => D0<="10000111";
                           WHEN "10001000" => D0<="11111111";
                           WHEN "10001001" => D0<="11100111";
                           WHEN OTHERS     => NULL;
                           END CASE;
                         CASE G1 IS
                           WHEN "00000000" => D1<="00111111";
                           WHEN "00000001" => D1<="00000110";
                           WHEN "00000010" => D1<="01011011";
                           WHEN "00000011" => D1<="01001111";
                           WHEN "00000100" => D1<="01100110";
                           WHEN "00000101" => D1<="01101101";
                           WHEN "00000110" => D1<="01111100";
                           WHEN "00000111" => D1<="00000111";
                           WHEN "00001000" => D1<="01111111";
                           WHEN "00001001" => D1<="01100111";
                           WHEN "10000000" => D1<="10111111";
                           WHEN "10000001" => D1<="10000110";
                           WHEN "10000010" => D1<="11011011";
                           WHEN "10000011" => D1<="11001111";
                           WHEN "10000100" => D1<="11100110";
                           WHEN "10000101" => D1<="11101101";
                           WHEN "10000110" => D1<="11111100"; 
                           WHEN "10000111" => D1<="10000111";
                           WHEN "10001000" => D1<="11111111";
                           WHEN "10001001" => D1<="11100111";
                           WHEN OTHERS     => NULL;
                           END CASE;
                         D2<="00000000";D3<="00000000";
                       end if;
                   else
                      G0<=B0;G1<=B1;G2<=B2;  
                      CASE G0 IS
                         WHEN "00000000" => D0<="00111111";
                         WHEN "00000001" => D0<="00000110";
                         WHEN "00000010" => D0<="01011011";
                         WHEN "00000011" => D0<="01001111";
                         WHEN "00000100" => D0<="01100110";
                         WHEN "00000101" => D0<="01101101";
                         WHEN "00000110" => D0<="01111100";
                         WHEN "00000111" => D0<="00000111";
                         WHEN "00001000" => D0<="01111111";
                         WHEN "00001001" => D0<="01100111";
                         WHEN "10000000" => D0<="10111111";

⌨️ 快捷键说明

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