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

Subversion Repositories 8051

[/] [8051/] [trunk/] [rtl/] [verilog/] [oc8051_indi_addr.v] - Diff between revs 4 and 5

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 4 Rev 5
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

powered by: WebSVN 2.1.0

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