Advertisement
Guest User

Data Memory

a guest
Sep 9th, 2018
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*!
  2.  * MIPS32SOC data memory (2048 words)
  3.  * @type ram
  4.  * @size 2048
  5.  * @data_bits 32
  6.  */
  7. module DataMem(
  8.     input clk, //! Clock input
  9.     input en, //! Enable
  10.     input [3:0] we, //! Per byte write enable
  11.     input [10:0] addr, //! Address
  12.     input [31:0] wd, //! Write data
  13.     output [31:0] rd //! Read data
  14. );
  15.  
  16.     reg [31:0] memory[0:2047];
  17.  
  18.     assign rd = en? memory[addr] : 32'hz;
  19.  
  20.     always @(posedge clk)
  21.     begin
  22.         if (en) begin
  23.             if (we[3]) memory[addr][7:0] <= wd[7:0];
  24.             if (we[2]) memory[addr][15:8] <= wd[15:8];
  25.             if (we[1]) memory[addr][23:16] <= wd[23:16];
  26.             if (we[0]) memory[addr][31:24] <= wd[31:24];
  27.         end
  28.     end
  29.  
  30. `ifndef DIGITAL
  31.     initial begin
  32.         $readmemh("data.mif", memory, 0, 1023);
  33.     end
  34. `endif 
  35. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement