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

📄 duanxuan.vhd

📁 出租车计费器,VHDL实现
💻 VHD
字号:
--在程序change-bcd中以将各二进制数转换为bcd码                    
--因此,此程序输入为bcd码               
LIBRARY  IEEE;
USE  IEEE.STD_LOGIC_1164.ALL;
USE  IEEE.STD_LOGIC_ARITH.ALL;
USE  IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY  duanxuan  IS
    PORT(
           wei8,strpri,fare,sec,min:IN STD_LOGIC_VECTOR(7  DOWNTO  0);
            unipri:IN STD_LOGIC_VECTOR(1  DOWNTO  0);     
             start:IN STD_LOGIC;
               seg:OUT STD_LOGIC_VECTOR(6 DOWNTO  0)
);
END duanxuan;

ARCHITECTURE execute OF duanxuan IS
SIGNAL num: STD_LOGIC_VECTOR(3 DOWNTO  0);
SIGNAL seg_temp: STD_LOGIC_VECTOR(6 DOWNTO  0);
BEGIN
PROCESS(start,wei8,strpri,fare)
  BEGIN     
   IF start='1'THEN
    CASE wei8 IS                     --顺序a,b,c,d,e,f,g      
     WHEN "10000000" => num<="1010";   --E
     WHEN "01000000" => num<="1011";   --p
     WHEN "00100000" => num<="1100";   --t
     WHEN "00010000" => num<="1101";   --y
     WHEN "00000010" => num<="1110";   --'-'
     WHEN "00001000" => num<=strpri(7 DOWNTO 4);   
     WHEN "00000100" => num<=strpri(3 DOWNTO 0);   
     WHEN "00000001" => num<="00"&unipri;
     WHEN OTHERS=>num<="1111";
     END CASE;
   ELSE
     CASE wei8 IS                       --顺序a,b,c,d,e,f,g    
     WHEN "10000000" =>num<=fare(7  DOWNTO 4);  --车费,十位        
     WHEN "01000000" =>num<=fare(3  DOWNTO 0);  --车费,个位      
     WHEN "00100000" =>num<="1110";             --'-'    
     WHEN "00010000" =>num<=min(7  DOWNTO  4);      
     WHEN "00001000" =>num<=min(3  DOWNTO  0);
     WHEN "00000100" =>num<="1110";             --'-' 
     WHEN "00000010" =>num<=sec(7  DOWNTO  4); 
     WHEN "00000001" =>num<=sec(3  DOWNTO  0);
     WHEN  OTHERS=>num<="1111"; 
     END CASE;
     END IF;
   END PROCESS;
PROCESS(num)
 BEGIN 
  CASE num IS
      WHEN"0000"=>seg_temp<="1111110" ;  --0
      WHEN"0001"=>seg_temp<="0110000" ;  --1
      WHEN"0010"=>seg_temp<="1101101" ;  --2
      WHEN"0011"=>seg_temp<="1111001" ;  --3
      WHEN"0100"=>seg_temp<="0110011" ;  --4
      WHEN"0101"=>seg_temp<="1011011" ;  --5
      WHEN"0110"=>seg_temp<="1011111" ;  --6
      WHEN"0111"=>seg_temp<="1110010" ;  --7
      WHEN"1000"=>seg_temp<="1111111" ;  --8
      WHEN"1001"=>seg_temp<="1111011" ;  --9
      WHEN"1010"=>seg_temp<="1001111" ;  --E
      WHEN"1011"=>seg_temp<="1100111" ;  --p
      WHEN"1100"=>seg_temp<="0001111" ;  --t
      WHEN"1101"=>seg_temp<="0111011" ;  --y
      WHEN"1110"=>seg_temp<="0000001" ;  --'-'
      WHEN OTHERS=>seg_temp<="0000000";
      END CASE;
END PROCESS;
seg<=seg_temp;
END execute;



    

⌨️ 快捷键说明

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