DS425 PLB Double Data Rate (DDR) Synchronous DRAM … · Inteface G23 PLB Data bus ... parameters...

21
DS425 (v1.9.2) October 10, 2003 www.xilinx.com 1 Product Overview 1-800-255-7778 © 2003 Xilinx, Inc. All rights reserved. All Xilinx trademarks, registered trademarks, patents, and further disclaimers are as listed at http://www.xilinx.com/legal.htm . All other trademarks and registered trademarks are the property of their respective owners. All specifications are subject to change without notice. NOTICE OF DISCLAIMER: Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this fea- ture, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any war- ranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose. Introduction The Xilinx Processor Local Bus Double Data Rate (PLB DDR) Synchronous DRAM (SDRAM) controller for Vir- tex -II and Virtex-II Pro FPGAs provides a DDR SDRAM controller which connects to the PLBbus and provides the control interface for DDR SDRAMs. It is assumed that the reader is familiar with DDR SDRAMs and the IBM Pow- erPC. Features The Xilinx DDR SDRAM Controller is a soft IP core designed for Xilinx FPGAs and contains the following fea- tures: PLB interface Performs device initialization sequence upon power-up and reset conditions for ~200uS. Provides a parameter to adjust this time for simulation purposes only. Performs auto-refresh cycles Supports single-beat and burst transactions Supports target-word first cache-line transactions Supports cacheline latencies of 2 or 3 set by a design parameter Supports various DDR data widths set by a design parameter Provides big-endian connections to memory devices. See Connecting to Memory for details on memory connections. DDR SDRAM Controller Design Parameters To allow the user to obtain a DDR SDRAM Controller that is uniquely tailored for their system, certain features are parameterizable in the Xilinx DDR SDRAM Controller design. This allows the user to have a design that only uti- lizes the resources required by their system and runs at the best possible performance. The features that are parame- terizable in the Xilinx DDR SDRAM Controller are shown in Table 1. 0 PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller DS425 (v1.9.2) October 10, 2003 0 0 Product Overview LogiCORE™ Facts Core Specifics Supported Device Family Virtex-II Pro, Virtex -II, Virtex, Virtex -E, Spartan -II Version of Core DDR v1.00c Resources Used. See Table 8 Min Max Slices 509 861 LUTs 602 977 FFs 477 919 Block RAMs 0 0 Provided with Core Documentation Product Specification Design File Formats VHDL Constraints File N/A Verification N/A Instantiation Template N/A Reference Designs None Design Tool Requirements Xilinx Implementation Tools 5.1i or later Verification N/A Simulation ModelSim SE/EE 5.6e or later Synthesis XST Support Support provided by Xilinx, Inc. Discontinued IP

