Line 67... |
Line 67... |
input clk, rst, wr, sel, wr_bit;
|
input clk, rst, wr, sel, wr_bit;
|
input [1:0] bank;
|
input [1:0] bank;
|
input [7:0] addr, data_in;
|
input [7:0] addr, data_in;
|
|
|
output [7:0] data_out;
|
output [7:0] data_out;
|
reg [7:0] data_out;
|
|
|
|
reg [7:0] buff [7:0];
|
reg [7:0] buff [7:0];
|
|
|
//
|
//
|
//write to buffer
|
//write to buffer
|
always @(posedge clk or posedge rst)
|
always @(posedge clk or posedge rst)
|
begin
|
begin
|
if (rst) begin
|
if (rst) begin
|
buff[3'b000] <= #1 8'h00;
|
buff[3'b000] = #1 8'h00;
|
buff[3'b001] <= #1 8'h00;
|
buff[3'b001] = #1 8'h00;
|
buff[3'b010] <= #1 8'h00;
|
buff[3'b010] = #1 8'h00;
|
buff[3'b011] <= #1 8'h00;
|
buff[3'b011] = #1 8'h00;
|
buff[3'b100] <= #1 8'h00;
|
buff[3'b100] = #1 8'h00;
|
buff[3'b101] <= #1 8'h00;
|
buff[3'b101] = #1 8'h00;
|
buff[3'b110] <= #1 8'h00;
|
buff[3'b110] = #1 8'h00;
|
buff[3'b111] <= #1 8'h00;
|
buff[3'b111] = #1 8'h00;
|
end else begin
|
end else begin
|
if ((wr) & !(wr_bit)) begin
|
if ((wr) & !(wr_bit)) begin
|
case (addr)
|
case (addr)
|
8'h00: buff[3'b000] <= #1 data_in;
|
8'h00: buff[3'b000] = #1 data_in;
|
8'h01: buff[3'b001] <= #1 data_in;
|
8'h01: buff[3'b001] = #1 data_in;
|
8'h08: buff[3'b010] <= #1 data_in;
|
8'h08: buff[3'b010] = #1 data_in;
|
8'h09: buff[3'b011] <= #1 data_in;
|
8'h09: buff[3'b011] = #1 data_in;
|
8'h10: buff[3'b100] <= #1 data_in;
|
8'h10: buff[3'b100] = #1 data_in;
|
8'h11: buff[3'b101] <= #1 data_in;
|
8'h11: buff[3'b101] = #1 data_in;
|
8'h18: buff[3'b110] <= #1 data_in;
|
8'h18: buff[3'b110] = #1 data_in;
|
8'h19: buff[3'b111] <= #1 data_in;
|
8'h19: buff[3'b111] = #1 data_in;
|
endcase
|
endcase
|
end
|
end
|
end
|
end
|
end
|
end
|
|
|
//
|
//
|
//read from buffer
|
//read from buffer
|
//always @(sel or bank or data_in or wr or addr or wr or buff)
|
assign data_out = (({3'b000, bank, 2'b00, sel}==addr) & (wr)) ?
|
always @(sel or bank or data_in or wr or addr or wr)
|
data_in : buff[{bank, sel}];
|
begin
|
|
if (({3'b000, bank, 2'b00, sel}==addr) & (wr))
|
|
data_out = data_in;
|
|
else
|
|
data_out = buff[{bank, sel}];
|
|
end
|
|
|
|
endmodule
|
endmodule
|
|
|
No newline at end of file
|
No newline at end of file
|