Advertisement
Guest User

Untitled

a guest
Feb 10th, 2016
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.89 KB | None | 0 0
  1. entity top is
  2. Port ( clk : in STD_LOGIC;
  3. rst : in STD_LOGIC;
  4. s_axi_awaddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  5. s_axi_awvalid : IN STD_LOGIC;
  6. s_axi_awready : OUT STD_LOGIC;
  7. s_axi_wdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  8. s_axi_wstrb : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
  9. s_axi_wvalid : IN STD_LOGIC;
  10. s_axi_wready : OUT STD_LOGIC;
  11. s_axi_bresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  12. s_axi_bvalid : OUT STD_LOGIC;
  13. s_axi_bready : IN STD_LOGIC;
  14. s_axi_araddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  15. s_axi_arvalid : IN STD_LOGIC;
  16. s_axi_arready : OUT STD_LOGIC;
  17. s_axi_rdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
  18. s_axi_rresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  19. s_axi_rvalid : OUT STD_LOGIC;
  20. s_axi_rready : IN STD_LOGIC
  21. );
  22. end top;
  23.  
  24. architecture Behavioral of top is
  25.  
  26. component memblock
  27. PORT (
  28. s_aclk : IN STD_LOGIC;
  29. s_aresetn : IN STD_LOGIC;
  30. s_axi_awaddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  31. s_axi_awvalid : IN STD_LOGIC;
  32. s_axi_awready : OUT STD_LOGIC;
  33. s_axi_wdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  34. s_axi_wstrb : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
  35. s_axi_wvalid : IN STD_LOGIC;
  36. s_axi_wready : OUT STD_LOGIC;
  37. s_axi_bresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  38. s_axi_bvalid : OUT STD_LOGIC;
  39. s_axi_bready : IN STD_LOGIC;
  40. s_axi_araddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  41. s_axi_arvalid : IN STD_LOGIC;
  42. s_axi_arready : OUT STD_LOGIC;
  43. s_axi_rdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
  44. s_axi_rresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  45. s_axi_rvalid : OUT STD_LOGIC;
  46. s_axi_rready : IN STD_LOGIC
  47. );
  48. END component;
  49.  
  50. begin
  51.  
  52. memblock_instance : memblock
  53. port map(
  54. s_aclk => clk,
  55. s_aresetn => rst,
  56. s_axi_awaddr => s_axi_awaddr,
  57. s_axi_awvalid => s_axi_awvalid,
  58. s_axi_awready => s_axi_awready,
  59. s_axi_wdata => s_axi_wdata,
  60. s_axi_wstrb => s_axi_wstrb,
  61. s_axi_wvalid => s_axi_wvalid,
  62. s_axi_wready => s_axi_wready,
  63. s_axi_bresp => s_axi_bresp,
  64. s_axi_bvalid => s_axi_bvalid,
  65. s_axi_bready => s_axi_bready,
  66. s_axi_araddr => s_axi_araddr,
  67. s_axi_arvalid => s_axi_arvalid,
  68. s_axi_arready => s_axi_arready,
  69. s_axi_rdata => s_axi_rdata,
  70. s_axi_rresp => s_axi_rresp,
  71. s_axi_rvalid => s_axi_rvalid,
  72. s_axi_rready => s_axi_rready
  73.  
  74. );
  75.  
  76. end Behavioral;
  77.  
  78. ENTITY top_tb IS
  79. END top_tb;
  80.  
  81. ARCHITECTURE behavior OF top_tb IS
  82.  
  83. component top
  84. port(
  85. clk : in STD_LOGIC;
  86. rst : in STD_LOGIC;
  87. s_axi_awaddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  88. s_axi_awvalid : IN STD_LOGIC;
  89. s_axi_awready : OUT STD_LOGIC;
  90. s_axi_wdata : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  91. s_axi_wstrb : IN STD_LOGIC_VECTOR(3 DOWNTO 0);
  92. s_axi_wvalid : IN STD_LOGIC;
  93. s_axi_wready : OUT STD_LOGIC;
  94. s_axi_bresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  95. s_axi_bvalid : OUT STD_LOGIC;
  96. s_axi_bready : IN STD_LOGIC;
  97. s_axi_araddr : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
  98. s_axi_arvalid : IN STD_LOGIC;
  99. s_axi_arready : OUT STD_LOGIC;
  100. s_axi_rdata : OUT STD_LOGIC_VECTOR(31 DOWNTO 0);
  101. s_axi_rresp : OUT STD_LOGIC_VECTOR(1 DOWNTO 0);
  102. s_axi_rvalid : OUT STD_LOGIC;
  103. s_axi_rready : IN STD_LOGIC
  104. );
  105. end component;
  106.  
  107. signal clk : std_logic := '0';
  108. signal rst : std_logic;
  109. signal s_axi_awaddr : STD_LOGIC_VECTOR(31 DOWNTO 0);
  110. signal s_axi_awvalid : STD_LOGIC;
  111. signal s_axi_awready : STD_LOGIC;
  112. signal s_axi_wdata : STD_LOGIC_VECTOR(31 DOWNTO 0);
  113. signal s_axi_wstrb : STD_LOGIC_VECTOR(3 DOWNTO 0) := "1111";
  114. signal s_axi_wvalid : STD_LOGIC;
  115. signal s_axi_wready : STD_LOGIC;
  116. signal s_axi_bresp : STD_LOGIC_VECTOR(1 DOWNTO 0);
  117. signal s_axi_bvalid : STD_LOGIC;
  118. signal s_axi_bready : STD_LOGIC := '1';
  119. signal s_axi_araddr : STD_LOGIC_VECTOR(31 DOWNTO 0);
  120. signal s_axi_arvalid : STD_LOGIC;
  121. signal s_axi_arready : STD_LOGIC;
  122. signal s_axi_rdata : STD_LOGIC_VECTOR(31 DOWNTO 0);
  123. signal s_axi_rresp : STD_LOGIC_VECTOR(1 DOWNTO 0);
  124. signal s_axi_rvalid : STD_LOGIC;
  125. signal s_axi_rready : STD_LOGIC := '1';
  126.  
  127. -- Clock period definitions
  128. constant clk_period : time := 10 ns;
  129.  
  130. BEGIN
  131.  
  132. top_inst : top port map(
  133. clk => clk,
  134. rst => rst,
  135. s_axi_awaddr => s_axi_awaddr,
  136. s_axi_awvalid => s_axi_awvalid,
  137. s_axi_awready => s_axi_awready,
  138. s_axi_wdata => s_axi_wdata,
  139. s_axi_wstrb => s_axi_wstrb,
  140. s_axi_wvalid => s_axi_wvalid,
  141. s_axi_wready => s_axi_wready,
  142. s_axi_bresp => s_axi_bresp,
  143. s_axi_bvalid => s_axi_bvalid,
  144. s_axi_bready => s_axi_bready,
  145. s_axi_araddr => s_axi_araddr,
  146. s_axi_arvalid => s_axi_arvalid,
  147. s_axi_arready => s_axi_arready,
  148. s_axi_rdata => s_axi_rdata,
  149. s_axi_rresp => s_axi_rresp,
  150. s_axi_rvalid => s_axi_rvalid,
  151. s_axi_rready => s_axi_rready
  152.  
  153. );
  154.  
  155. -- Clock process definitions
  156. clk_process :process
  157. begin
  158. clk <= '0';
  159. wait for clk_period/2;
  160. clk <= '1';
  161. wait for clk_period/2;
  162. end process;
  163.  
  164. -- Stimulus process
  165. stim_proc: process
  166. begin
  167.  
  168. report "Start of simulation." severity note;
  169.  
  170. -- insert stimulus here
  171. rst <= '0';
  172. wait for 40 ns;
  173. rst <= '1';
  174. wait for 40 ns;
  175. rst <= '0';
  176. wait for 40 ns;
  177.  
  178.  
  179. s_axi_awaddr <= (others=>'0');
  180.  
  181. s_axi_awvalid <= '1';
  182.  
  183. s_axi_wdata <= (others=>'0');
  184.  
  185. s_axi_arvalid <= '0';
  186.  
  187. wait for 20 ns;
  188.  
  189. s_axi_wvalid <= '0';
  190.  
  191. wait for 200 ns;
  192.  
  193. s_axi_awvalid <= '0';
  194.  
  195. wait for 200 ns;
  196. --here starts Write operation
  197.  
  198. s_axi_awvalid <= '1';
  199.  
  200. s_axi_awaddr <= x"0000_0004";
  201.  
  202. wait for 20 ns;
  203.  
  204. s_axi_wdata <= x"0000_0001";
  205. s_axi_wvalid <= '1';
  206.  
  207. wait for 40 ns;
  208. s_axi_awvalid <= '0';
  209. s_axi_wvalid <= '0';
  210. wait for 100 ns;
  211.  
  212. s_axi_arvalid <= '1';
  213. s_axi_araddr <= x"0000_0000";
  214. wait for 10 ns;
  215. s_axi_arvalid <= '0';
  216. wait for 20 ns;
  217. --here starts Read operation
  218.  
  219. s_axi_arvalid <= '1';
  220. s_axi_araddr <= x"0000_0004";
  221. wait for 20 ns;
  222. s_axi_arvalid <= '0';
  223.  
  224. --End simulation
  225. report "End of simulation.";
  226. assert (false) severity failure; --This stops the simulation
  227.  
  228. end process;
  229.  
  230. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement