apb2ram.v 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. module apb2ram #(parameter ADDR_BITS = 32) (
  2. input resetn,
  3. input apb_clock,
  4. input apb_psel,
  5. input apb_penable,
  6. input apb_pwrite,
  7. input [ADDR_BITS-1:0] apb_paddr,
  8. input [31:0] apb_pwdata,
  9. input [3:0] apb_pstrb,
  10. input [2:0] apb_pprot,
  11. output apb_pready,
  12. output apb_pslverr,
  13. output [31:0] apb_prdata,
  14. output [9:0] ram_addr,
  15. output [1:0] ram_byteena,
  16. output [15:0] ram_data,
  17. output ram_wren,
  18. output ram_rden,
  19. input [15:0] ram_q
  20. );
  21. assign apb_pready = 1'b1;
  22. assign apb_pslverr = 1'b0;
  23. assign apb_prdata = apb_paddr[1] ? {ram_q, 16'd0} : {16'd0, ram_q};
  24. assign ram_addr = apb_paddr[ADDR_BITS-1:1];
  25. assign ram_byteena = apb_pstrb[1:0];
  26. assign ram_data = apb_pwdata[15:0];
  27. assign ram_wren = apb_psel && apb_penable && apb_pwrite;
  28. assign ram_rden = apb_psel && apb_penable && !apb_pwrite;
  29. endmodule