Advertisement
Guest User

hue

a guest
Oct 15th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.07 KB | None | 0 0
  1. library IEEE;
  2. USE IEEE.STD_LOGIC_1164.ALL;
  3. USE IEEE.NUMERIC_STD.ALL;
  4. USE IEEE.STD_LOGIC_UNSIGNED.ALL;
  5.  
  6. ENTITY AbsValue IS
  7.     PORT( In_num :IN    STD_LOGIC_VECTOR(7 DOWNTO 0);
  8.             Hex3   :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
  9.             Hex2   :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
  10.             Hex1   :OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
  11.             Hex0   :OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
  12. END AbsValue;
  13.  
  14. ARCHITECTURE structure OF AbsValue IS
  15.     SIGNAL s1,s2,s3, ABS_num :UNSIGNED(7 DOWNTO 0);
  16.     SIGNAL num : UNSIGNED(7 DOWNTO 0);
  17.     CONSTANT zero   :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1000000";
  18.     CONSTANT one    :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111001";
  19.     CONSTANT two    :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0100100";
  20.     CONSTANT three  :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0110000";
  21.     CONSTANT four   :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011001";
  22.     CONSTANT five   :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0010010";
  23.     CONSTANT six    :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000010";
  24.     CONSTANT seven  :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111000";
  25.     CONSTANT eight  :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000000";
  26.     CONSTANT nine   :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0010000";
  27.     CONSTANT DASH  :STD_LOGIC_VECTOR(6 DOWNTO 0) := "0111111";
  28.     CONSTANT EMPTY :STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111111";
  29.    
  30. BEGIN
  31.  
  32.         s1 <= ABS_num/100;
  33.         s2 <= (ABS_num REM 100)/10;
  34.         s3 <= ABS_num REM 10;
  35.         num <= unsigned(In_num);
  36.        
  37.     PROCESS(num)
  38.     BEGIN
  39.         IF(num(7) = '1') THEN
  40.                 HEX3 <= DASH;
  41.         ELSE
  42.                 HEX3 <= EMPTY;
  43.         END IF;
  44.     END PROCESS;
  45.    
  46.     PROCESS(num)
  47.     BEGIN
  48.         IF(num(7) = '1') THEN
  49.             ABS_num <= NOT(num) + 1;
  50.         ELSE
  51.             ABS_num <= num;
  52.         END IF;
  53.     END PROCESS;
  54.    
  55.     PROCESS(s1)
  56.     BEGIN
  57.         CASE s1 IS
  58.             WHEN "00000000" => Hex2 <= zero;
  59.             WHEN "00000001" => Hex2 <= one;
  60.             WHEN "00000010" => Hex2 <= two;
  61.             WHEN "00000011" => Hex2 <= three;
  62.             WHEN "00000100" => Hex2 <= four;
  63.             WHEN "00000101" => Hex2 <= five;
  64.             WHEN "00000110" => Hex2 <= six;
  65.             WHEN "00000111" => Hex2 <= seven;
  66.             WHEN "00001000" => Hex2 <= eight;
  67.             WHEN "00001001" => Hex2 <= nine;
  68.             WHEN "00111111" => Hex2 <= DASH;
  69.             WHEN OTHERS => Hex2 <= EMPTY;
  70.         END CASE;
  71.     END PROCESS;
  72.    
  73.     PROCESS(s2)
  74.     BEGIN
  75.         CASE s2 IS
  76.             WHEN "00000000" => Hex1 <= zero;
  77.             WHEN "00000001" => Hex1 <= one;
  78.             WHEN "00000010" => Hex1 <= two;
  79.             WHEN "00000011" => Hex1 <= three;
  80.             WHEN "00000100" => Hex1 <= four;
  81.             WHEN "00000101" => Hex1 <= five;
  82.             WHEN "00000110" => Hex1 <= six;
  83.             WHEN "00000111" => Hex1 <= seven;
  84.             WHEN "00001000" => Hex1 <= eight;
  85.             WHEN "00001001" => Hex1 <= nine;
  86.             WHEN "00111111" => Hex1 <= DASH;
  87.             WHEN OTHERS => Hex1 <= EMPTY;
  88.         END CASE;
  89.     END PROCESS;
  90.  
  91.     PROCESS(s3)
  92.     BEGIN
  93.         CASE s3 IS
  94.             WHEN "00000000" => Hex0 <= zero;
  95.             WHEN "00000001" => Hex0 <= one;
  96.             WHEN "00000010" => Hex0 <= two;
  97.             WHEN "00000011" => Hex0 <= three;
  98.             WHEN "00000100" => Hex0 <= four;
  99.             WHEN "00000101" => Hex0 <= five;
  100.             WHEN "00000110" => Hex0 <= six;
  101.             WHEN "00000111" => Hex0 <= seven;
  102.             WHEN "00001000" => Hex0 <= eight;
  103.             WHEN "00001001" => Hex0 <= nine;
  104.             WHEN "00111111" => Hex0 <= DASH;
  105.             WHEN OTHERS => Hex0 <= EMPTY;
  106.         END CASE;
  107.     END PROCESS;
  108. END structure;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement