📄 adc812.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 + -