Advertisement
Guest User

Untitled

a guest
Dec 19th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.32 KB | None | 0 0
  1. ----------------------------------------------------------------------------------
  2. -- Namn: adressvaljare
  3. -- Filnamn: adressvaljare.vhd
  4. -- Testbench: adressvaljare_tb.vhd
  5. --
  6. -- Insignaler:
  7. -- clk - klocksignal, all uppdatering av register sker vid stigande flank
  8. -- n_rst - synkron resetsignal, aktiv låg
  9. -- DATA - de 6 minst signifikanta bitarna från instruktionen, används då
  10. -- nästa adress anges av instruktionen
  11. -- AddrSrc - bestämmer varifrån nästa adress ska hämtas
  12. -- StackOp - styr stacken i adressväljaren
  13. --
  14. -- Utsignaler:
  15. -- A - nästa adress
  16. -- pc_debug - nuvarande adress, används för att visa adressen på
  17. -- Nexys4 display
  18. ----------------------------------------------------------------------------------
  19.  
  20. library ieee;
  21. use ieee.std_logic_1164.all;
  22. use ieee.numeric_std.all;
  23.  
  24. library work;
  25. use work.all;
  26. use work.cpu_pkg.all;
  27.  
  28. entity adressvaljare is
  29. port(
  30. clk, n_rst : in std_logic;
  31. DATA : in std_logic_vector(5 downto 0);
  32. A : out std_logic_vector(5 downto 0);
  33. AddrSrc : in std_logic_vector(1 downto 0);
  34. StackOp : in std_logic_vector(1 downto 0);
  35. pc_debug : out std_logic_vector(5 downto 0)
  36. );
  37. end entity;
  38.  
  39. architecture structural of adressvaljare is
  40.  
  41. signal PC, PC_PLUS, ToS_data, OUTPUT : std_logic_vector(5 downto 0);
  42. signal ALU8bit, PC_PLUS_8 : std_logic_vector(7 downto 0);
  43. begin
  44.  
  45.  
  46.  
  47.  
  48. stackReg: entity stack port map(
  49. D => PC_PLUS,
  50. ToS => ToS_data,
  51. clk => clk,
  52. n_rst => n_rst,
  53. StackOp => StackOp
  54. );
  55.  
  56. multiplex: entity MUX3x6 port map(
  57. IN0 => PC_PLUS,
  58. IN1 => ToS_data,
  59. IN2 => DATA,
  60. SEL => AddrSrc,
  61. O => OUTPUT
  62. );
  63.  
  64. ALU8bit <= "00" & PC;
  65. PC_PLUS <= PC_PLUS_8(5 downto 0);
  66. ALU: entity ALU8 port map(
  67. A => ALU8bit,
  68. B => "00000001",
  69. S => "010",
  70. Z => open,
  71. F => PC_PLUS_8
  72. );
  73.  
  74. PCreg: entity REG6 port map(
  75. CLK => clk,
  76. CLR => n_rst,
  77. ENA => '1',
  78. D => OUTPUT,
  79. Q => PC
  80. );
  81.  
  82. pc_debug <= pc;
  83. A <= OUTPUT;
  84.  
  85. end architecture;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement