Guest User

Untitled

a guest
Apr 24th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.74 KB | None | 0 0
  1. module spram
  2. #(
  3. parameter ADDR_WIDTH = 32
  4. )
  5. (
  6. input clk,
  7. input [ADDR_WIDTH-1:0] addr,
  8. input we,
  9. input [3:0] bsel,
  10. input [31:0] din,
  11. output reg [31:0] dout
  12. );
  13.  
  14. reg [7:0] mem0[(1<<ADDR_WIDTH)-1:0];
  15. reg [7:0] mem1[(1<<ADDR_WIDTH)-1:0];
  16. reg [7:0] mem2[(1<<ADDR_WIDTH)-1:0];
  17. reg [7:0] mem3[(1<<ADDR_WIDTH)-1:0];
  18.  
  19. always @(posedge clk) begin
  20. if (we) begin
  21. if (bsel[3])
  22. mem3[addr] <= din[31:24];
  23. if (bsel[2])
  24. mem2[addr] <= din[23:16];
  25. if (bsel[1])
  26. mem1[addr] <= din[15:8];
  27. if (bsel[0])
  28. mem0[addr] <= din[7:0];
  29. end
  30. dout <= {mem3[addr], mem2[addr], mem1[addr], mem0[addr]};
  31. end
  32.  
  33. endmodule
Add Comment
Please, Sign In to add comment