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

Subversion Repositories nysa_sata

[/] [nysa_sata/] [trunk/] [rtl/] [link/] [sata_link_layer_read.v] - Diff between revs 2 and 3

Show entire file | Details | Blame | View Log

Rev 2 Rev 3
Line 47... Line 47...
  input               detect_hold,
  input               detect_hold,
  input               detect_cont,
  input               detect_cont,
  input               detect_xrdy_xrdy,
  input               detect_xrdy_xrdy,
 
 
  output      [31:0]  tx_dout,
  output      [31:0]  tx_dout,
  output              tx_isk,
  output              tx_is_k,
 
 
  input       [31:0]  rx_din,
  input       [31:0]  rx_din,
  input       [3:0]   rx_isk,
  input       [3:0]   rx_is_k,
 
 
  output  reg         read_strobe,
  output  reg         read_strobe,
  output  reg  [31:0] read_data,
  output  reg  [31:0] read_data,
  input               read_ready,
  input               read_ready,
  output              read_start,
  output              read_start,
Line 89... Line 89...
reg                 send_holda;
reg                 send_holda;
reg                 send_sync;
reg                 send_sync;
 
 
//CRC
//CRC
//XXX: Tie the CRC_EN to an incomming data dword
//XXX: Tie the CRC_EN to an incomming data dword
wire                crc_en;
 
wire      [31:0]    crc_din;
wire      [31:0]    crc_din;
wire      [31:0]    crc_dout;
 
reg                 crc_data;
 
reg                 crc_check;
 
 
 
reg       [31:0]    prev_crc;
reg       [31:0]    prev_crc;
reg       [31:0]    prev_data;
reg       [31:0]    prev_data;
wire                data_valid;
wire                data_valid;
reg                 first_dword;
reg                 first_dword;
Line 108... Line 104...
wire                descr_en;
wire                descr_en;
wire      [31:0]    descr_din;
wire      [31:0]    descr_din;
wire      [31:0]    descr_dout;
wire      [31:0]    descr_dout;
 
 
//SubModules
//SubModules
crc c (
 
  .rst            (rst      || idle ),
 
  .clk            (clk              ),
 
  .en             (crc_en           ),
 
  .din            (crc_din          ),
 
  .dout           (crc_dout         )
 
);
 
 
 
scrambler descr (
scrambler descr (
  .rst            (rst      ||  idle),
  .rst            (rst      ||  idle),
  .clk            (clk              ),
  .clk            (clk              ),
  .prim_scrambler (0                ),
  .prim_scrambler (1'b0             ),
  .en             (descr_en         ),
  .en             (descr_en         ),
  .din            (rx_din           ),
  .din            (rx_din           ),
  .dout           (descr_dout       )
  .dout           (descr_dout       )
);
);
 
 
Line 138... Line 126...
                              (send_hold)   ? `PRIM_HOLD  :
                              (send_hold)   ? `PRIM_HOLD  :
                              (send_sync)   ? `PRIM_SYNC  :
                              (send_sync)   ? `PRIM_SYNC  :
                              (send_holda)  ? `PRIM_HOLDA :
                              (send_holda)  ? `PRIM_HOLDA :
                              `PRIM_SYNC;
                              `PRIM_SYNC;
 
 
assign              tx_isk  = ( send_r_rdy  ||
assign              tx_is_k  = ( send_r_rdy  ||
                                send_r_ip   ||
                                send_r_ip   ||
                                send_r_err  ||
                                send_r_err  ||
                                send_r_ok   ||
                                send_r_ok   ||
                                send_hold   ||
                                send_hold   ||
                                send_holda  ||
                                send_holda  ||
Line 151... Line 139...
assign              crc_din       = (data_scrambler_en) ? descr_dout : rx_din;
assign              crc_din       = (data_scrambler_en) ? descr_dout : rx_din;
//assign              read_data     = (read_strobe) ? rx_din : 32'h0;
//assign              read_data     = (read_strobe) ? rx_din : 32'h0;
assign              read_finished = detect_eof;
assign              read_finished = detect_eof;
assign              read_start    = detect_sof;
assign              read_start    = detect_sof;
assign              data_valid    = (state == READ) &&
assign              data_valid    = (state == READ) &&
                                    (rx_isk == 0)   &&
                                    (rx_is_k == 0)   &&
                                    (!detect_hold)  &&
                                    (!detect_hold)  &&
                                    (!detect_holda) &&
                                    (!detect_holda) &&
                                    (!detect_align);
                                    (!detect_align);
 
 
assign              crc_en        = data_valid;
 
assign              descr_en      = (data_scrambler_en && (detect_sof || data_valid));
assign              descr_en      = (data_scrambler_en && (detect_sof || data_valid));
assign              descr_din     = (data_valid) ? rx_din : 32'h00000000;
assign              descr_din     = (data_valid) ? rx_din : 32'h00000000;
//assign              crc_ok        = (prev_data == prev_crc);
//assign              crc_ok        = (prev_data == prev_crc);
 
 
assign              lax_r_state   = state;
assign              lax_r_state   = state;

powered by: WebSVN 2.1.0

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