OpenCores
URL https://opencores.org/ocsvn/qaz_libs/qaz_libs/trunk

Subversion Repositories qaz_libs

[/] [qaz_libs/] [trunk/] [basal/] [src/] [RAM/] [byte_enabled_simple_dual_port_ram.sv] - Blame information for rev 34

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 34 qaztronic
module byte_enabled_simple_dual_port_ram
2
(
3
input we, clk,
4
input [5:0] waddr, raddr, // address width = 6
5
input [3:0] be, // 4 bytes per word
6
input [31:0] wdata, // byte width = 8, 4 bytes per word
7
output reg [31:0] q // byte width = 8, 4 bytes per word
8
);
9
// use a multi-dimensional packed array
10
//to model individual bytes within the word
11
logic [3:0][7:0] ram[0:63]; // # words = 1 << address width
12
always_ff@(posedge clk)
13
begin
14
if(we) begin
15
if(be[0]) ram[waddr][0] <= wdata[7:0];
16
if(be[1]) ram[waddr][1] <= wdata[15:8];
17
if(be[2]) ram[waddr][2] <= wdata[23:16];
18
if(be[3]) ram[waddr][3] <= wdata[31:24];
19
end
20
q <= ram[raddr];
21
end
22
endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.