Transcript of DS425 PLB Double Data Rate (DDR) Synchronous DRAM … · Inteface G23 PLB Data bus ... parameters...

  • IntroductionThe Xilinx Processor Local Bus Double Data Rate (PLBDDR) Synchronous DRAM (SDRAM) controller for Vir-tex-II and Virtex-II Pro FPGAs provides a DDR SDRAMcontroller which connects to the PLBbus and provides thecontrol interface for DDR SDRAMs. It is assumed that thereader is familiar with DDR SDRAMs and the IBM Pow-erPC.

    FeaturesThe Xilinx DDR SDRAM Controller is a soft IP coredesigned for Xilinx FPGAs and contains the following fea-tures:

    PLB interface

    Performs device initialization sequence upon power-upand reset conditions for ~200uS. Provides a parameterto adjust this time for simulation purposes only.

    Performs auto-refresh cycles

    Supports single-beat and burst transactions

    Supports target-word first cache-line transactions

    Supports cacheline latencies of 2 or 3 set by a designparameter

    Supports various DDR data widths set by a designparameter

    Provides big-endian connections to memory devices.See Connecting to Memory for details on memoryconnections.

    DDR SDRAM Controller Design ParametersTo allow the user to obtain a DDR SDRAM Controller that isuniquely tailored for their system, certain features areparameterizable in the Xilinx DDR SDRAM Controllerdesign. This allows the user to have a design that only uti-lizes the resources required by their system and runs at thebest possible performance. The features that are parame-terizable in the Xilinx DDR SDRAM Controller are shown inTable 1.

    0

    PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    DS425 (v1.9.2) October 10, 2003 0 0 Product Overview

    LogiCORE Facts

    Core Specifics

    Supported Device Family

    Virtex-II Pro, Virtex-II, Virtex, Virtex-E, Spartan-II

    Version of Core DDR v1.00c

    Resources Used. See Table 8

    Min Max

    Slices 509 861

    LUTs 602 977

    FFs 477 919

    Block RAMs 0 0

    Provided with Core

    Documentation Product Specification

    Design File Formats VHDL

    Constraints File N/A

    Verification N/A

    Instantiation Template

    N/A

    Reference Designs None

    Design Tool Requirements

    Xilinx Implementation Tools

    5.1i or later

    Verification N/A

    Simulation ModelSim SE/EE 5.6e or later

    Synthesis XST

    Support

    Support provided by Xilinx, Inc.

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 1Product Overview 1-800-255-7778

    2003 Xilinx, Inc. All rights reserved. All Xilinx trademarks, registered trademarks, patents, and further disclaimers are as listed at http://www.xilinx.com/legal.htm. All other trademarks and registered trademarks are the property of their respective owners. All specifications are subject to change without notice.

    NOTICE OF DISCLAIMER: Xilinx is providing this design, code, or information "as is." By providing the design, code, or information as one possible implementation of this fea-ture, application, or standard, Xilinx makes no representation that this implementation is free from any claims of infringement. You are responsible for obtaining any rights you may require for your implementation. Xilinx expressly disclaims any warranty whatsoever with respect to the adequacy of the implementation, including but not limited to any war-ranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose.

    http:www.xilinx.com/legal.htmhttp://www.xilinx.com/legal.htmhttp://www.xilinx.com/legal.htmhttp://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Table 1: DDR SDRAM Controller Design Parameters

    Grouping / Number

    Feature / Description Parameter Name Allowable Values

    Default Value VHDL Type

    DDR SDRAM Controller Features

    G1 Pull Resistors on DDR DQS signals(1)

    C_DQS_PULLUPS 0 = DQS signals have internal or external pull down resistors

    1 = DQS signals have internal or external pull up resistors

    0 integer

    G2 Include logic to support PLB bursts and cacheline transactions

    C_INCLUDE_BURST_CACHELN_SUPPORT

    0 = dont include logic to support PLBbursts and cacheline transfers

    1 = include logic to support bursts and cacheline transfers

    0 string

    G3 Include support for Registered DIMM

    C_REG_DIMM 0 = DDR device is not registered DIMM

    1 = DDR device is registered DIMM

    0 integer

    G4 Target FPGA family C_FAMILY virtex2, virtex2p virtex2p string

    DDR SDRAM Device Features

    G5 Load Mode Register command cycle time (ps)

    C_DDR_TMRD 15000 integer

    G6 Write Recovery Time (ps)

    C_DDR_TWR 15000 integer

    G7 Write-to-Read Command Delay (Tck)

    C_DDR_TWTR 1 integer

    G8 Delay after ACTIVE command before PRECHARGE command (ps)

    C_DDR_TRAS 40000 integer

    G9 Delay after ACTIVE command before another ACTIVE or AUTOREFRESH command (ps)

    C_DDR_TRC 65000 integer

    G10 Delay after AUTOREFRESH before another command (ps)

    C_DDR_TRFC 75000 integer

    G11 Delay after ACTIVE command before READ/WRITE command (ps)

    C_DDR_TRCD 20000 integer

    Discontinued IP

    2 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    G12 Delay after ACTIVE command for a row before an ACTIVE command for another row (ps)

    C_DDR_TRRD 15000 integer

    G13 Delay after a PRECHARGE command (ps)

    C_DDR_TRP 20000 integer

    G14 Average periodic refresh command interval (ps)

    C_DDR_TREFI 7800000 integer

    G15 Refresh command interval (ns)

    C_DDR_TREFC 70300

    G16 CAS Latency C_DDR_CAS_LAT 2,3 2 integer

    G17 Total data width of DDR devices (2)

    C_DDR_DWIDTH 32 integer

    G18 DDR address width C_DDR_AWIDTH See note(3) 13 integer

    G19 DDR column address width

    C_DDR_COL_AWIDTH See note(3) 9 integer

    G20 DDR bank address width

    C_DDR_BANK_AWIDTH

    See note(3) 2 integer

    Address Space

    G21 Base Address C_BASEADDR Valid address(4) std_logic_vector

    G22 High Address C_HIGHADDR Valid address(4) std_logic_vector

    PLB Bus Inteface

    G23 PLB Data bus width C_PLB_DWIDTH 64 64 integer

    G24 PLB Address bus width

    C_PLB_AWIDTH 32 32 integer

    G25 Number of PLB bus masters

    C_PLB_NUM_MASTERS

    1 - 16 4 integer

    G26 PLB clock period (ps)

    C_PLB_CLK_PERIOD_PS

    integer

    Simulation Only

    G27 DDR Initialization time for simulation(6)

    C_SIM_INIT_TIME_PS Minimum 200 clock periods

    2000000000

    integer

    Auto-calcu- lated para- meters(5)

    G28 Number of bits required to encode the number of PLB Masters

    C_PLB_MID_WIDTH 1 - log2(C_NUM_MASTERS)

    2 integer

    Notes: 1. The DDR DQS signals should either internal or external pull resistors. Set this parameter to indicate if these resistors are pull up

    resistors or pull down resistors.2. Data width of DDR devices must be half of the PLB data width.3. C_DDR_AWIDTH + C_DDR_COL_AWIDTH + C_DDR_BANK_AWIDTH + log2(C_DDR_DWIDTH/8) must be < C_PLB_AWIDTH-1.4. The range specified by C_BASEADDR and C_HIGHADDR must comprise a complete, contiguous power of two range such that

    range = 2n, and the n least significant bits of C_BASEADDR must be zero. 5. These parameters are automatically calculated by the system generation tool and are not input by the user.6. This parameter adjusts the initialization time of the DDR for simulation only. Must be > 200 clocks

    Table 1: DDR SDRAM Controller Design Parameters (Continued)

    Grouping / Number

    Feature / Description Parameter Name Allowable Values

    Default Value VHDL Type

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 3Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Allowable Parameter CombinationsThe address range specified by C_BASEADDR and C_HIGHADDR must comprise a complete, contiguous power of tworange such that range = 2n, and the n least significant bits of C_BASEADDR must be zero. The range specified by theseparameters must encompass the DDR SDRAM memory space.

    The total data width of the DDR SDRAM devices must be half the data width of the PLB.

    DDR SDRAM Controller I/O SignalsTable 2 provides a summary of all Xilinx DDR SDRAM Controller input/output (I/O) signals, the interfaces under which theyare grouped, and a brief description of the signal.

    Table 2: DDR SDRAM Controller Pin Descriptions

    Grouping Signal Name Interface I/OInitial State Description

    DDR SDRAM Signals

    P1 DDR_Clk DDR O 0 DDR Clock

    P2 DDR_Clkn DDR O 1 DDR inverted clock

    P3 DDR_CKE DDR O 0 DDR Clock Enable

    P4 DDR_CSn DDR O 1 Active low DDR chip select

    P5 DDR_RASn DDR O 1 Active low DDR row address strobe

    P6 DDR_CASn DDR O 1 Active low DDR column address strobe

    P7 DDR_WEn DDR O 1 Active low DDR write enable

    P8 DDR_DM DDR O 0 DDR data mask

    P9 DDR_BankAddr DDR O 0 DDR bank address

    P10 DDR_Addr DDR O 0 DDR address

    P11 DDR_DQ_o DDR O 0 Output data to DDR

    P12 DDR_DQ_i DDR I Input data from DDR

    P13 DDR_DQ_t DDR O 0 3-state control for DDR data buffers

    P14 DDR_DQS_o DDR O 0 Output data strobe to DDR

    P15 DDR_DQS_i DDR I Input data strobe from DDR

    P16 DDR_DQS_t DDR O 1 3-state control for DDR data strobe buffers

    P17 DDR_Init_done DDR O 0 Signals that the DDR initialization is complete

    Clock Signals

    P18 Clk90_in I System bus clock phase shifted by 90 degrees

    P19 DDR_Clk90_in I DDR clock feedback shifted by 90 degrees

    Discontinued IP

    4 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    PLB Slave Sig- nals(1)

    P20 PLB_PAValid PLB I PLB primary address valid indicator

    P21 PLB_buslock PLB I PLB bus lock

    P22 PLB_masterID[0:C_PLB_NUM_MASTERS-1]

    PLB I PLB current master indicator

    P23 PLB_RNW PLB I PLB read not write

    P24 PLB_BE[0:C_PLB_DWIDTH/8-1] PLB I PLB byte enables

    P25 PLB_size[0:3] PLB I PLB transfer size

    P26 PLB_type[0:2] PLB I PLB transfer type

    P26 PLB_MSize[0:1] PLB I PLB master data bus size

    P28 PLB_compress PLB I PLB compressed data transfer indicator

    Table 2: DDR SDRAM Controller Pin Descriptions (Continued)

    Grouping Signal Name Interface I/OInitial State Description

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 5Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    P28 PLB_guarded PLB I PLB guarded transfer indicator

    P29 PLB_ordered PLB I PLB synchronize transfer indicator

    P30 PLB_lockErr PLB I PLB lock error indicator

    P31 PLB_abort PLB I PLB abort bus request indicator

    P32 PLB_ABus[0:C_PLB_AWIDTH-1] PLB I PLB address bus

    P33 PLB_SAValid PLB I PLB secondary address valid indicator

    P34 PLB_rdPrim PLB I PLB secondary to primary read request indicator

    P35 PLB_wrPrim PLB I PLB secondary to primary write request indicator

    P36 PLB_wrDBus[0:C_PLB_DWIDTH-1] PLB I PLB write data bus

    P37 PLB_wrBurst PLB I PLB burst write transfer indicator

    P38 PLB_rdBurst PLB I PLB burst read transfer indicator

    P39 Sl_addrAck PLB O 0 Slave address acknowledge

    P40 Sl_wait PLB O 0 Slave wait indicator

    P41 Sl_SSize[0:1] PLB O 0 Slave data bus size

    P42 Sl_rearbitrate PLB O 0 Slave rearbitrate bus indicator

    P43 Sl_MBusy[0:C_PLB_NUM_MASTERS-1]

    PLB O 0 Slave busy indicator

    P44 Sl_MErr[0:C_PLB_NUM_MASTERS-1]

    PLB O 0 Slave error indicator

    P45 Sl_wrDAck PLB O 0 Slave write data acknowledge

    P46 Sl_wrComp PLB O 0 Slave write transfer complete indicator

    P47 Sl_wrBTerm PLB O 0 Slave terminate write burst transfer

    P48 Sl_rdDBus[0:C_PLB_DWIDTH-1] PLB O 0 Slave read bus

    P49 Sl_rdWdAddr[0:3] PLB O 0 Slave read word address

    P50 Sl_rdDAck PLB O 0 Slave read data acknowledge

    P51 Sl_rdComp PLB O 0 Slave read transfer complete indicator

    P52 Sl_rdBTerm PLB O 0 Slave terminate read burst transfer

    Table 2: DDR SDRAM Controller Pin Descriptions (Continued)

    Grouping Signal Name Interface I/OInitial State Description

    Discontinued IP

    6 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Parameter/Port DependenciesThere a no dependencies between the DDR design parameters and I/O signals.

    Connecting to Memory

    Memory Data Types and OrganizationDDR SDRAM memory can be accessed as: byte (8 bits), halfword (2 bytes),word (4 bytes), depending on the size of the busto which the processor is attached. From the point of view of the PLBdata is organized as big-endian. The bit and byte label-ing for the big-endian data types is shown below in Figure 1.

    P53 PLB_Clk PLB I PLB clock

    P54 PLB_Rst PLB I PLB reset

    Notes: 1. Please refer to the IBM PLB Bus Architecture Specification for more detailed information on these signals.

    Table 2: DDR SDRAM Controller Pin Descriptions (Continued)

    Grouping Signal Name Interface I/OInitial State Description

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 7Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Memory to FPGA ConnectionsThe data and address signals at the DDR controller are labeled with big-endian bit labeling (for example, D(0:31), D(0) is theMSB), whereas most memory devices are either endian agnostic (they can be connected either way) or little-endian D(31:0)with D(31) as the MSB.

    Caution must be exercised with the connections to the external memory devices to avoid incorrect data and address con-nections. Table 3 shows the correct mapping of DDR controller pins to memory device pins.

    Figure 1: Big-Endian Data Types

    n n+1 n+2 n+3

    0 1 2 3

    MSByte LSByte

    0 31

    MSBit LSBit

    Byte address

    Byte label

    Byte significance

    Bit label

    Bit significance

    n n+1

    0 1

    MSByte LSByte

    0 15

    MSBit LSBit

    Byte address

    Byte label

    Byte significance

    Bit label

    Bit significance

    n

    0

    MSByte

    0 7

    MSBit LSBit

    Byte address

    Byte label

    Byte significance

    Bit label

    Bit significance

    Byte

    Halfword

    Word

    n

    0 1 2

    MSB LSB

    0 63

    MSBit LSBit

    Byte address

    Byte label

    Byte significance

    Bit label

    Bit significance

    Word

    n+1 n+2 n+3 n+4 n+5 n+6 n+7

    3 4 5 6 7Double

    Discontinued IP

    8 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    DDR Address Mapping

    An address offset is calculated based on the width of the DDR data bus. The DDR column address is then mapped to thePLB address bus, followed by the row address and bank address.

    The PLB address bus bit locations for the DDR column, row, and bank addresses are calculated as shown in Table 4 andTable 5.

    Table 6 and Table 7 show an example of the mapping between the PLB address and the DDR address when the data widthof the DDR is 32 and the data width of the bus is 64, the column address width is 9, the row address width is 13, and the bankaddress width is 2.

    Table 3: DDR controller to memory interconnect

    Description DDR Signal (MSB:LSB) Memory Device Signal (MSB:LSB)

    Data Bus DDR_DQ(0:C_DDR_DWIDTH-1) DQ(C_DDR_DWIDTH-1:0)

    Bank Address DDR_BankAddr(0:C_DDR_BANK_AWIDTH) BA(C_DDR_BANK_AWIDTH-1:0)

    Address DDR_Addr(0:C_DDR_AWIDTH-1) A(C_DDR_AWIDTH-1:0)

    Data Strobe DDR_DQS(0:C_DDR_DWIDTH/8-1) UDQS, LDQS

    Data Mask DDR_DM(0:C_DDR_DWIDTH/8-1) UDM, LDM

    Table 4: DDR Address offset calculations

    Variable Equation

    ADDR_OFFSET log2(C_DDR_DWIDTH/8)

    COLADDR_STARTBIT C_PLB_AWIDTH - (C_DDR_COL_AWIDTH+ADDR_OFFSET)

    COLADDR_ENDBIT COLADDR_STARTBIT + C_DDR_COL_AWIDTH- 2 (A0 is not used)

    ROWADDR_STARTBIT COLADDR_STARTBIT - C_DDR_AWIDTH

    ROWADDR_ENDBIT ROWADDR_STARTBIT + C_DDR_AWIDTH-1

    BANKADDR_STARTBIT ROWADDR_STARTBIT - C_DDR_BANK_AWIDTH

    BANKADDR_ENDBIT BANKADDR_STARTBIT + C_DDR_BANK_AWIDTH-1

    Table 5: DDR - PLB Address Bus Assignments

    DDR Address PLB Address Bus

    Column Address PLB_ABus(COLADDR_STARTBIT to COLADDR_ENDBIT) & 0

    Row Address PLB_ABus(ROWADDR_STARTBIT to ROWADDR_ENDBIT)

    Bank Address PLB_ABus(BANKADDR_STARTBIT to BANKADDR_ENDBIT)

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 9Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    IMPORTANT: Virtex-II and Virtex-II Pro IO pairs share input and output clock signals. Since the DDR registers in the IOblocks use both of the input and output clock signals, the ports assigned to the IO pairs MUST use the same input and outputclocks. Care should be taken when making port IO assignments that the DDR_DQ and DDR_DM signals use the systemclock as the output clock and the DDR_DQS signals use a 90 degree phase shift of the system clock as the output clock.Therefore, a DDR_DQS signal should not be assigned with a DDR_DQ signal or a DDR_DM signal in an IO pair.

    Since this DDR controller design utilizes the DDR registers in the Virtex-II and Virtex-II Pro FGPA IO blocks, therefore, thiscontroller is not suitable for other FPGA families.

    Since the DDR_DQ and DDR_DQS busses are 3-stateable, the user should either pulldownor pullup these signals in theFPGA IO blocks or external to the FPGA in the board design and set the C_DQS_PULLUPS parameter accordingly. Notethat the DDR controller design will drive the DQS signals to a 1 or 0 as indicated by this parameter during the IDLE stateso only one DDR controller can be used to control a DDR memory, i.e., two DDR controllers can not share the same DDRmemory.

    Table 6: PLB Example DDR Address offset calculations

    Variable Value

    ADDR_OFFSET log2(32/8) = 2

    COLADDR_STARTBIT 32 - (9+2) = 21

    COLADDR_ENDBIT 21 +(9-2) = 28

    ROWADDR_STARTBIT 21 - 13 = 8

    ROWADDR_ENDBIT 8 + 13 -1 = 20

    BANKADDR_STARTBIT 8 - 2 = 6

    BANKADDR_ENDBIT 6+ 2 -1 = 7

    Table 7: DDR - PLB Address Bus Assignments

    DDR Address PLB Address Bus

    Column Address PLB_ABus(21: 28) &0

    Row Address PLB_ABus(8:20)

    Bank Address PLB_ABus(6:7)

    Discontinued IP

    10 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    DDR Clocking

    Clock GenerationThe clocking scheme required in the FGPA and used by the DDR controller core is shown in Figure 2. An example imple-mentation can be found in the DDR Clock Module Reference design available in the EDK Toolkit.

    Clk and Clk90 Generation

    A DCM is required to generate the clock used internal to the FPGA as shown in Figure 2. A 90 degree phase output of theDCM is input to the DDR Controller core and is used to generate the DDR clock and DQS signals. PLB_Clk and Clk90_inare the outputs of a DCM and global buffers.

    DDR Clock Generation

    The clock output to the DDR SDRAMs is generated using the DDR I/O registers as shown in Figure 3 . The 90 degreephase-shift clock is used to generate the DDR_Clk (and DDR_Clkn) so that the clock is centered in the data output to theDDR.

    Note that the DDR clock frequency is the same as the PLB clock frequency.

    Figure 2: DDR Clocking

    CLKIN

    CLKFB

    CLK0

    CLK90

    External Clock

    DCM

    PLB_Clk

    DDR

    FPGA

    DDR Core

    DDR_Clk90_in

    DDR_Clk

    CLKIN

    CLKFB

    CLK0

    CLK90

    DCM

    DD

    R_C

    lk_f

    b

    CLK

    Clk90_in

    CLKn DDR_Clkn

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 11Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    DDR Clock Input Synchronization

    Another DCM will be required by this design to align the clock output to the DDR registers with the data from the DDR toaccurately register this data. The DDR_Clk output shown in Figure 3 will need to be connected to the DDR_Clk_fb shownin Figure 2 as an external board connection. The Clk90 output of the DDR Clock DCM is input to the DDR Controller coreand is used to clock in the DDR data.

    Due to the variation in board layout, the DDR clock and the DDR data relationship can vary. Therefore, the designer shouldanalyze the time delays of the system and set all of the attributes of the phase shift controls of the DCM as needed to insurestable clocking of the DDR data.

    DDR SDRAM Controller Design

    Block Diagram The Xilinx DDR SDRAM controller consists of the PLB IPIF to provide the bus protocol, 3 state machines to control the DDRSDRAM operation, an I/O module to instantiate the DDR I/O registers for the DDR data interface, and a clock generationmodule.

    The separation of the Command State Machine and the Data State Machine allows for the application of commands to theDDR while data reception/transmission is in progress. Overlapping the DDR commands with the data transfer when access-ing data in the same row of the same bank allows for more optimal DDR operation.

    Figure 3: DDR Clock Generation

    D0

    D1

    C0C1

    Q

    Clk90_in

    VCC

    VCC

    GND

    D0

    D1

    C0C1

    QGND

    DDR_Clk

    DDR_Clkn

    instantiated by Platgen orSysGenPro

    instantiated by Platgen orSysGenPro

    DDR Core

    Discontinued IP

    12 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Init State MachineDDR SDRAMs must be powered-up and initialized in a predefined manner. After all power supplies and the clock are stable,the DDR SDRAM requires a 200uS delay prior to applying an executable command.

    The Init State Machine provides the 200uS delay and the sequencing of the required DDR start-up commands.It instructsthe Command State Machine to send the proper commands in the proper sequence to the DDR. This state machine startsexecution after Reset and returns to the IDLE state when Reset is applied.

    When the initialization sequence has been completed, the INIT_DONE signal asserts.

    Note that after Reset has been applied, the 200uS delay is again implemented before any commands are issued to theDDR. The 200uS delay must be accounted for in simulation as well as the delay of the command sequence.

    Figure 4: DDR SDRAM Controller Block Diagram

    Data State Machine

    Command State Machine

    Init State Machine

    Clock Generation

    DDR_DQ_o

    DDR_DQS_o

    DDR_DM

    DDR_Addr

    DDR_BankAddr

    DDR_RASn

    PLB IPIF

    PLB

    IO Reg

    IPIF

    Inte

    rfac

    e

    Write_data, Write_data_en

    Write_dqs_en, Write_data_mask

    Read_data_en

    Addr

    RASn, CASn, WEn

    BankAddr

    DDR_DQ_i

    DDR_DQ_t

    DDR_DQS_i

    DDR_DQS_t

    DDR_CASn

    DDR_WEn

    DDR_CSn

    DDR_CKE

    DDR_Clk

    DDR_Clkn

    Clk_DDR_RddataClkClk90 R

    ead

    Dat

    a P

    ath

    PLB_CLKClk90_in DDR_Clk90_in

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 13Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Command State MachineThe Command State Machine provides the address bus and commands signals to the DDR. It sends the DATA_EN signalto the Data State Machine to start the reception/transmission of data. If a burst transaction is in progress or a secondarytransaction has been received, the Command State Machine will send the next command to the DDR while data recep-tion/transmission is still in progress to optimize the DDR operation.

    A simplified version of the Command State Machine is shown in Figure 6. For readability, only the major state transitions areshown.

    Figure 5: DDR Init State Machine

    IDLE

    PRECHARGE1

    ENABLE_DLL

    reset*t200us_end

    RESET_DLL

    PRECHARGE2

    REFRESH1

    REFRESH2

    SET_OP_DONE

    cmd_done

    cmd_done

    cmd_done

    cmd_done

    t200ck_end

    cmd_donereset

    Discontinued IP

    14 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Data State MachineThe Data State Machine transfers the data to/from the DDR and determines when the specified DDR burst is complete. Itmonitors the PEND_OP signal from the Command State Machine to know if more data transmissions are required. It waitsfor CAS_LATENCY during read operations and signals when the DDR has completed the data transfer for both read andwrite operations. It provides the READ_DATA_EN signal to the input DDR registers and read data FIFO.

    Figure 6: DDR Command State Machine

    IDLE

    ACT_CMD

    WAIT_TRRD

    READ_CMD WRITE_CMD

    PRECHARGE_CMD

    REFRESH_CMDLOAD_MR_CMD

    cs

    load_mr

    trcd_end*rd_req trcd_end*(wr_req+write_op)

    trp_end

    tmrd_end trfc_end

    refresh | trefi_end

    precharge

    done*tras_end

    twr_end*tras_end*

    write_op*

    write_op*

    same_row*trrd_end*same_bank

    same_row

    same_row*trrd_end*

    trrd_end

    burst*same_row

    burst*same_row*trrd_end*

    WAIT_TRAS

    twr_end*tras_end

    done*tras_end

    tras_end*twr_end

    same_bank

    READ_ERR burst+cs

    trefi_end+cs

    WAIT_TWR

    write_op*same_row*same_bank

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 15Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    I/O Registers

    Control Signals

    All control signals and the address bus to the DDR are registered in the IOBs of the FPGA.

    Write Data

    The DDR I/O registers are used to output the write data to the DDR as shown in Figure 8. Since the clock is being generatedfrom the Clk90 output of the DCM, the CLK0 output is used to clock out the data so that the DDR clock is centered in theDDR data. This also allows a full clock period for the data to get to the IOBs.

    DQS is generated from the CLK90 output so that it is centered in the data.

    Figure 7: DDR Data State Machine

    IDLE

    WRITE_DATAREAD_DATA

    DONE

    pend_write

    ddr_brst_end*pend_read

    pend_write

    pend_write*ddr_brst_end

    pend_writepend_read

    WAIT_CASLAT

    pend_read

    tcaslat_end

    pend_read

    pend_write*pend_read

    WRITE_DATA

    twr_end

    Discontinued IP

    16 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Read Data

    The DDR I/O registers are used to input data from the DDR as shown in Figure 10. The clock output to the DDR is used toclock the input data. This clock is input to a DCM and generates DDR_Clk90_in.

    Figure 8: Write Data Path

    D

    D0

    D1

    C0C1

    Q

    Q

    CClk

    Write_data_en

    Write_data[0:C_DDR_DWIDTH-1]

    Write_data[C_DDR_DWIDTH to C_DDR_DWIDTH*2-1]

    DDR_DQ_t

    DDR_DQ_o

    instantiated by Platgen orSysGenPro

    D

    D0

    D1

    C0C1

    Q

    Q

    C

    DDR_DQS_t

    DDR_DQS_o

    instantiated by Platgen orSysGenPro

    Write_dqs_en

    Clk90

    GND

    VCC

    DQ

    C instantiated by Platgen orSysGenPro

    Clk

    Write_data_mask DDR_DM

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 17Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    During a read cycle, the data strobe signal from the DDR (DDR_DQS) is registered on the rising edge only of DDR_Clk90_inso that it is always high while the DDR is transmitting data. This signal will be used by the Read Data Path logic as the writeenable into a FIFO.

    NOTE: It is important to properly set the C_DQS_PULLUPS parameter indicating if the DDR DQS lines are pulled up orpulled down (internally or externally).

    Read Data Path LogicThe Read Data Path logic consists of an asynchronous FIFO in which the DDR input data is written from the DDR_Clk90_inand read from the internal FPGA clock. The write enable to the FIFO is the DDR_RdDQS signal which will be high duringDDR data transmission.

    Pulldown resistors on these signals insures that DQS is low when neither the DDR or FPGA is driving it. However, if pullupsare used, insure that the C_DQS_PULLUPS parameter is set correctly. Once the FIFO is not empty, the data is read fromthe FIFO and a read acknowledge is generated. This is shown in Figure 10.

    Figure 9: DDR Input Data Registers

    instantiated by Platgen orSysGenPro

    D

    C0C1

    Q0 DDR_RdData_high

    Q1 DDR_RdData_lowDDR_RdData

    DQ

    C

    DDR_Clk90_in

    DDR_DQ_i

    DDR_RdDQS

    CE

    instantiated by Platgen orSysGenPro

    DDR_DQS_i

    ddr_read_data_en

    CE

    DQ

    C

    read_data_en

    DDR_Clk90_in

    Discontinued IP

    18 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Design Constraints

    Note: An example UCF for this core is available and must be modified for use in the system. Please refer to the EDK GettingStarted Guide for the location of this file.

    Timing ConstraintsA timing constraint should be placed on the system clock, setting the frequency to meet the bus timing requirements. A tim-ing constraint should also be placed on the DDR feedback clock to set the frequency of this clock. An example is shown inFigure 11.

    Figure 10: Read Data Path

    NET "PLB_Clk" TNM_NET = "PLB_Clk";

    TIMESPEC "TS_PLB_Clk" = PERIOD "PLB_Clk" 7 ns HIGH 50 %;

    NET "Clk90_in" TNM_NET = "Clk90_in";

    TIMESPEC "TS_CLK90" = PERIOD "Clk90_in" 7 ns HIGH 50% ;

    TIMESPEC "TSCLK2CLK90" = FROM "PLB_Clk" TO "Clk90_in" 2 ns;

    NET "DDR_Clk90_in" TNM_NET = "DDR_Clk90_in";

    TIMESPEC "TS_DDR_Clk90_in" = PERIOD "DDR_Clk90_in" 7 ns HIGH 50 %;

    Figure 11: DDR Timing Constraints

    DQ

    C

    RdDataDIN

    WREN

    WRCLK

    RDEN

    RDCLK

    DOUT

    EMPTY

    CLR

    Clk

    DDR_RdData

    DDR_RdDQS

    Clk_DDR_Rddata

    Empty

    RdenRdAck

    Read_data_en

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 19Product Overview 1-800-255-7778

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Pin ConstraintsThe DDR I/O should be set to the SSTL2 I/O standard. If external pullups/pulldowns are not available on the DDR DQ andDQS signals, then these pins should be specified to use pullup or pulldown resistors. Pulldown resistors are preferred. Anexample is shown in Figure 12.

    Design Implementation

    Target TechnologyThe intended target technology is a Virtex-II Pro FPGA.

    Device Utilization and Performance BenchmarksSince the DDR SDRAM Controller is a module that will be used with other design pieces in the FPGA, the utilization and tim-ing numbers reported in this section are just estimates. As the DDR SDRAM Controller is combined with other pieces of theFPGA design, the utilization of FPGA resources and timing of the DDR SDRAM Controller design will vary from the resultsreported here.

    The DDR SDRAM Controller benchmarks are shown in Table 8 for a Virtex-II Pro -7 FPGA.

    Reference DocumentsThe following documents contain reference information important to understanding the Xilinx DDR SDRAM Controllerdesign:

    NET "DDR_DQS" IOSTANDARD=SSTL2_I;

    NET "DDR_DQS" PULLDOWN;

    NET "DDR_DQS" IOSTANDARD=SSTL2_I;

    NET "DDR_DQS" PULLDOWN;Figure 12: DDR Pin Constraints

    Table 8: DDR FPGA Performance and Resource Utilization Benchmarks (Virtex-II Pro-7)

    Parameter Values

    (other parameters at default values) Device ResourcesfMAX

    (MHz)

    C_INCLUDE_BURST_CACHELN_SUPPORT C_REG_DIMM Slices

    Slice Flip- Flops

    4-input LUTs fMAX

    0 0 554 515 690 141

    0 1 617 643 695 125

    1 0 689 592 886 143

    1 1 730 676 886 133

    Notes: 1. These benchmark designs contain only the DDR SDRAM Controller without any additional logic. Benchmark numbers

    approach the performance ceiling rather than representing performance under typical user conditions.

    Discontinued IP

    20 www.xilinx.com DS425 (v1.9.2) October 10, 20031-800-255-7778 Product Overview

    http://www.xilinx.com

  • PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) Controller

    Revision HistoryThe following table shows the revision history for this document.

    Date Version Revision

    010/10/03 1.0 Initial Xilinx release.

    05/20/02 1.1 Update for EDK 1.0

    06/20/02 1.2 Revisions for EDK 1.0

    07/23/02 1.3 Update for DDR v1_00_b

    07/24/02 1.4 Add XCO parameters for System Generator

    09/11/02 1.5 Added resource utilizations

    10/06/02 1.6 Removed generics/ports relating to the Clk90 and DDR Clock DCMs, updated figures, added C_DQS_PULLUPS generic

    01/20/03 1.7 General document cleanup and update

    01/31/03 1.8 Added note and cross-reference to the Connecting to Memory section on the first page to the DDR Controller Features

    07/21/03 1.9 Update to new template

    09/19/03 1.9.1 Update trademarks

    10/10/03 1.9.2 Remove PRELIMINARY from title block

    Discontinued IP

    DS425 (v1.9.2) October 10, 2003 www.xilinx.com 21Product Overview 1-800-255-7778

    http://www.xilinx.com

    PLB Double Data Rate (DDR) Synchronous DRAM (SDRAM) ControllerIntroductionFeaturesDDR SDRAM Controller Design ParametersAllowable Parameter Combinations

    DDR SDRAM Controller I/O SignalsParameter/Port DependenciesConnecting to MemoryMemory Data Types and OrganizationMemory to FPGA ConnectionsDDR Address Mapping

    DDR ClockingClock GenerationClk and Clk90 GenerationDDR Clock GenerationDDR Clock Input Synchronization

    DDR SDRAM Controller DesignBlock DiagramInit State MachineCommand State MachineData State MachineI/O RegistersControl SignalsWrite DataRead Data

    Read Data Path Logic

    Design ConstraintsTiming ConstraintsPin Constraints

    Design ImplementationTarget TechnologyDevice Utilization and Performance Benchmarks

    Reference DocumentsRevision History