Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 4.56 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_SIGNED.all;
  5.      
  6.      
  7.     ENTITY Lab6 IS
  8.      PORT ( in_num                  :       in   STD_LOGIC_VECTOR(7 downto 0);                  --8-bit input
  9.             HEX0,HEX1,HEX2,HEX3     :       out  STD_LOGIC_VECTOR(6 downto 0));
  10.      
  11.      End ENTITY Lab6;
  12.      
  13.      
  14.      ARCHITECTURE behavior OF Lab6 IS
  15.      
  16.      SIGNAL Hundreds_Digit, Tens_Digit, Ones_Digit  : STD_LOGIC_VECTOR(7 DOWNTO 0);
  17.      SIGNAL Abs_num                                 : STD_LOGIC_VECTOR(7 DOWNTO 0);
  18.      
  19.      
  20.      CONSTANT BLANK  : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111111";
  21.      CONSTANT ZERO   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1000000";--g, f, e, d, c, b, a
  22.      CONSTANT ONE    : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111001";
  23.      CONSTANT TWO    : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0100100";
  24.      CONSTANT THREE  : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0110000";
  25.      CONSTANT FOUR   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011001";
  26.      CONSTANT FIVE   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0010010";
  27.      CONSTANT SIX    : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000010";
  28.      CONSTANT SEVEN  : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1111000";
  29.      CONSTANT EIGHT  : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000000";
  30.      CONSTANT NINE   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0011000";
  31.      CONSTANT a      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0001000";
  32.      CONSTANT b      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000011";
  33.      CONSTANT C      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "1000110";
  34.      CONSTANT d      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0100001";
  35.      CONSTANT E      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0000110";
  36.      CONSTANT F      : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0001110";
  37.      CONSTANT DASH   : STD_LOGIC_VECTOR(6 DOWNTO 0) := "0111111";
  38.      
  39.      
  40.      BEGIN
  41.      
  42.      
  43.       P1: PROCESS(in_num)
  44.      
  45.         BEGIN
  46.        
  47.     IF (in_num(7) = '1') THEN
  48.      
  49.             HEX3 <= DASH;
  50.      
  51.     ELSE
  52.             HEX3 <= BLANK;
  53.            
  54.     END IF;
  55.             END PROCESS;
  56.            
  57.     ----------------------------------------------------------------------------------------------------
  58.      P2: PROCESS(in_num, Abs_num)
  59.      
  60.         BEGIN
  61.        
  62.         IF(in_num(7) = '0') THEN
  63.                     Abs_num <= in_num;
  64.         ELSE
  65.                     Abs_num <= (NOT(in_num)) + 1;
  66.         END IF;
  67.             END PROCESS;
  68.      
  69.      ------------------------------------------------------------------------------------------------------
  70.      Hundreds_Digit <= STD_LOGIC_VECTOR(UNSIGNED(Abs_num)/100);
  71.      
  72.      Tens_Digit <= STD_LOGIC_VECTOR(UNSIGNED(Abs_num)/10);
  73.      
  74.      Ones_Digit <= STD_LOGIC_VECTOR(UNSIGNED(Abs_num)REM 10);
  75.      ------------------------------------------------------------------------------------------------------
  76.      
  77.      P3: PROCESS(Hundreds_Digit)
  78.      
  79.      BEGIN
  80.      
  81.      CASE Hundreds_Digit IS
  82.        
  83.            
  84.             WHEN "00000001" => HEX2 <= ONE;
  85.             WHEN "00000010" => HEX2 <= TWO;
  86.             WHEN "00000011" => HEX2 <= THREE;
  87.             WHEN "00000100" => HEX2 <= FOUR;
  88.             WHEN "00000101" => HEX2 <= FIVE;
  89.             WHEN "00000110" => HEX2 <= SIX;
  90.             WHEN "00000111" => HEX2 <= SEVEN;
  91.             WHEN "00001000" => HEX2 <= EIGHT;
  92.             WHEN "00001001" => HEX2 <= NINE;
  93.             WHEN OTHERS      => HEX2 <= ZERO;
  94.            
  95.             END CASE;
  96.             END PROCESS;
  97.      ----------------------------------------------------------------------------------------------------------
  98.      
  99.      P4: PROCESS(Tens_Digit)
  100.      
  101.      BEGIN
  102.      
  103.      CASE Tens_Digit IS
  104.        
  105.            
  106.             WHEN "00000001" => HEX1 <= ONE;
  107.             WHEN "00000010" => HEX1 <= TWO;
  108.             WHEN "00000011" => HEX1 <= THREE;
  109.             WHEN "00000100" => HEX1 <= FOUR;
  110.             WHEN "00000101" => HEX1 <= FIVE;
  111.             WHEN "00000110" => HEX1 <= SIX;
  112.             WHEN "00000111" => HEX1 <= SEVEN;
  113.             WHEN "00001000" => HEX1 <= EIGHT;
  114.             WHEN "00001001" => HEX1 <= NINE;
  115.             WHEN OTHERS      => HEX1 <= ZERO;
  116.            
  117.             END CASE;
  118.             END PROCESS;
  119.      ----------------------------------------------------------------------------------------------------------
  120.        
  121.     P5: PROCESS(Ones_Digit)
  122.      
  123.      BEGIN
  124.      
  125.      CASE Ones_Digit IS
  126.  
  127.            
  128.             WHEN "00000001" => HEX0 <= ONE;
  129.             WHEN "00000010" => HEX0 <= TWO;
  130.             WHEN "00000011" => HEX0 <= THREE;
  131.             WHEN "00000100" => HEX0 <= FOUR;
  132.             WHEN "00000101" => HEX0 <= FIVE;
  133.             WHEN "00000110" => HEX0 <= SIX;
  134.             WHEN "00000111" => HEX0 <= SEVEN;
  135.             WHEN "00001000" => HEX0 <= EIGHT;
  136.             WHEN "00001001" => HEX0 <= NINE;
  137.             WHEN OTHERS      => HEX0 <= ZERO;
  138.            
  139.             END CASE;
  140.             END PROCESS;
  141.                
  142.      
  143.        END ARCHITECTURE behavior;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement