Advertisement
Aethox

Sumadorv2

Sep 7th, 2021
1,036
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.84 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Company:
  3. -- Engineer:
  4. --
  5. -- Create Date: 03.09.2021 10:45:57
  6. -- Design Name:
  7. -- Module Name: labs - Behavioral
  8. -- Project Name:
  9. -- Target Devices:
  10. -- Tool Versions:
  11. -- Description:
  12. --
  13. -- Dependencies:
  14. --
  15. -- Revision:
  16. -- Revision 0.01 - File Created
  17. -- Additional Comments:
  18. --
  19. ----------------------------------------------------------------------------------
  20.  
  21.  
  22. library IEEE;
  23. use IEEE.STD_LOGIC_1164.ALL;
  24. use IEEE.numeric_std.all;
  25. use IEEE.std_logic_unsigned.all;
  26.  
  27.  
  28. -- Uncomment the following library declaration if using
  29. -- arithmetic functions with Signed or Unsigned values
  30. --use IEEE.NUMERIC_STD.ALL;
  31.  
  32. -- Uncomment the following library declaration if instantiating
  33. -- any Xilinx leaf cells in this code.
  34. --library UNISIM;
  35. --use UNISIM.VComponents.all;
  36.  
  37. entity Sumador4bits is
  38. --  Port ( );
  39. Port(
  40.     a: in std_logic_vector(3 downto 0);
  41.     b: in std_logic_vector(3 downto 0)
  42. );
  43. end Sumador4bits;
  44.  
  45.  
  46. architecture Behavioral of Sumador4bits is
  47. --Componentes:
  48.  
  49. component MUXdos is --Mux 2 a 1 (16bits)
  50. Port(
  51.     a: in std_logic_vector(15 downto 0);
  52.     b: in std_logic_vector(15 downto 0);
  53.     Selector: in std_logic;
  54.     Salida: out std_logic_vector(15 downto 0)
  55. );
  56. end component;
  57.  
  58. component MUX is
  59. --  Port ( );
  60. Port(
  61.     A: in std_logic_vector (3 downto 0);
  62.     B: in std_logic_vector (3 downto 0);
  63.     C: in std_logic_vector (3 downto 0);
  64.     D: in std_logic_vector (3 downto 0);
  65.     S: out std_logic_vector (3 downto 0);
  66.     Sel: in std_logic_vector (1 downto 0)  
  67. );
  68. end component;
  69.  
  70. -- Señales:
  71. signal Verificacion: std_logic;
  72. signal Comprueba: std_logic_vector(1 downto 0);
  73. signal Error: std_logic_vector(15 downto 0);
  74. signal sumaBCD: std_logic_vector(7 downto 0);
  75. signal sumaBIN: std_logic_vector(7 downto 0);
  76. signal salidaMuxdos: std_logic_vector(15 downto 0);
  77. signal SalidaVer: std_logic_vector(9 downto 0);
  78. signal binA: std_logic_vector(3 downto 0);
  79. signal binB: std_logic_vector(3 downto 0);
  80. signal bcdC: std_logic_vector(3 downto 0);
  81. signal bcdD: std_logic_vector(3 downto 0);
  82. begin
  83.  
  84. u1: MUXdos port map (a => salidaVer, b =>Error, Selector =>Verificacion , Salida =>salidaMuxdos);
  85.  
  86. process(a,b)
  87. begin
  88. if a > "1010"
  89.     then
  90.      Comprueba(0) <= '1';
  91. elsif b > "1010"
  92.         then  
  93.           Comprueba(1) <= '1';
  94. else
  95.     Verificacion <= '0';
  96. end if;
  97. end process;
  98.  
  99. Verificacion <= Comprueba(0) or Comprueba(1);
  100.  
  101. sumaBCD <= (a+b);
  102. sumaBIN <= (a+b);
  103.  
  104. process(sumaBCD)
  105. begin
  106.  
  107. if sumaBCD > "1001"
  108.     then
  109.     sumaBCD <= sumaBCD + "0110";
  110. else
  111.     sumaBCD<= sumaBCD;
  112. end if;
  113.  
  114. salidaVer <= sumaBCD&sumaBIN;
  115. binA <= salidaMuxdos; ---Agregar los rangos de la señal concatenada!
  116.                         --rangos 0-3, 4-7, 8-11,12-15
  117. end process;
  118.  
  119.  
  120. end Behavioral;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement