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

Subversion Repositories nysa_sata

[/] [nysa_sata/] [trunk/] [rtl/] [generic/] [ppfifo.v] - Diff between revs 2 and 3

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

Rev 2 Rev 3
Line 56... Line 56...
);
);
 
 
localparam FIFO_DEPTH = (1 << ADDRESS_WIDTH);
localparam FIFO_DEPTH = (1 << ADDRESS_WIDTH);
 
 
//Local Registers/Wires
//Local Registers/Wires
assign  write_fifo_size     = FIFO_DEPTH;
 
 
 
//Write Side
//Write Side
wire                        ppfifo_ready;  // The write side only needs to
wire                        ppfifo_ready;  // The write side only needs to
                                           // know were ready if we don't
                                           // know were ready if we don't
                                           // write anything read won't start
                                           // write anything read won't start
Line 84... Line 83...
reg                         w_empty[1:0];
reg                         w_empty[1:0];
reg                         w_reset;        //write side reset
reg                         w_reset;        //write side reset
reg   [4:0]                 w_reset_timeout;
reg   [4:0]                 w_reset_timeout;
wire                        ready;
wire                        ready;
 
 
//assign  r_wselect           = (write_activate == 2'b00) ? 1'b0 :
 
//                              (write_activate == 2'b01) ? 1'b0 :
 
//                              (write_activate == 2'b10) ? 1'b1 :
 
//                              reset ?                     1'b0 :
 
//                              r_wselect;
 
//                            //I know this can be shortened down but it's more
 
//                            //readible thi way
 
 
 
assign  addr_in             = {r_wselect, write_address};
 
//assign  write_enable        = (write_activate > 0) && write_strobe;
 
assign  ppfifo_ready        = !(w_reset || r_reset);
 
assign  ready               = ppfifo_ready;
 
 
 
//assign  wcc_tie_select      = (wcc_read_ready == 2'b00) ? 1'b0 :
 
//                              (wcc_read_ready == 2'b01) ? 1'b0 :
 
//                              (wcc_read_ready == 2'b10) ? 1'b1 :
 
//                              wcc_tie_select;
 
                                            // If the first FIFO is ready,
 
                                            // then both FIFOs are ready then
 
                                            // keep the first FIFO
 
 
 
//Read Side
//Read Side
wire  [ADDRESS_WIDTH: 0]    addr_out;     //Actual address to the BRAM
wire  [ADDRESS_WIDTH: 0]    addr_out;     //Actual address to the BRAM
reg                         r_reset;
reg                         r_reset;
reg   [4:0]                 r_reset_timeout;
reg   [4:0]                 r_reset_timeout;
 
 
Line 138... Line 116...
reg                         r_pre_read_wait;//Wait an extra cycle so the registered data has a chance to set
reg                         r_pre_read_wait;//Wait an extra cycle so the registered data has a chance to set
                                            //the data to be registered
                                            //the data to be registered
wire  [DATA_WIDTH - 1: 0]   w_read_data;    //data from the read FIFO
wire  [DATA_WIDTH - 1: 0]   w_read_data;    //data from the read FIFO
reg   [DATA_WIDTH - 1: 0]   r_read_data;    //data from the read FIFO
reg   [DATA_WIDTH - 1: 0]   r_read_data;    //data from the read FIFO
 
 
 
 
 
 
 
//assign  r_wselect           = (write_activate == 2'b00) ? 1'b0 :
 
//                              (write_activate == 2'b01) ? 1'b0 :
 
//                              (write_activate == 2'b10) ? 1'b1 :
 
//                              reset ?                     1'b0 :
 
//                              r_wselect;
 
//                            //I know this can be shortened down but it's more
 
//                            //readible thi way
 
 
 
assign  write_fifo_size     = FIFO_DEPTH;
 
 
 
assign  addr_in             = {r_wselect, write_address};
 
//assign  write_enable        = (write_activate > 0) && write_strobe;
 
assign  ppfifo_ready        = !(w_reset || r_reset);
 
assign  ready               = ppfifo_ready;
 
 
 
//assign  wcc_tie_select      = (wcc_read_ready == 2'b00) ? 1'b0 :
 
//                              (wcc_read_ready == 2'b01) ? 1'b0 :
 
//                              (wcc_read_ready == 2'b10) ? 1'b1 :
 
//                              wcc_tie_select;
 
                                            // If the first FIFO is ready,
 
                                            // then both FIFOs are ready then
 
                                            // keep the first FIFO
 
 
assign  addr_out            = {r_rselect, r_address};
assign  addr_out            = {r_rselect, r_address};
 
 
 
 
//Debug
//Debug
wire  [23:0]                debug_f0_w_count;
//wire  [23:0]                debug_f0_w_count;
wire  [23:0]                debug_f1_w_count;
//wire  [23:0]                debug_f1_w_count;
 
 
wire  [23:0]                debug_f0_r_size;
//wire  [23:0]                debug_f0_r_size;
wire  [23:0]                debug_f1_r_size;
//wire  [23:0]                debug_f1_r_size;
 
 
//wire  [23:0]                debug_f0_r_count;
//wire  [23:0]                debug_f0_r_count;
//wire  [23:0]                debug_f1_r_count;
//wire  [23:0]                debug_f1_r_count;
 
 
assign  debug_f0_w_count    = w_count[0];
//assign  debug_f0_w_count    = w_count[0];
assign  debug_f1_w_count    = w_count[1];
//assign  debug_f1_w_count    = w_count[1];
 
 
assign  debug_f0_r_size     = r_size[0];
//assign  debug_f0_r_size     = r_size[0];
assign  debug_f1_r_size     = r_size[1];
//assign  debug_f1_r_size     = r_size[1];
 
 
assign  inactive            = (w_count[0] == 0) &&
assign  inactive            = (w_count[0] == 0) &&
                              (w_count[1] == 0) &&
                              (w_count[1] == 0) &&
                              (write_ready == 2'b11) &&
                              (write_ready == 2'b11) &&
                              (!write_strobe);
                              (!write_strobe);
Line 289... Line 292...
  if (reset) begin
  if (reset) begin
    w_reset         <=  1;
    w_reset         <=  1;
    w_reset_timeout <=  0;
    w_reset_timeout <=  0;
  end
  end
  else begin
  else begin
    if (w_reset && (w_reset_timeout < 4'h4)) begin
    if (w_reset && (w_reset_timeout < 5'h4)) begin
      w_reset_timeout <=  w_reset_timeout + 1;
      w_reset_timeout <=  w_reset_timeout + 5'h1;
    end
    end
    else begin
    else begin
      w_reset       <=  0;
      w_reset       <=  0;
    end
    end
  end
  end
Line 304... Line 307...
  if (reset) begin
  if (reset) begin
    r_reset           <=  1;
    r_reset           <=  1;
    r_reset_timeout   <=  0;
    r_reset_timeout   <=  0;
  end
  end
  else begin
  else begin
    if (r_reset && (r_reset_timeout < 4'h4)) begin
    if (r_reset && (r_reset_timeout < 5'h4)) begin
      r_reset_timeout <= r_reset_timeout + 1;
      r_reset_timeout <= r_reset_timeout + 5'h1;
    end
    end
    else begin
    else begin
      r_reset         <=  0;
      r_reset         <=  0;
    end
    end
  end
  end

powered by: WebSVN 2.1.0

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