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

📄 counter_600.vhd

📁 交流电压表相应的VHDL代码
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_ARITH.all;
use ieee.std_logic_unsigned.all;
entity counter_600 is
  port(rd,intr:in std_logic;
              da:in std_logic_vector(7 downto 0);
       d1,d2,d3:out std_logic_vector(3 downto 0)

       );
end counter_600;

architecture rtl of counter_600 is
  signal s1:std_logic_vector(7 downto 0);
  --signal dd1,dd2,dd3:std_logic_vector(3 downto 0);
  signal temp:std_logic_vector(11 downto 0);
  signal rd_i: std_logic;
 begin
   d1<=temp(3 downto 0);
   d2<=temp(7 downto 4);
   d3<=temp(11 downto 8);
  process(rd)
	variable cnt:integer range 0 to 20; 
  begin
    if(rd'event and rd='1') then
     if(cnt=9) then
       cnt:=0;
       rd_i<=not rd_i;
     else
       cnt:=cnt+1; 
     end if;
    end if;
  end process;

  process(rd_i)
   begin
     if(rd_i'event and rd_i='0') then
      if(intr='0') then
          s1<=da;
       end if;
   end if;
  end process;  

process(s1)
variable a:integer range 0 to 255;
begin
a:=conv_integer(s1);
case a is
    when 127=>temp<="000000000000";
    when 126=>temp<="000000000100";
    when 125=>temp<="000000001000";
    when 124=>temp<="000000010010";
    when 123=>temp<="000000010110";
    when 122=>temp<="000000100000";
    when 121=>temp<="000000100100";
    when 120=>temp<="000000101000";
    when 119=>temp<="000000110010";
    when 118=>temp<="000000110110";

    when 117=>temp<="000001000000";
    when 116=>temp<="000001000100";
    when 115=>temp<="000001001000";
    when 114=>temp<="000001010010";
    when 113=>temp<="000001010110";
    when 112=>temp<="000001100000";
    when 111=>temp<="000001100100";
    when 110=>temp<="000001101000";
    when 109=>temp<="000001110010";
    when 108=>temp<="000001110110";
    
    when 107=>temp<="000010000000";
    when 106=>temp<="000010000100";
    when 105=>temp<="000010001000";
    when 104=>temp<="000010010010";
    when 103=>temp<="000010010110";
    when 102=>temp<="000100000000";
    when 101=>temp<="000100000100";
    when 100=>temp<="000100001000";
    when 99=>temp<="000100010010";
    when 98=>temp<="000100010110";

    when 97=>temp<="000100100000";
    when 96=>temp<="000100100100";
    when 95=>temp<="000100101000";
    when 94=>temp<="000100110010";
    when 93=>temp<="000100110110";
    when 92=>temp<="000101000000";
    when 91=>temp<="000101000100";
    when 90=>temp<="000101001000";
    when 89=>temp<="000101010010";
    when 88=>temp<="000101010110";
 
 
    when 87=>temp<="000101100000";
    when 86=>temp<="000101100100";
    when 85=>temp<="000101101000";
    when 84=>temp<="000101110010";
    when 83=>temp<="000101110110";
    when 82=>temp<="000110000000";
    when 81=>temp<="000110000100";
    when 80=>temp<="000110001000";
    when 79=>temp<="000110010010";
    when 78=>temp<="000110010110";
 
    when 77=>temp<="001000000000";
    when 76=>temp<="001000000100";
    when 75=>temp<="001000001000";
    when 74=>temp<="001000010010";
    when 73=>temp<="001000010110";
    when 72=>temp<="001000100000";
    when 71=>temp<="001000100100";
    when 70=>temp<="001000101000";
    when 69=>temp<="001000110010";
    when 68=>temp<="001000110110";
 
    when 67=>temp<="001001000000";
    when 66=>temp<="001001000100";
    when 65=>temp<="001001001000";
    when 64=>temp<="001001010010";
    when 63=>temp<="001001010110";
    when 62=>temp<="001001100000";
    when 61=>temp<="001001100100";
    when 60=>temp<="001001101000";
    when 59=>temp<="001001110010";
    when 58=>temp<="001001110110";
  
    when 57=>temp<="001010000000";
    when 56=>temp<="001010000100";
    when 55=>temp<="001010001000";
    when 54=>temp<="001010010010";
    when 53=>temp<="001010010110";
    when 52=>temp<="001100000000";
    when 51=>temp<="001100000100";
    when 50=>temp<="001100001000";
    when 49=>temp<="001100010010";
    when 48=>temp<="001100010110";
 

    when 47=>temp<="001100100000";
    when 46=>temp<="001100100100";
    when 45=>temp<="001100101000";
    when 44=>temp<="001100110010";
    when 43=>temp<="001100110110";
    when 42=>temp<="001101000000";
    when 41=>temp<="001101000100";
    when 40=>temp<="001101001000";
    when 39=>temp<="001101010010";
    when 38=>temp<="001101010110";
 
    when 37=>temp<="001101100000";
    when 36=>temp<="001101100100";
    when 35=>temp<="001101101000";
    when 34=>temp<="001101110010";
    when 33=>temp<="001101110110";
    when 32=>temp<="001110000000";
    when 31=>temp<="001110000100";
    when 30=>temp<="001110001000";
    when 29=>temp<="001110010010";
    when 28=>temp<="001110010110";
 

    when 27=>temp<="010000000000";
    when 26=>temp<="010000000100";
    when 25=>temp<="010000001000";
    when 24=>temp<="010000010010";
    when 23=>temp<="010000010110";
    when 22=>temp<="010000100000";
    when 21=>temp<="010000100100";
    when 20=>temp<="010000101000";
    when 19=>temp<="010000110010";
    when 18=>temp<="010000110110";
 

    when 17=>temp<="010001000000";
    when 16=>temp<="010001000100";
    when 15=>temp<="010001001000";
    when 14=>temp<="010001010010";
    when 13=>temp<="010001010110";
    when 12=>temp<="010001100000";
    when 11=>temp<="010001100100";
    when 10=>temp<="010001101000";
    when 9=>temp<="010001110010";
    when 8=>temp<="010001110110";
 
    when 7=>temp<="010010000000";
    when 6=>temp<="010010000010";
    when 5=>temp<="010010000100";
    when 4=>temp<="010010000110";
    when 3=>temp<="010010001000";
    when 2=>temp<="010010010010";
    when 1=>temp<="010010010110";
    when 0=>temp<="010100000000";

    when 128 =>temp<="000000000000";
    when 129 =>temp<="000000000100";
    when 130 =>temp<="000000001000";
    when 131 =>temp<="000000010010";
    when 132=>temp<="000000010110";
    when 133=>temp<="000000100000";
    when 134=>temp<="000000100100";
    when 135=>temp<="000000101000";
    when 136=>temp<="000000110010";
    when 137=>temp<="000000110110";

    when 138=>temp<="000001000000";
    when 139=>temp<="000001000100";
    when 140=>temp<="000001001000";
    when 141=>temp<="000001010010";
    when 142=>temp<="000001010110";
    when 143=>temp<="000001100000";
    when 144=>temp<="000001100100";
    when 145=>temp<="000001101000";
    when 146=>temp<="000001110010";
    when 147=>temp<="000001110110";
    
    when 148=>temp<="000010000000";
    when 149=>temp<="000010000100";
    when 150=>temp<="000010001000";
    when 151=>temp<="000010010010";
    when 152=>temp<="000010010110";
    when 153=>temp<="000100000000";
    when 154=>temp<="000100000100";
    when 155=>temp<="000100001000";
    when 156=>temp<="000100010010";
    when 157=>temp<="000100010110";

    when 158=>temp<="000100100000";
    when 159=>temp<="000100100100";
    when 160=>temp<="000100101000";
    when 161=>temp<="000100110010";
    when 162=>temp<="000100110110";
    when 163=>temp<="000101000000";
    when 164=>temp<="000101000100";
    when 165=>temp<="000101001000";
    when 166=>temp<="000101010010";
    when 167=>temp<="000101010110";
 
 
    when 168=>temp<="000101100000";
    when 169=>temp<="000101100100";
    when 170=>temp<="000101101000";
    when 171=>temp<="000101110010";
    when 172=>temp<="000101110110";
    when 173=>temp<="000110000000";
    when 174=>temp<="000110000100";
    when 175=>temp<="000110001000";
    when 176=>temp<="000110010010";
    when 177=>temp<="000110010110";
 
    when 178=>temp<="001000000000";
    when 179=>temp<="001000000100";
    when 180=>temp<="001000001000";
    when 181=>temp<="001000010010";
    when 182=>temp<="001000010110";
    when 183=>temp<="001000100000";
    when 184=>temp<="001000100100";
    when 185=>temp<="001000101000";
    when 186=>temp<="001000110010";
    when 187=>temp<="001000110110";
 
    when 188=>temp<="001001000000";
    when 189=>temp<="001001000100";
    when 190=>temp<="001001001000";
    when 191=>temp<="001001010010";
    when 192=>temp<="001001010110";
    when 193=>temp<="001001100000";
    when 194=>temp<="001001100100";
    when 195=>temp<="001001101000";
    when 196=>temp<="001001110010";
    when 197=>temp<="001001110110";
  
    when 198=>temp<="001010000000";
    when 199=>temp<="001010000100";
    when 200=>temp<="001010001000";
    when 201=>temp<="001010010010";
    when 202=>temp<="001010010110";
    when 203=>temp<="001100000000";
    when 204=>temp<="001100000100";
    when 205=>temp<="001100001000";
    when 206=>temp<="001100010010";
    when 207=>temp<="001100010110";
 

    when 208=>temp<="001100100000";
    when 209=>temp<="001100100100";
    when 210=>temp<="001100101000";
    when 211=>temp<="001100110010";
    when 212=>temp<="001100110110";
    when 213=>temp<="001101000000";
    when 214=>temp<="001101000100";
    when 215=>temp<="001101001000";
    when 216=>temp<="001101010010";
    when 217=>temp<="001101010110";
 
    when 218=>temp<="001101100000";
    when 219=>temp<="001101100100";
    when 220=>temp<="001101101000";
    when 221=>temp<="001101110010";
    when 222=>temp<="001101110110";
    when 223=>temp<="001110000000";
    when 224=>temp<="001110000100";
    when 225=>temp<="001110001000";
    when 226=>temp<="001110010010";
    when 227=>temp<="001110010110";
 

    when 228=>temp<="010000000000";
    when 229=>temp<="010000000100";
    when 230=>temp<="010000001000";
    when 231=>temp<="010000010010";
    when 232=>temp<="010000010110";
    when 233=>temp<="010000100000";
    when 234=>temp<="010000100100";
    when 235=>temp<="010000101000";
    when 236=>temp<="010000110010";
    when 237=>temp<="010000110110";
 

    when 238=>temp<="010001000000";
    when 239=>temp<="010001000100";
    when 240=>temp<="010001001000";
    when 241=>temp<="010001010010";
    when 242=>temp<="010001010110";
    when 243=>temp<="010001100000";
    when 244=>temp<="010001100100";
    when 245=>temp<="010001101000";
    when 246=>temp<="010001110010";
    when 247=>temp<="010001110110";
 
    when 248=>temp<="010010000000";
    when 249=>temp<="010010000010";
    when 250=>temp<="010010000100";
    when 251=>temp<="010010000110";
    when 252=>temp<="010010001000";
    when 253=>temp<="010010010010";
    when 254=>temp<="010010010110";
    when 255=>temp<="010100000000";
--    when others=>temp<="111111111111";
end case;
end process;
end  rtl;

⌨️ 快捷键说明

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