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

📄 adc812.vhd

📁 请先删除编译后的debug/release目录以减少压缩包大小
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY adc812 IS
  PORT(INPUT:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
      DOUT1,DOUT2,DOUT3:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END  adc812;
ARCHITECTURE BEHAV OF ADC812 IS
SIGNAL X1,X2:STD_LOGIC_VECTOR(11 DOWNTO 0);
SIGNAL C1,C2,c3:STD_LOGIC;
SIGNAL A,B,C:STD_LOGIC_VECTOR(4 DOWNTO 0);
SIGNAL Y1,Y2:STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
P1:PROCESS(INPUT)
BEGIN
  Y1<=INPUT(3 DOWNTO 0);
  CASE Y1 IS    
	WHEN "0000"=>X1<="000000000000";
    WHEN "0001"=>X1<="000000000010";
    WHEN "0010"=>X1<="000000000100";
    WHEN "0011"=>X1<="000000000110";
    WHEN "0100"=>X1<="000000001000";
    WHEN "0101"=>X1<="000000010000";
    WHEN "0110"=>X1<="000000010010";
    WHEN "0111"=>X1<="000000010100";
    WHEN "1000"=>X1<="000000010110";
    WHEN "1001"=>X1<="000000011000";
    WHEN "1010"=>X1<="000000100000";
    WHEN "1011"=>X1<="000000100010";
    WHEN "1100"=>X1<="000000100100";
    WHEN "1101"=>X1<="000000100110";
    WHEN "1110"=>X1<="000000101000";
    WHEN "1111"=>X1<="000000110000";
    WHEN OTHERS=>X1<="000000000000";
  END CASE;
end process;
p13: process(input)
begin
Y2<=INPUT(7 DOWNTO 4);
  CASE Y2 IS
    WHEN "0000"=>X2<="000000000000";
    WHEN "0001"=>X2<="000000110010";
    WHEN "0010"=>X2<="000001100100";
    WHEN "0011"=>X2<="000010010110";
    WHEN "0100"=>X2<="000100101000";
    WHEN "0101"=>X2<="000101100000";
    WHEN "0110"=>X2<="000110010010";
    WHEN "0111"=>X2<="001000100100";
    WHEN "1000"=>X2<="001001010110";
    WHEN "1001"=>X2<="001010001000";
    WHEN "1010"=>X2<="001100100000";
    WHEN "1011"=>X2<="001101010010";
    WHEN "1100"=>X2<="001110000100";
    WHEN "1101"=>X2<="010000010110";
    WHEN "1110"=>X2<="010001001000";
    WHEN "1111"=>X2<="010010000000";
    WHEN OTHERS=>X2<="000000000000";
  END CASE;
END PROCESS ;
P2:PROCESS(X1,X2)
BEGIN
  IF (X1(3 DOWNTO 0)+X2(3 DOWNTO 0))>"01001" THEN
    C1<='1';
  ELSE C1<='0';
  END IF;
  IF C1='1' THEN A<=(X1(3 DOWNTO 0)+X2(3 DOWNTO 0)+"0110");
  ELSE A<=(X1(3 DOWNTO 0)+X2(3 DOWNTO 0));
  END IF;
  IF (X1(7 DOWNTO 4)+X2(7 DOWNTO 4))>"01001" THEN
    C2<='1';
  ELSE C2<='0';
  END IF;
  IF C2='1' AND C1='1' THEN B<=(X1(7 DOWNTO 4)+X2(7 DOWNTO 4)+'1'+"0110");
  ELSIF C2='1' AND C1='0' THEN B<=(X1(7 DOWNTO 4)+X2(7 DOWNTO 4)+'0'+"0110");
     ELSIF C2='0' AND C1='1' THEN B<=(X1(7 DOWNTO 4)+X2(7 DOWNTO 4)+'1');
        ELSE B<=(X1(7 DOWNTO 4)+X2(7 DOWNTO 4));
  END IF;
IF (X1(11 DOWNTO 8)+X2(11 DOWNTO 8))>"01001" THEN
    c3<='1';
  ELSE C3<='0';
  END IF;
  IF C3='1' AND C2='1' THEN c<=(X1(11 DOWNTO 8)+X2(11 DOWNTO 8)+'1'+"0110");
  ELSIF C3='1' AND C2='0' THEN c<=(X1(11 DOWNTO 8)+X2(11 DOWNTO 8)+'0'+"0110");
     ELSIF C3='0' AND C2='1' THEN c<=(X1(11 DOWNTO 8)+X2(11 DOWNTO 8)+'1');
        ELSE c<=(X1(11 DOWNTO 8)+X2(11 DOWNTO 8));
  END IF;
	DOUT1<=A(3 DOWNTO 0);
    DOUT2<=B(3 DOWNTO 0);
    DOUT3<=C(3 DOWNTO 0);
   END PROCESS P2;
END BEHAV;

⌨️ 快捷键说明

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