Line 19... |
Line 19... |
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
//
|
//
|
// ============================================================================
|
// ============================================================================
|
//
|
//
|
module Raptor64_dcache_ram(clk,wr,sel,wadr,i,radr,o);
|
module Raptor64_dcache_ram(wclk,wr,sel,wadr,i,rclk,radr,o);
|
input clk;
|
input wclk;
|
input wr;
|
input wr;
|
input [3:0] sel;
|
input [7:0] sel;
|
input [13:2] wadr;
|
input [14:3] wadr;
|
input [31:0] i;
|
input [63:0] i;
|
input [13:3] radr;
|
input rclk;
|
|
input [14:3] radr;
|
output [63:0] o;
|
output [63:0] o;
|
|
|
reg [7:0] mem0 [2047:0];
|
reg [63:0] mem [0:4095];
|
reg [31:0] memH [2047:0];
|
reg [14:3] rradr;
|
|
|
|
always @(posedge wclk)
|
|
if (wr) begin
|
|
if (sel[0]) mem[wadr][ 7: 0] <= i[ 7: 0];
|
|
if (sel[1]) mem[wadr][15: 8] <= i[15: 8];
|
|
if (sel[2]) mem[wadr][23:16] <= i[23:16];
|
|
if (sel[3]) mem[wadr][31:24] <= i[31:24];
|
|
if (sel[4]) mem[wadr][39:32] <= i[39:32];
|
|
if (sel[5]) mem[wadr][47:40] <= i[47:40];
|
|
if (sel[6]) mem[wadr][55:48] <= i[55:48];
|
|
if (sel[7]) mem[wadr][63:56] <= i[63:56];
|
|
end
|
|
|
|
always @(posedge rclk)
|
|
rradr <= radr[14:3];
|
|
|
|
assign o = mem[rradr];
|
|
|
|
/*
|
syncRam2kx8_1rw1r u1
|
syncRam2kx8_1rw1r u1
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[0] && !wadr[2]),
|
.wce(sel[0] && !wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[7:0]),
|
.i(i[7:0]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[7:0])
|
.o(o[7:0])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u2
|
syncRam2kx8_1rw1r u2
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[1] && !wadr[2]),
|
.wce(sel[1] && !wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[15:8]),
|
.i(i[15:8]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[15:8])
|
.o(o[15:8])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u3
|
syncRam2kx8_1rw1r u3
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[2] && !wadr[2]),
|
.wce(sel[2] && !wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[23:16]),
|
.i(i[23:16]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[23:16])
|
.o(o[23:16])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u4
|
syncRam2kx8_1rw1r u4
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[3] && !wadr[2]),
|
.wce(sel[3] && !wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[31:24]),
|
.i(i[31:24]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[31:24])
|
.o(o[31:24])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u5
|
syncRam2kx8_1rw1r u5
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[0] && wadr[2]),
|
.wce(sel[0] && wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[7:0]),
|
.i(i[7:0]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[39:32])
|
.o(o[39:32])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u6
|
syncRam2kx8_1rw1r u6
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[1] && wadr[2]),
|
.wce(sel[1] && wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[15:8]),
|
.i(i[15:8]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[47:40])
|
.o(o[47:40])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u7
|
syncRam2kx8_1rw1r u7
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[2] && wadr[2]),
|
.wce(sel[2] && wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[23:16]),
|
.i(i[23:16]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[55:48])
|
.o(o[55:48])
|
);
|
);
|
|
|
syncRam2kx8_1rw1r u8
|
syncRam2kx8_1rw1r u8
|
(
|
(
|
.wrst(1'b0),
|
.wrst(1'b0),
|
.wclk(clk),
|
.wclk(clk),
|
.wce(sel[3] && wadr[2]),
|
.wce(sel[3] && wadr[2]),
|
.we(wr),
|
.we(wr),
|
.wadr(wadr[13:3]),
|
.wadr(wadr[13:3]),
|
.i(i[31:24]),
|
.i(i[31:24]),
|
.wo(),
|
.wo(),
|
.rrst(1'b0),
|
.rrst(1'b0),
|
.rclk(~clk),
|
.rclk(~clk),
|
.rce(1'b1),
|
.rce(1'b1),
|
.radr(radr[13:3]),
|
.radr(radr[13:3]),
|
.o(o[63:56])
|
.o(o[63:56])
|
);
|
);
|
|
|
endmodule
|
*/endmodule
|
|
|
|
|
No newline at end of file
|
No newline at end of file
|