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

Subversion Repositories the_wizardry_project

[/] [the_wizardry_project/] [trunk/] [Wizardry/] [VHDL/] [Wizardry Top Level/] [Memory Design/] [MIG_top_00/] [MIG_data_path_0/] [MIG_tap_logic/] [MIG_tap_logic_0.vhd] - Rev 24

Compare with Previous | Blame | View Log

-------------------------------------------------------------------------------
-- Copyright (c) 2005-2007 Xilinx, Inc.
-- This design is confidential and proprietary of Xilinx, All Rights Reserved.
-------------------------------------------------------------------------------
--   ____  ____
--  /   /\/   /
-- /___/  \  /   Vendor             : Xilinx
-- \   \   \/    Version            : $Name: i+IP+131489 $
--  \   \        Application        : MIG
--  /   /        Filename           : MIG_tap_logic_0.vhd
-- /___/   /\    Date Last Modified : $Date: 2007/09/21 15:23:24 $
-- \   \  /  \   Date Created       : Mon May 2 2005
--  \___\/\___\
--
-- Device      : Virtex-4
-- Design Name : DDR SDRAM
-- Description: Instantiates the tap_cntrl and the data_tap_inc modules.
--              Used for calibration of the memory data with the FPGA clock.
-------------------------------------------------------------------------------
 
library ieee;
use ieee.std_logic_1164.all;
use work.MIG_parameters_0.all;
library UNISIM;
use UNISIM.vcomponents.all;
 
entity MIG_tap_logic_0 is
  port(
    clk                  : in  std_logic;
    reset0               : in  std_logic;
    idelay_ctrl_rdy      : in  std_logic;
    ctrl_dummyread_start : in  std_logic;
    dqs_delayed          : in  std_logic_vector((DATA_STROBE_WIDTH - 1) downto 0);
    sel_done             : out std_logic;
    data_idelay_inc      : out std_logic_vector((READENABLE - 1) downto 0);
    data_idelay_ce       : out std_logic_vector((READENABLE - 1) downto 0);
    data_idelay_rst      : out std_logic_vector((READENABLE - 1) downto 0);
    dqs_idelay_inc       : out std_logic_vector((READENABLE - 1) downto 0);
    dqs_idelay_ce        : out std_logic_vector((READENABLE - 1) downto 0);
    dqs_idelay_rst       : out std_logic_vector((READENABLE - 1) downto 0)
    );
end MIG_tap_logic_0;
 
architecture arch of MIG_tap_logic_0 is
 
  component MIG_tap_ctrl
    port(
      clk                  : in  std_logic;
      reset                : in  std_logic;
      rdy_status           : in  std_logic;
      dqs                  : in  std_logic;
      ctrl_dummyread_start : in  std_logic;
      dlyinc               : out std_logic;
      dlyce                : out std_logic;
      dlyrst               : out std_logic;
      sel_done             : out std_logic;
      valid_data_tap_count : out std_logic;
      data_tap_count       : out std_logic_vector(5 downto 0)
      );
  end component;
 
  component MIG_data_tap_inc
    port(
      clk                  : in  std_logic;
      reset                : in  std_logic;
      data_dlyinc          : out std_logic;
      data_dlyce           : out std_logic;
      data_dlyrst          : out std_logic;
      data_tap_sel_done    : out std_logic;
      dqs_sel_done         : in  std_logic;
      valid_data_tap_count : in  std_logic;
      data_tap_count       : in  std_logic_vector(5 downto 0)
      );
  end component;
 
  signal data_tap_select   : std_logic_vector((READENABLE - 1) downto 0);
  signal dqs_tap_sel_done  : std_logic_vector((READENABLE - 1) downto 0);
  signal valid_tap_count   : std_logic_vector((READENABLE - 1) downto 0);
  signal data_tap_inc_done : std_logic;
  signal tap_sel_done      : std_logic;
  signal rst_r             : std_logic;
 
signal data_tap_count0    : std_logic_vector(5 downto 0);
 
 
begin
 
  -- For controller to stop dummy reads
  sel_done <= tap_sel_done;
 
  process(clk)
  begin
    if(clk'event and clk = '1') then
      rst_r <= reset0;
    end if;
  end process;
 
  process(clk)
  begin
    if(clk'event and clk = '1') then
      if (rst_r = '1') then
        data_tap_inc_done <= '0';
        tap_sel_done      <= '0';
      else
        data_tap_inc_done <=  data_tap_select(0) ;
        tap_sel_done      <= data_tap_inc_done;
 
      end if;
    end if;
  end process;
 
  --**********************************************************************
  --  tap_ctrl instances for  ddr_dqs strobes
  --**********************************************************************
 
 
tap_ctrl_0: MIG_tap_ctrl
  port map (
          clk                       => clk,
          reset                     => reset0,
          rdy_status                => idelay_ctrl_rdy,
          dqs                       => dqs_delayed(3),
          ctrl_dummyread_start      => ctrl_dummyread_start,
          dlyinc                    => dqs_idelay_inc(0),
          dlyce                     => dqs_idelay_ce(0),
          dlyrst                    => dqs_idelay_rst(0),
          sel_done                  => dqs_tap_sel_done(0),
          valid_data_tap_count      => valid_tap_count(0),
          data_tap_count            => data_tap_count0(5 downto 0)
       );
 
 
  --**********************************************************************
  --  instances of data_tap_inc for each dqs and associated tap_ctrl
  --**********************************************************************
 
 
data_tap_inc_0: MIG_data_tap_inc
  port map (
        clk                     => clk,
        reset                   => reset0,
        data_dlyinc             => data_idelay_inc(0),
        data_dlyce              => data_idelay_ce(0),
        data_dlyrst             => data_idelay_rst(0),
        data_tap_sel_done       => data_tap_select(0),
        dqs_sel_done            => dqs_tap_sel_done(0),
        valid_data_tap_count    => valid_tap_count(0),
        data_tap_count          => data_tap_count0(5 downto 0)
             );
 
 
end arch;
 

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.