Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 2.52 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3. use IEEE.STD_LOGIC_ARITH.ALL;
  4. use IEEE.STD_LOGIC_UNSIGNED.ALL;
  5.  
  6.  
  7.  
  8.  
  9. -- Top-level entity
  10. ENTITY poteznysumator IS
  11.  
  12. PORT ( SW : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ;
  13. --Clock, Reset, Sel, AddSub : IN STD_LOGIC ;
  14. KEY : IN STD_LOGIC_VECTOR(0 to 3); --Clock, Reset, Sel, AddSub
  15. LEDR : BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  16. LEDG: OUT STD_LOGIC ) ;
  17. END poteznysumator ;
  18. ARCHITECTURE Behavior OF poteznysumator IS
  19. SIGNAL G, H, M, Areg, Breg, Zreg, AddSubR_n : STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  20. SIGNAL SelR, AddSubR, carryout, over_flow : STD_LOGIC ;
  21. COMPONENT mux2to1
  22. GENERIC ( k : INTEGER := 8 ) ;
  23. PORT ( V, W : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  24. Sel : IN STD_LOGIC ;
  25. F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ;
  26. END COMPONENT ;
  27. COMPONENT adderk
  28. GENERIC ( k : INTEGER := 8 ) ;
  29. PORT ( carryin : IN STD_LOGIC ;
  30. X, Y : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  31. S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  32. carryout : OUT STD_LOGIC ) ;
  33. END COMPONENT ;
  34. BEGIN
  35. PROCESS ( KEY(1), KEY(0) )
  36. BEGIN
  37. IF KEY(1) = '1' THEN
  38. Areg <= (OTHERS => '0'); Breg <= (OTHERS => '0');
  39. Zreg <= (OTHERS => '0'); SelR <= '0'; AddSubR <='0'; LEDG <= '0';
  40. ELSIF KEY(0)'EVENT AND KEY(0) = '1' THEN
  41. Areg <= SW(7 downto 0); Breg <= SW(15 downto 8); Zreg <= M;
  42. SelR <= KEY(2); AddSubR <= KEY(3); LEDG <= over_flow;
  43. END IF ;
  44. END PROCESS ;
  45. nbit_adder: adderk
  46. --GENERIC MAP ( k => n )
  47. PORT MAP ( AddSubR, G, H, M, carryout ) ;
  48. multiplexer: mux2to1
  49. --GENERIC MAP ( k => n )
  50. PORT MAP ( Areg, LEDR, SelR, G ) ;
  51. AddSubR_n <= (OTHERS => AddSubR) ;
  52. H <= Breg XOR AddSubR_n ; LEDR <= Zreg ;
  53. over_flow <= carryout XOR G(7) XOR H(7) XOR M(7) ;
  54. END Behavior;
  55. -- k-bit 2-to-1 multiplexer
  56. LIBRARY ieee ;
  57. USE ieee.std_logic_1164.all ;
  58. ENTITY mux2to1 IS
  59. GENERIC ( k : INTEGER := 8 ) ;
  60. PORT ( V, W : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  61. Sel : IN STD_LOGIC ;
  62. F : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ;
  63. END mux2to1 ;
  64. ARCHITECTURE Behavior OF mux2to1 IS
  65. BEGIN
  66. PROCESS ( V, W, Sel )
  67. BEGIN
  68. IF Sel = '0' THEN
  69. F <= V ;
  70. ELSE
  71. F <= W ;
  72. END IF ;
  73. END PROCESS ;
  74. END Behavior ;
  75. -- k-bit adder
  76. LIBRARY ieee ;
  77. USE ieee.std_logic_1164.all ;
  78. USE ieee.std_logic_signed.all ;
  79. ENTITY adderk IS
  80. GENERIC ( k : INTEGER := 8 ) ;
  81. PORT ( carryin : IN STD_LOGIC ;
  82. X, Y : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  83. S : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;
  84. carryout: OUT STD_LOGIC ) ;
  85. END adderk ;
  86. ARCHITECTURE Behavior OF adderk IS
  87. SIGNAL Sum : STD_LOGIC_VECTOR(8 DOWNTO 0) ;
  88. BEGIN
  89. Sum <= ( '0' & X) + ( '0' & Y) + carryin ;
  90. S <= Sum(7 DOWNTO 0) ;
  91. carryout <= Sum(7) ;
  92. END Behavior ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement