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

Subversion Repositories next186_soc_pc

[/] [next186_soc_pc/] [trunk/] [HW/] [ddr/] [user_design/] [rtl/] [ddr_controller_iobs_0.v] - Rev 2

Compare with Previous | Blame | View Log

//*****************************************************************************
// DISCLAIMER OF LIABILITY
//
// This file contains proprietary and confidential information of
// Xilinx, Inc. ("Xilinx"), that is distributed under a license
// from Xilinx, and may be used, copied and/or disclosed only
// pursuant to the terms of a valid license agreement with Xilinx.
//
// XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION
// ("MATERIALS") "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
// EXPRESSED, IMPLIED, OR STATUTORY, INCLUDING WITHOUT
// LIMITATION, ANY WARRANTY WITH RESPECT TO NONINFRINGEMENT,
// MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE. Xilinx
// does not warrant that functions included in the Materials will
// meet the requirements of Licensee, or that the operation of the
// Materials will be uninterrupted or error-free, or that defects
// in the Materials will be corrected. Furthermore, Xilinx does
// not warrant or make any representations regarding use, or the
// results of the use, of the Materials in terms of correctness,
// accuracy, reliability or otherwise.
//
// Xilinx products are not designed or intended to be fail-safe,
// or for use in any application requiring fail-safe performance,
// such as life-support or safety devices or systems, Class III
// medical devices, nuclear facilities, applications related to
// the deployment of airbags, or any other applications that could
// lead to death, personal injury or severe property or
// environmental damage (individually and collectively, "critical
// applications"). Customer assumes the sole risk and liability
// of any use of Xilinx products in critical applications,
// subject only to applicable laws and regulations governing
// limitations on product liability.
//
// Copyright 2005, 2006, 2007, 2008 Xilinx, Inc.
// All rights reserved.
//
// This disclaimer and copyright notice must be retained as part
// of this file at all times.
//*****************************************************************************
//   ____  ____
//  /   /\/   /
// /___/  \  /   Vendor		    : Xilinx
// \   \   \/    Version            : 3.6.1
//  \   \        Application	    : MIG
//  /   /        Filename	    : ddr_controller_iobs_0.v
// /___/   /\    Date Last Modified : $Date: 2010/11/26 18:25:41 $
// \   \  /  \   Date Created	    : Mon May 2 2005
//  \___\/\___\
// Device	: Spartan-3/3A/3A-DSP
// Design Name	: DDR2 SDRAM
// Purpose	: This module has the IOB instantiations to address and control 
//		  signals.
//*****************************************************************************
 
`include "../rtl/ddr_parameters_0.v"
`timescale 1ns/100ps
 
module ddr_controller_iobs_0
  (
   input                      clk0,
   input                      ddr_rasb_cntrl,
   input                      ddr_casb_cntrl,
   input                      ddr_web_cntrl,
   input                      ddr_cke_cntrl,
   input                      ddr_csb_cntrl,
   input                      ddr_odt_cntrl,
   input [`ROW_ADDRESS-1:0]   ddr_address_cntrl,
   input [`BANK_ADDRESS-1:0]  ddr_ba_cntrl,
   input                      rst_dqs_div_int,
   output                     ddr_rasb,
   output                     ddr_casb,
   output                     ddr_web,
   output [`BANK_ADDRESS-1:0] ddr_ba,
   output [`ROW_ADDRESS-1:0]  ddr_address,
   output                     ddr_cke,
   output                     ddr_csb,
   output                     ddr_odt0,
   output                     rst_dqs_div,
   input                      rst_dqs_div_in,
   output                     rst_dqs_div_out
   );
 
 
   wire                       ddr_odt_reg;
   wire [`ROW_ADDRESS-1:0]    ddr_address_iob_reg;
   wire [`BANK_ADDRESS-1:0]   ddr_ba_reg;
   wire                       ddr_web_q;
   wire                       ddr_rasb_q;
   wire                       ddr_casb_q;
   wire                       ddr_cke_q;
   wire                       ddr_cke_int;
 
//---- *******************************************  ----
//----  Includes the instantiation of FD for cntrl  ----
//----            signals                           ----
//---- *******************************************  ----
 
   (* IOB = "FORCE" *) FD iob_web
     (
      .Q (ddr_web_q),
      .D (ddr_web_cntrl),
      .C (~clk0)
      );
 
   (* IOB = "FORCE" *) FD iob_rasb
     (
      .Q (ddr_rasb_q),
      .D (ddr_rasb_cntrl),
      .C (~clk0)
      );
 
 
   (* IOB = "FORCE" *) FD iob_casb
     (
      .Q (ddr_casb_q),
      .D (ddr_casb_cntrl),
      .C (~clk0)
      );
 
 
//---- ************************************* ----
//----  Output buffers for control signals   ----
//---- ************************************* ----
 
   OBUF r16
     (
      .I (ddr_web_q),
      .O (ddr_web)
      );
 
   OBUF r17
     (
      .I (ddr_rasb_q),
      .O (ddr_rasb)
      );
 
   OBUF r18
     (
      .I (ddr_casb_q),
      .O (ddr_casb)
      );
 
   OBUF r19
     (
      .I (ddr_csb_cntrl),
      .O (ddr_csb)
      );
 
 
   FD iob_cke1
     (
      .Q (ddr_cke_int),
      .D (ddr_cke_cntrl),
      .C (clk0)
      );
 
 
   (* IOB = "FORCE" *) FD iob_cke
     (
      .Q (ddr_cke_q),
      .D (ddr_cke_int),
      .C (~clk0)
      );
 
 
   OBUF r20
     ( 
      .I (ddr_cke_q),
      .O (ddr_cke)
      );
 
 
  (* IOB = "FORCE" *) FD iob_odt
     (
      .Q (ddr_odt_reg),
      .D (ddr_odt_cntrl),
      .C (~clk0)
      );
 
 
   OBUF r21
     (
      .I (ddr_odt_reg),
      .O (ddr_odt0)
      );
 
//---- *******************************************  ----
//----  Includes the instantiation of FD  and OBUF  ----
//----  for addr signals                            ----
//---- *******************************************  ----    
 
   genvar addr_i;
   generate 
      for(addr_i = 0; addr_i < `ROW_ADDRESS; addr_i = addr_i + 1)
	begin : gen_addr
	 (* IOB = "FORCE" *) FD FD_inst
	  (
	   .Q (ddr_address_iob_reg[addr_i]),
           .D (ddr_address_cntrl[addr_i]),
           .C (~clk0)
	   );
 
         OBUF OBUF_inst 
	    (
             .I (ddr_address_iob_reg[addr_i]),
             .O (ddr_address[addr_i])
             );
      end	
   endgenerate
 
   genvar ba_i;
   generate 
      for(ba_i = 0; ba_i < `BANK_ADDRESS; ba_i = ba_i + 1) begin : gen_ba
	 (* IOB = "FORCE" *) FD FD_inst
	  (
           .Q (ddr_ba_reg[ba_i]),
           .D (ddr_ba_cntrl[ba_i]),
           .C (~clk0)
        );
 
       OBUF OBUF_inst 
         (
          .I (ddr_ba_reg[ba_i]),
          .O (ddr_ba[ba_i])
	  );
      end	
   endgenerate
 
 
   IBUF rst_iob_inbuf
     (
      .I (rst_dqs_div_in),
      .O (rst_dqs_div)
      );
 
   OBUF rst_iob_outbuf
     (
      .I (rst_dqs_div_int),
      .O (rst_dqs_div_out)
      );
 
endmodule
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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