⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mem_interface_top_usr_rd_0.v

📁 sata_device_model,对做硬盘控制器的朋友有帮助
💻 V
字号:
//*****************************************************************************
// Copyright (c) 2006 Xilinx, Inc.
// This design is confidential and proprietary of Xilinx, Inc.
// All Rights Reserved
//*****************************************************************************
//   ____  ____
//  /   /\/   /
// /___/  \  /    Vendor: Xilinx
// \   \   \/     Version: $Name: i+IP+125372 $
//  \   \         Application: MIG
//  /   /         Filename: mem_interface_top_usr_rd_0.v
// /___/   /\     Date Last Modified: $Date: 2007/04/18 13:49:32 $
// \   \  /  \    Date Created: Tue Aug 29 2006
//  \___\/\___\
//
//Device: Virtex-5
//Design Name: DDR2
//Purpose:
//   The delay between the read data with respect to the command issued is
//   calculted in terms of no. of clocks. This data is then stored into the
//   FIFOs and then read back and given as the ouput for comparison.
//Reference:
//Revision History:
//*****************************************************************************

`timescale 1ns/1ps

module mem_interface_top_usr_rd_0 #
  (
   parameter DQ_WIDTH      = 72,
   parameter DQ_PER_DQS    = 8,
   parameter DQS_WIDTH     = 9
   )
  (
   input                                    clk,
   input                                    rst,
   input [DQ_WIDTH-1:0]                     rd_data_in_rise,
   input [DQ_WIDTH-1:0]                     rd_data_in_fall,
   input [DQS_WIDTH-1:0]                    ctrl_rden,
   output                                   rd_data_valid,
   output [DQ_WIDTH-1:0]                    rd_data_out_rise,
   output [DQ_WIDTH-1:0]                    rd_data_out_fall
   );

  reg                  fifo_rden_r0;
  reg                  fifo_rden_r1;
  reg                  fifo_rden_r2;
  reg                  fifo_rden_r3;
  wire [DQS_WIDTH-1:0] i_rd_data_valid;

  //***************************************************************************

  // can use any of the read valids, they're all delayed by same amount
  assign rd_data_valid = i_rd_data_valid[0];

  // delay read valid to take into account maximum delay difference between
  // the read enable coming from the different DQS groups
  always @(posedge clk) begin
    if (rst) begin
      fifo_rden_r0 <= 1'b0;
      fifo_rden_r1 <= 1'b0;
      fifo_rden_r2 <= 1'b0;
      fifo_rden_r3 <= 1'b0;
    end else begin
      fifo_rden_r0 <= ctrl_rden[0];
      fifo_rden_r1 <= fifo_rden_r0;
      fifo_rden_r2 <= fifo_rden_r1;
      fifo_rden_r3 <= fifo_rden_r2;
    end
  end

  genvar fifo_i;
  generate
    for(fifo_i = 0; fifo_i < DQS_WIDTH; fifo_i = fifo_i+1) begin: gen_fifo
      mem_interface_top_usr_rd_fifo_0 #
        (
         .DATA_WIDTH (DQ_PER_DQS)
         )
        u_rd_fifo
        (
         .clk           (clk),
         .rst           (rst),
         .rden          (fifo_rden_r3),
         .wren          (ctrl_rden[fifo_i]),
         .data_in_rise  (rd_data_in_rise[DQ_PER_DQS*(fifo_i+1)-1:
                                         DQ_PER_DQS*fifo_i]),
         .data_in_fall  (rd_data_in_fall[DQ_PER_DQS*(fifo_i+1)-1:
                                         DQ_PER_DQS*fifo_i]),
         .data_valid    (i_rd_data_valid[fifo_i]),
         .data_out_rise (rd_data_out_rise[DQ_PER_DQS*(fifo_i+1)-1:
                                          DQ_PER_DQS*fifo_i]),
         .data_out_fall (rd_data_out_fall[DQ_PER_DQS*(fifo_i+1)-1:
                                          DQ_PER_DQS*fifo_i])
         );
    end
  endgenerate

endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -