Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*!
- * MIPS32SOC data memory (2048 words)
- * @type ram
- * @size 2048
- * @data_bits 32
- */
- module DataMem(
- input clk, //! Clock input
- input en, //! Enable
- input [3:0] we, //! Per byte write enable
- input [10:0] addr, //! Address
- input [31:0] wd, //! Write data
- output [31:0] rd //! Read data
- );
- reg [31:0] memory[0:2047];
- assign rd = en? memory[addr] : 32'hz;
- always @(posedge clk)
- begin
- if (en) begin
- if (we[3]) memory[addr][7:0] <= wd[7:0];
- if (we[2]) memory[addr][15:8] <= wd[15:8];
- if (we[1]) memory[addr][23:16] <= wd[23:16];
- if (we[0]) memory[addr][31:24] <= wd[31:24];
- end
- end
- `ifndef DIGITAL
- initial begin
- $readmemh("data.mif", memory, 0, 1023);
- end
- `endif
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement