0 spi-4.2 core v6application-notes.digchip.com/077/77-43554.pdf · 2009. 2. 8. · spi-4.2 core...

90
DS209 February 15, 2006 www.xilinx.com 1 Product Specification © 2006 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 feature, 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 warranties or representations that this implementation is free from claims of infringement and any implied warranties of merchantability or fitness for a particular purpose. Features Fully compliant with OIF-SPI4-02.1 System Packet Interface Level-4 (SPI-4) Phase 2 standard Supports POS, ATM, and Ethernet 10 Gbps applications Sink and Source cores selected and configured through Xilinx CORE Generator™ tool, providing easy customization Supports Dynamic Phase Alignment full bandwidth ranging up to 944 Mbps Delivers Sink and Source cores as independent solutions enabling flexible implementation Provides optional 64– or 128–bit user interface supporting easy integration of back-end user logic Supports 1 to 256 addressable channels with fully configurable SPI-4.2 calendar interface Facilitates mux/demux and bridging functions with a Xilinx standard FIFO User Interface Supports LVTTL and LVDS FIFO Status path operating at 1/4 (or 1/8) of the data rate Provides DIP–4 and DIP–2 parity generation and verification Provides Sink and Source FIFO signals for resetting the FIFO without restarting the interface Optimized fixed pinouts to insure compliance with SPI-4.2 timing specifications Common pinout for static and dynamic alignment implementations Available under terms of the SignOnce IP License 0 SPI-4.2 Core v6.3 DS209 February 15, 2006 0 0 Product Specification LogiCORE TM Facts Core Specifics Supported Device Family Virtex™-II, Virtex-II Pro Core Performance Virtex-II Pro: Dynamic Phase Alignment 622–700 Mbps (-5 speed grade) 700–800 Mbps (-6 speed grade) 800–944 Mbps (-7 speed grade) Virtex-II Pro: Static Alignment Up to 700 Mbp/s (-5,-6,-7 speed grades) Virtex-II: Dynamic Phase Alignment 622–700 Mbps (-5 speed grade) 700–800 Mbps (-6 speed grade) Virtex-II: Static Alignment Up to 640 Mbps (-4 speed grade) Up to 700 Mbps (-5,-6 speed grade) Core Resources: Static Alignment Rx Tx Virtex-II Slices 2200 1900 Virtex-II Block RAM 8 6 Global Clock Buffers 2 (3) (2) 3 (4) (1) Digital Clock Managers (DCM) 1 2 Core Resources: Dynamic Alignment Rx Tx Virtex-II Slices 3100 1900 Virtex-II Block RAM 9 6 Global Clock Buffers 3 3 (4) (1) Digital Clock Managers (DCM) 1 2 Documentation SPI-4.2 Getting Started Guide SPI-4.2 to Quad SPI-3 Reference Design SPI-4.2 Clocking Design Example Design File Formats EDIF netlist Constraints File .ucf and.ncf Design Tool Requirements Xilinx Tools Xilinx ISE TM v8.1i SP1 or higher Support Support provided by Xilinx, Inc. at www.xilinx.com/support 1. If the performance required is greater than 700 Mbps, or the core is targeted to Virtex-II Pro, then the Source core requires four global clock buffers. 2. If the performance required is greater than 700 Mbps or the core is targeted to Virtex-II Pro, the Sink core requires 3 global clock buffers.

Upload: others

Post on 19-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

  • Features• Fully compliant with OIF-SPI4-02.1 System Packet

    Interface Level-4 (SPI-4) Phase 2 standard

    • Supports POS, ATM, and Ethernet 10 Gbps applications

    • Sink and Source cores selected and configured through Xilinx CORE Generator™ tool, providing easy customization

    • Supports Dynamic Phase Alignment full bandwidth ranging up to 944 Mbps

    • Delivers Sink and Source cores as independent solutions enabling flexible implementation

    • Provides optional 64– or 128–bit user interface supporting easy integration of back-end user logic

    • Supports 1 to 256 addressable channels with fully configurable SPI-4.2 calendar interface

    • Facilitates mux/demux and bridging functions with a Xilinx standard FIFO User Interface

    • Supports LVTTL and LVDS FIFO Status path operating at 1/4 (or 1/8) of the data rate

    • Provides DIP–4 and DIP–2 parity generation and verification

    • Provides Sink and Source FIFO signals for resetting the FIFO without restarting the interface

    • Optimized fixed pinouts to insure compliance with SPI-4.2 timing specifications

    • Common pinout for static and dynamic alignment implementations

    • Available under terms of the SignOnce IP License

    0

    SPI-4.2 Core v6.3

    DS209 February 15, 2006 0 0 Product Specification

    LogiCORETM Facts

    Core Specifics

    Supported Device Family Virtex™-II, Virtex-II Pro

    Core Performance

    Virtex-II Pro: Dynamic Phase Alignment

    622–700 Mbps (-5 speed grade)700–800 Mbps (-6 speed grade)800–944 Mbps (-7 speed grade)

    Virtex-II Pro: Static Alignment

    Up to 700 Mbp/s (-5,-6,-7 speed grades)

    Virtex-II: Dynamic Phase Alignment

    622–700 Mbps (-5 speed grade)700–800 Mbps (-6 speed grade)

    Virtex-II: Static Alignment

    Up to 640 Mbps (-4 speed grade)Up to 700 Mbps (-5,-6 speed grade)

    Core Resources: Static Alignment

    Rx Tx

    Virtex-II Slices 2200 1900

    Virtex-II Block RAM 8 6

    Global Clock Buffers 2 (3)(2) 3 (4)(1)

    Digital Clock Managers (DCM) 1 2

    Core Resources: Dynamic Alignment

    Rx Tx

    Virtex-II Slices 3100 1900

    Virtex-II Block RAM 9 6

    Global Clock Buffers 3 3 (4)(1)

    Digital Clock Managers (DCM) 1 2

    Documentation

    SPI-4.2 Getting Started GuideSPI-4.2 to Quad SPI-3 Reference Design

    SPI-4.2 Clocking Design Example

    Design File Formats EDIF netlist

    Constraints File .ucf and.ncf

    Design Tool Requirements

    Xilinx Tools Xilinx ISETM v8.1i SP1 or higher

    Support

    Support provided by Xilinx, Inc. at www.xilinx.com/support

    1. If the performance required is greater than 700 Mbps, or the core is targeted to Virtex-II Pro, then the Source core requires four global clock buffers.

    2. If the performance required is greater than 700 Mbps or the core is targeted to Virtex-II Pro, the Sink core requires 3 global clock buffers.

    DS209 February 15, 2006 www.xilinx.com 1Product Specification

    © 2006 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 feature, 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 warranties 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.comhttp:www.xilinx.com/legal.htmhttp://www.xilinx.com/legal.htmhttp://www.xilinx.com/legal.htmhttp://www.xilinx.com/support/services/contact_info.htmhttp://www.xilinx.com/ipcenter/signonce.htm

  • SPI-4.2 Core v6.3

    Table of ContentsFeatures ................................................................................................................................................................................1

    Applications ..........................................................................................................................................................................5

    Sink Core.............................................................................................................................................................................. 5

    Sink Data Path: SPI-4.2 Interface .......................................................................................................................................7

    Sink SPI-4.2 Data Path ................................................................................................................................................... 7

    Sink Data Path: User Interface .........................................................................................................................................12

    Sink Control and Status Signals ...................................................................................................................................12

    Sink FIFO Interface Signals .......................................................................................................................................... 14

    Sink Status Path and Flow Control.................................................................................................................................. 17

    Sink Calendar Initialization............................................................................................................................................ 18

    Sink Flow Control ..........................................................................................................................................................19

    Sink FIFO Status Interface: Example 1 .........................................................................................................................20

    Sink FIFO Status Interface: Example 2 .........................................................................................................................21

    Sink FIFO Status Interface: Example 3 .........................................................................................................................21

    Insertion of DIP-2 Errors ...............................................................................................................................................23

    Sink Static Configuration Signals ....................................................................................................................................24

    FifoAFMode and Sink Almost Full................................................................................................................................. 26

    Sink Synchronization Start-up ......................................................................................................................................... 28

    Sink Data Capture Implementation .................................................................................................................................. 29

    Dynamic Alignment ....................................................................................................................................................... 29

    Static Alignment ............................................................................................................................................................ 30

    Sink Clocking Implementation ......................................................................................................................................... 31

    Sink Core Operation.......................................................................................................................................................... 35

    Short Packet Support (Less Than 16-byte Packet Support) ......................................................................................... 35

    EOP Abort Handling...................................................................................................................................................... 36

    Loss of RDClk ............................................................................................................................................................... 36

    Sink FIFO Burst Error ................................................................................................................................................... 36

    Sink SPI-4.2 Bus Error and Sink Bus Error Status[7:0] ................................................................................................ 36

    Sequential Payload Control Words ............................................................................................................................... 37

    Sequential End-of-Burst Control Words........................................................................................................................ 37

    Sink DIP-4 Error Handling............................................................................................................................................. 37

    Reserved Control Words ...............................................................................................................................................38

    Source Core ....................................................................................................................................................................... 39

    Source Data Path: SPI-4.2 Interface................................................................................................................................. 41

    Source Data Path: User Interface..................................................................................................................................... 47

    Source Control and Status Signals ............................................................................................................................... 47

    Source FIFO Interface Signals...................................................................................................................................... 49

    Source Status Path and Flow Control ............................................................................................................................. 52

    Source Calendar Initialization ....................................................................................................................................... 53

    Source Flow Control: Addressable Status Interface ..................................................................................................... 53

    Source Flow Control: Transparent Status Interface ......................................................................................................57

    2 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Source Static Configuration Signals ............................................................................................................................... 60

    Source Burst Mode .......................................................................................................................................................60

    Source Synchronization Start-up..................................................................................................................................... 63

    Source Clocking Implementation .....................................................................................................................................64

    Master Clocking ............................................................................................................................................................65

    Slave Clocking .............................................................................................................................................................. 68

    Source Core Operation ..................................................................................................................................................... 69

    Source Behavior Before Synchronization ..................................................................................................................... 69

    Source Behavior After Synchronization ........................................................................................................................ 70

    EOP Abort Insertion ......................................................................................................................................................70

    Source Out of Frame ....................................................................................................................................................70

    Source DIP-2 Error Handling ........................................................................................................................................70

    Source Pattern Error Handling ......................................................................................................................................71

    Incorrect Burst Termination........................................................................................................................................... 71

    SPI-4.2 CORE Generator Interface ................................................................................................................................... 71

    Core Generator Parameters ......................................................................................................................................... 72

    Calendar COE File Format ...........................................................................................................................................81

    Constraining the Core....................................................................................................................................................... 81

    SPI-4.2 Design Example Constraints............................................................................................................................ 81

    Loopback Constraints ................................................................................................................................................... 81

    Sink Interface Constraints ............................................................................................................................................. 82

    Source Interface Constraints ........................................................................................................................................ 82

    Simulating and Implementing the Core........................................................................................................................... 82

    Functional Simulation.................................................................................................................................................... 82

    Generating a Simulation Model .....................................................................................................................................82

    Timing Simulation .........................................................................................................................................................83

    Synthesis of Example Design ....................................................................................................................................... 83

    Xilinx Tool Flow............................................................................................................................................................. 84

    Core Verification ................................................................................................................................................................85

    SPI-4.2 Hardware Verification....................................................................................................................................... 86

    Additional Documentation.................................................................................................................................................88

    Design Implementation ................................................................................................................................................. 88

    SPI-4.2 Getting Started Guide ......................................................................................................................................88

    SPI-4.2 Timing Budget Reference Guide ......................................................................................................................88

    References .........................................................................................................................................................................88

    Related Information ...........................................................................................................................................................88

    Ordering Information .........................................................................................................................................................88

    Appendix A: SPI-4.2 Control Word Format ..................................................................................................................... 89

    Appendix B: SPI-4.2 Calendar Programming ..................................................................................................................90

    Appendix C: Device and Package Support ..................................................................................................................... 90

    Revision History ................................................................................................................................................................ 92

    DS209 February 15, 2006 www.xilinx.com 3Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    ApplicationsThe SPI-4.2 (PL4) Interface core enables the interconnection of physical-layer devices to link-layer devices in 10 Gb/s POS,ATM, and Ethernet applications. The symmetric interface can be used to implement both the PHY and Link layer.

    Figure 1 shows the core being used in a typical link-layer application.

    Driven by the improved efficiencies and lower cost-per-Mbit of Packet-over-SONET/SDH, the core is ideally suited for linecards in gigabit routers, terabit, and optical cross-connect switches, and a wide range of multiservice DWDM andSONET/SDH-based transmission systems.

    The SPI4-02.1 interface is widely used to connect network processors with OC-192 framers and mappers, as well as Gigabitand 10-Gigabit Ethernet data link MACs. The Xilinx SPI-4.2 Interface is a high-performance, low-pin-count data transfer pro-tocol that is ideally suited for these applications.

    In addition to providing a fully compliant SPI-4.2 solution, Xilinx has collaborated with leading network device developerssuch as PMC-Sierra, Intel, and Mindspeed to ensure the Xilinx SPI-4.2 core interoperates with the latest industry PHYdevices.

    Sink CoreThe core has four primary functional blocks: (1) Sink FIFO, (2) SPI-4.2 Data Path, (3) SPI-4.2 Status Path, and (4) Calendarand Status Registers. The core also has a set of static configuration signals, which are used to customize the core. The inputand output signals and the functional blocks of the Sink core are illustrated in Figure 2. The interfaces to each of thesemodules and the available static configuration signals are described in detail below.

    Figure 1: SPI-4.2 Core in Typical Link Layer Application

    Virtex-II Device

    PL4 Source Core

    PL4Interface

    UserInterface

    PL4 PHY

    LayerDevice

    (Virtex-II

    orASSP)

    User’sLogic

    (Link Layer

    Processor)

    PL4 Sink Core

    UserSink

    Interface

    PL4Sink

    Interface

    Rx Data Path

    Rx Status Path

    Tx Data Path

    Tx Status Path

    UserSource

    Interface

    PL4Source

    Interface

    4 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Figure 2: Sink Core Block Diagram and I/O Interface Signals

    SPI-4.2 Sink Core

    Sink

    Interface

    RDClk

    RDat[15:0]

    Sink

    FIFO

    Interface

    Sink

    Status

    Interface

    RSClk

    RStat[1:0]

    SnkFFClk

    SnkFFRdEn_n

    SnkFFAddr[7:0]

    SnkFFData[63:0]

    SnkFFMod[2:0]

    SnkFFSOP

    SnkFFEmpty_n

    SnkFFErr

    SnkFFEOP

    SnkFFAlmostEmpty_n

    SnkStatClk

    SnkStatAddr[3:0]

    SnkCalClk

    SnkCalWrEn_n

    SnkCalAddr[8:0]

    SnkCalData[7:0]

    Status

    Registers

    Calendar

    SPI-4.2

    Sink

    Interface

    Sink FIFO

    Interface

    Sink FIFO

    Status

    Interface

    SnkTrainValid

    SnkFFDIP4Err

    SnkEn

    Sink Control

    and Status

    Sink Calendar

    Control

    RCtl

    SnkAlmostFull_n

    SnkBusErr

    Static Configuration Signals

    SnkFFValid

    SnkOverflow _n

    SnkOof

    SnkFFPayloadErr

    Reset_n

    SnkCalDataOut[7:0]

    SnkStat[31:0]

    SnkStatWrEn_n

    SnkStatMask[15:0]

    SnkFFPayloadDIP4

    SnkFFBurstErr

    SnkFifoReset_n

    SnkDIP2ErrRequest

    SnkBusErrStat[7:0]

    DS209 February 15, 2006 www.xilinx.com 5Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Data Path: SPI-4.2 InterfaceThe signals on the Sink SPI-4.2 Interface are defined in Table 1.

    Sink SPI-4.2 Data Path

    The SPI-4.2 datapath interface uses LVDS I/O buffers paired with double data rate (DDR) registers. The SPI-4.2 Sink coreruns up to 400 MHz LVDS DDR I/O (800 Mbp/s) in Virtex-II and up to 472 MHz (944 Mbp/s) in Virtex-II Pro.

    The 16-bit data words received on the SPI-4.2 Interface are combined into 64-bit or 128-bit data words by the SPI-4.2 core.This allows the user interface to run at a quarter (64-bit interface) or an eighth (128-bit interface) of the data rate (forexample, for a 700 Mbp/s SPI-4.2 data rate and a 128-bit user interface, the user can write data into the Source core at 87.2MHz).

    The resulting data words are written into an asynchronous FIFO. The received 16-bit control words are stored out of bandin the FIFO, along with the corresponding data word. The received control words that are not idle, or training words, cancontain the information listed below:

    • Start or continuation of the following packet

    • Link address of the following packet

    • End of the preceding packet

    • Number of valid bytes in the last word of the preceding packet

    • Error conditions in the preceding packet

    The assignment of each bit in the control word, as defined by the OIF SPI-4.2 specification, is detailed in Appendix A:SPI-4.2 Control Word Format.

    Sink Data Path: Example 1

    An example of the data received on the SPI-4.2 Interface and subsequently read on the user interface is shown in Figure 3.In this illustration, the first received control word (C1) is a payload resume (with no SOP) for channel 1 followed by two 16-bitwords (channel 1, packet A and packet B). The second control word (C2) is an EOP for channel 1 and a payload resume forchannel 2 (with no SOP) followed by two 16-bit words. The third control word (C3) is an EOP for channel 2 and an SOP forchannel 1 followed by three 16-bit words. The last control word (C4) is an EOP for channel 1.

    The data that is received on the SPI-4.2 Interface is processed and stored in the Sink FIFO. Figure 3 also shows the databeing read out of the FIFO and indicates, with forward slashes, that there is latency in processing and storing the SPI-4.2data. The first 64-bit word on the FIFO interface contains the two 16-bit words received for channel 1 with an EOP. Thesecond 64-bit word contains the two words received for channel 2 with an EOP. The last 64-bit word on the FIFO interfacecontains the three words written for channel 1. When the last word is read out of the FIFO, both the SnkFFSOP andSnkFFEOP for channel 1 are asserted.

    Table 1: Sink SPI-4.2 Interface Signals

    Signal Name DirectionClock

    DomainDescription

    RDClk_P

    RDClk_N

    Input n/a SPI-4.2 Receive Data Clock (LVDS): Source synchronous clock received with RDat and RCtl. The rising and falling edges of this clock (DDR) are used to clock RDat and RCtl.

    RDat_P[15:0]

    RDat_N[15:0]

    Input RDClk SPI-4.2 Receive Data Bus (LVDS): The 16-bit SPI-4.2 data bus used to receive data and control information.

    RCtl_P

    RCtl_N

    Input RDClk SPI-4.2 Receive Control (LVDS): SPI-4.2 Interface signal that indicates whether data or control information is present on the RDat bus. When RCtl is Low, data is present on RDat. When RCtl is High, control information is present on RDat.

    6 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Data Path: Example 2

    The Sink core automatically and optimally handles any size packet including short packets (less than eight cycles apart),which have multiple SOPs or payload control words.

    • Received SOPs less than eight cycles apart: the data will be passed through the core as received, and aSnkBusErr will be flagged indicating a protocol violation.

    • Received Payload Control words less than eight cycles apart: Though the SPI-4.2 specification requires thatsuccessive SOPs must occur not less than eight cycles apart, there is no restriction on payload control words, whichare not SOPs. The Sink core can processes single payload control words followed by single data words(CTL-DATA-CTL-DATA-CTL, etc.). Since this is not a protocol violation, no SnkBusErr is asserted.

    Figure 4 shows the transfer of short packets from the SPI-4.2 Interface through the Sink FIFO to the User Interface. Becauseeach of these packets contains less than 14 bytes, or seven clock cycles of data, idle control word insertion is necessary tomeet the start-of-packet spacing requirement of eight cycles. The transfer on the SPI-4.2 Interface begins with a payloadcontrol word (C1), indicating a start of packet (SOP) on channel 1. Next, two clock cycles, of two bytes each, are used totransfer the data associated with channel 1. The transfer concludes with an end-of-packet control word (C2). Because thetransfer is less than 14 bytes, four idle cycles are required to meet the SOP spacing requirement. After the four idle cycles,the transfer begins with a start-of-packet control word (C3) for channel 2. Next, three clock cycles, of two bytes each, areused to transfer the data associated with channel 2. The transfer concludes with an end-of-packet control word (C4).

    Figure 4 also shows the data being read out of the FIFO and indicates with forward slashes that there is latency inprocessing and storing the SPI-4.2 data. The first 64-bit word on the FIFO interface contains the four bytes of valid datareceived for channel 1. The control signals SnkFFSOP and SnkFFEOP are active, indicating that this is the start and end ofthe packet for channel 1. The second 64-bit word contains the six bytes of valid data for channel 2, and the control signalsSnkFFSOP and SnkFFEOP are both asserted.

    Figure 3: Sink Data Path — SPI-4.2 Interface to User Interface

    RDat_P

    RDClk_P

    RCtl_P

    1A 1B 2A 2B 1CC1 C3 C4C2 1A 1B

    CH1

    2A 2B -- --1A 1B -- --

    100100

    SnkFFClk

    SnkFFRdEn_n

    SnkFFAddr

    SnkFFData

    SnkFFMod

    SnkFFSOP

    SnkFFEOP

    CH2

    1A 1B 1C --

    110

    CH1

    SnkFFValid

    DS209 February 15, 2006 www.xilinx.com 7Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Table 2 shows an example of how the data and control received on the SPI-4.2 Interface is formatted and presented to theuser on the Sink FIFO Interface. (Note that control words are shown in binary and payload transfers are shown ashexadecimal.) After an SOP is received, the following 16-bit word transfer is left justified (for example, written to the mostsignificant 16 bits) into the data to be written into the FIFO (for a 64-bit interface: SnkFFDat[63:48], for a 128-bit interface:SnkFFDat[127:112]). The table shows the receipt of an SOP for channel 2, then a series of payload word transfers. TheDIP-4 parity depends on this control word and any proceeding transfer, and it is shown in the table as “pppp.”

    Following this example are tables that show the mapping between SPI-4.2 Control Words and packet status signals for a64-bit user interface (Table 3) and a 128-bit user interface (Table 4.).

    Figure 4: Sink Data Path — Short Packet Transfers with Minimum SOP Spacing Enforced

    Table 2: Example of Formatting SPI-4.2 Interface Data (RDat) for a 64-bit User Interface

    Data Received on the SPI-4.2 Interface

    (RDat [15:0])RCtl

    RDClkcycle

    Data Read from the Sink FIFO(SnkFFData[63:0])

    SnkFFClkcycle

    Control Bits Read fromthe Sink FIFO

    SOP

    b:[1001.0000.0010.pppp]

    1 1 N/A n N/A

    SPI-4.2 Word 0 (P0)

    F1E2

    0 2

    SPI-4.2 Word 1 (P1)

    D3C4

    0 3

    SPI-4.2 Word 2 (P2)

    B5A6

    0 4

    CH1

    1A 1B -- --

    100

    SnkFFClk

    SnkFFRdEn_n

    SnkFFAddr

    SnkFFData

    SnkFFMod

    SnkFFSOP

    SnkFFEOP

    RDat_P

    RDClk_P

    RCtl_P

    1A 1B I I I 2A 2B 2CI

    CH2

    2A 2B 2C --

    110

    I IC1 C3 C4C2

    8 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    SPI-4.2 Word 3 (P3)

    F9E8

    0 5 SnkFFData[63:0] =

    P0.P1.P2.P3 =

    [F1E2.D3C4.B5A6.F9E8]

    n + 1 SnkFFSOP = 1

    SnkFFEOP = 0

    SnkFFMod = 000

    SnkFFErr = 0

    SnkFFAddr = 00000010

    SPI-4.2 Word 4 (P4)

    1F2E

    0 6

    SPI-4.2 Word 5 (P5)

    3D4C

    0 7

    SPI-4.2 Word 6 (P6)

    5B6A

    0 8

    SPI-4.2 Word 7 (P7)

    9F8E

    0 9 SnkFFData[63:0] =

    P4.P5.P6.P7 =

    [1F2E.3D4C.5B6A.9F8E]

    n + 2 SnkFFSOP= 0

    SnkFFEOP = 0

    SnkFFMod = 000

    SnkFFErr = 0

    SnkFFAddr = 00000010

    SPI-4.2 Word 8 (P8)

    ABCD

    0 10

    SPI-4.2 Word 9 (P9)

    1200

    0 11

    EOP / MOD

    b:[0110.aaaa.aaaa.pppp]

    1 12

    SnkFFData[63:0] =

    P8.P9 =

    [ABCD.1200.0000.0000]

    n + 3 SnkFFSOP= 0

    SnkFFEOP = 1

    SnkFFMod = 011

    SnkFFErr = 0

    SnkFFAddr = 00000010

    Table 3: SPI-4.2 Control Word Mapping to 64-bit User Interface

    Control WordAssociated SPI-4.2 Control

    Word bits on RDat(Qualified by RCtl=1)

    Associated Sink FIFO Signals

    Start of Packet (SOP) RDat[15] = 1, RDat[12] = 1 SnkFFSOP,SnkFFAddr[7:0]

  • SPI-4.2 Core v6.3

    End of Packet (EOP, 2 bytes valid) RDat[14:13] = 10 SnkFFEOP, SnkFFMod[2:0]

    When RDat[14:13] = 10:

    Mod = 000 if data bits 63-0 have valid data

    Mod = 110 if data bits 63-16 have valid data

    Mod = 100 if data bits 63-32 have valid data

    Mod = 010 if data bits 63-48 have valid data

    End of Packet (EOP, 1 bytes valid) RDat[14:13] = 11 SnkFFEOP, SnkFFMod[2:0]

    When RDat[14:13] = 11:

    Mod = 111 if data bits 63-8 have valid data

    Mod = 101 if data bits 63-24 have valid data

    Mod = 011 if data bits 63-40 have valid data

    Mod = 001 if data bits 63-56 have valid data

    End of Packet

    (EOP Abort, error condition)

    RDat[14:13] = 01 SnkFFErr & SnkFFEOP

    Table 4: SPI-4.2 Control Word Mapping to 128-bit User Interface

    Control WordAssociated SPI-4.2 Control

    Word bits on RDat(Qualified by RCtl=1)

    Associated Sink FIFO Signals

    Start of Packet (SOP) RDat[15] = 1, RDat[12] = 1 SnkFFSOP,SnkFFAddr[7:0]

  • SPI-4.2 Core v6.3

    Sink Data Path: User InterfaceThe Sink User Interface includes all the signals to the core other than those on the SPI-4.2 Interface (See "Sink Data Path:SPI-4.2 Interface" on page 6) or the Status Interface (See "Sink Status Path and Flow Control" on page 16). The userinterface can operate up to 200 MHz in Virtex-II or up to 236 MHz in Virtex-II Pro with a 64-bit data interface. The Sink coresalso supports a 128-bit user interface that can run up to 75% the speed of the 64-bit interface, and enables the user to runthe back-end logic at half the rate required by the 64-bit interface. The high performance supported on the Sink back-endenables the user interface to run at higher frequencies than the SPI-4.2 Interface. This is sometimes required if a largepercentage of the traffic consists of small packets.

    The user interface has three major sections:

    • Control and status signals. These signals apply to the operation of the entire Sink core.

    • FIFO interface signals. These signals allow the user to access the data received on the SPI-4.2 Interface.

    • Flow Control Interface. These signals are used to send flow control information on the SPI-4.2 Interface.

    Each of these user interface sections are presented in detail below.

    Sink Control and Status Signals

    The Sink core control and status signals either control the operation of the entire Sink core or provide status information thatis not associated with a particular channel (port) or packet. The description of these signals is summarized in Table 5.

    End of Packet (EOP, 2 bytes valid) RDat[14:13] = 10 SnkFFEOP, SnkFFMod[2:0]

    When RDat[14:13] = 10:

    MOD = 0000 if data bits 127-0 have valid data

    MOD =1110 if data bits 127-16 have valid data

    MOD =1100 if data bits 127-32 have valid data

    MOD = 1010 if data bits 127-48 have valid data

    MOD = 1000 if data bits 127-64 have valid data

    MOD = 0110 if data bits 127-80 have valid data

    MOD = 0100 if data bits 127-96 have valid data

    MOD = 0010 if data bits 127-112 have valid data

    End of Packet (EOP, 1 bytes valid) RDat[14:13] = 11 SnkFFEOP, SnkFFMod[2:0]

    When RDat[14:13] = 11:

    MOD = 1111 if data bits 127-8 have valid data

    MOD = 1101 if data bits 127-24 have valid data

    MOD = 1011 if data bits 127-40 have valid data

    MOD = 1001 if data bits 127-56 have valid data

    MOD = 0111 if data bits 127-72 have valid data

    MOD = 0101 if data bits 127-88 have valid data

    MOD = 0011 if data bits 127-104 have valid data

    MOD = 0001 if data bits 127-120 have valid data

    End of Packet

    (EOP Abort, error condition)

    RDat[14:13] = 01 SnkFFErr & SnkFFEOP

    Table 4: SPI-4.2 Control Word Mapping to 128-bit User Interface (Continued)

    Control WordAssociated SPI-4.2 Control

    Word bits on RDat(Qualified by RCtl=1)

    Associated Sink FIFO Signals

    DS209 February 15, 2006 www.xilinx.com 11Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    The Sink core is reset asynchronously by the signal Reset_n and there are three global status signals:

    • Sink Out-of-Frame (SnkOof) is asserted Active High whenever the core loses synchronization with the SPI-4.2interface.

    • Sink Bus Error Status (SnkBusErrStat[7:0]) is asserted Active High when a SPI4-2 protocol violation or an errorthat is not associated to one particular data packet occurs. Each bit of the SnkBusErrStat bus corresponds to one ofthe following detected conditions:

    - SnkBusErrStat[0]: Minimum SOP spacing was violated.

    - SnkBusErrStat[1]: Sequential control words with EOP is received. (EOP followed immediately by another EOP)

    - SnkBusErrStat[2]: Sequential payload control words are received. (A payload control word is followedimmediately by another payload control word.)

    - SnkBusErrStat[3]: DIP-4 error received during idles or raining patterns.

    - SnkBusErrStat[4]: Reserved control words received.

    - SnkBusErrStat[7:5]: Tied to zero.

    If the core receives two (or more) back-to-back payload control words, the last one received is used, the others are dis-carded. If the cores receives two (or more) EOPs back-to-back, the first one is used, and the others are discarded. For moreinformation see "Sink Core Operation" on page 34.

    • Sink Bus Error (SnkBusErr) is asserted Active High when any of the error conditions that flags the Sink Bus ErrorStatus bus is triggered. SnkBusErr is triggered concurrently with SnkBusErrStat.

    • Sink Training is Valid (SnkTrainValid) is asserted Active High when valid training data is received. The behavior ofthis signal is illustrated in the timing diagram in Figure 5. As is shown, the SnkTrainValid signal is driven High for theduration of a complete training pattern after it has successfully been received.

    Figure 5: Sink Training Valid Status

    Table 5: Sink Control and Status Signals

    Signal Name DirectionClock

    DomainDescription

    Reset_n Input n/a Reset: Active Low signals that asynchronously initializes internal flip-flops, registers, and counters. When Reset_n is asserted, the Sink core will go out of frame and the entire data path is cleared (including the FIFO). The Sink core will also assert SnkOof, and deassert SnkBusErr and SnkTrainValid. When Reset_n is asserted, the Sink core will transmits framing "11" on RStat and continue to drive RSClk.

    SnkFifoReset_n Input SnkFFClk Sink FIFO Reset: This Active Low signal enables the user to reset the Sink FIFO and the associated data path logic. This enables the FIFO to be cleared while remaining in frame.

    Coming out of SnkFifoReset_n, the Sink core will wait until a SOP control word is received to begin writing data into the FIFO.

    Training Control Training DataIdle Training DataMultiple Training

    Patterns

    RdClk

    SnkFFClk

    RDat

    SnkTrainValid

    000F 0FFF F000 F0000FFF

    12 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink FIFO Interface Signals

    The Sink FIFO Interface signals allow the user to access the data (received on the SPI-4.2 Interface) that is stored in theFIFO. The description of each of these signals is summarized in Table 6. The information on signals SnkFFData,SnkFFAddr, SnkFFSop, SnkFFEop, SnkFFMod, SnkFFErr, SnkFFDIP4Err, SnkFFPayloadErr, SnkFPPayloadDIP4and SnkFFBurstErr is qualified by the assertion of SnkFFValid. Waveforms illustrating the handshaking and FIFO statussignals are given in Figure 6 and Figure 7. The Sink FIFO Interface signals are synchronous to SnkFFClk, and the FIFO is512 words deep. Each FIFO word can contain up to one credit (16-bytes) of data from a single packet.

    Sink FIFO Almost Empty

    The behavior of the Almost-Empty (SnkFFAlmostEmpty_n) status signal is illustrated in Figure 6. As is shown in thiswaveform, the almost-empty flag is asserted with the second to last word read out of the FIFO. When this signal is true(active low), it indicates that one word remains in the FIFO, and the user should deassert the read enable signal on the nextclock cycle. The Sink FIFO read logic should then evaluate the SnkFFEmpty_n signal to verify that there is no data in theFIFO in case an additional word was simultaneously written into the FIFO. An example of this interface is provided with the

    SnkEn Input SnkStatClk Sink Enable: Active High signal that enables the Sink core. When SnkEn is deasserted, the Sink core will go out of frame and will not store any additional data into the FIFO. The current contents of the FIFO remain intact.

    The Sink core will also assert SnkOof, and deassert SnkBusErr and SnkTrainValid. When SnkEn is deasserted, the Sink core will transmits framing "11" on RStat and continue to drive RSClk.

    SnkOof Output SnkFFClk Sink Out-of-Frame: Active High signal that indicates that the SPI-4.2 Sink block is not in frame. This signal is set when the Sink block loses synchronization with the data received on the SPI-4.2 Interface. This signal is negated once the Sink block reacquires synchronization with the received SPI-4.2 data.

    SnkBusErr Output SnkFFClk Sink Bus Error: Active High signal is an error indication thatflags SPI-4.2 protocol violations or bus errors that are notassociated with a particular data packet. For more informationsee "Sink Core Operation" on page 34. The specific errorcondition that caused the SnkBusErr assertion can be read fromSnkBusErrStat.

    SnkBusErrStat[7:0] Output SnkFFClk Sink Bus Error Status: Individual bits of this bus correspond to a specific Sink Bus Error condition and is asserted concurrently with SnkBusErr. The error conditions detected are flagged as follows:

    SnkBusErrStat[0]: Minimum SOP spacing violation.SnkBusErrStat[1]: Sequential control words with EOP receivedSnkBusErrStat[2]: Sequential payload control words received.SnkBusErrStat[3]: DIP-4 error received during Training or on Idles.SnkBusErrStat[4]: Reserved control words received.SnkBusErrStat[7:5]: Always tied to zero.

    SnkTrainValid Output SnkFFClk Sink Training Valid: Active High signal that indicates that a valid training pattern has been received. This signal is held Active for the duration of the training pattern (20 SPI-4.2 bus clock cycles), if the training pattern received is successfully decoded.

    Table 5: Sink Control and Status Signals (Continued)

    Signal Name DirectionClock

    DomainDescription

    DS209 February 15, 2006 www.xilinx.com 13Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    SPI-4.2 core in the Design Example (see the pl4_fifo_loopback_read.v/vhd file.) This example also illustrates theSink FIFO Valid signal, which is asserted while there is valid data on the data bus.

    Sink FIFO Empty

    The behavior of the Empty (SnkFFEmpty_n) status signal is illustrated in Figure 7. As shown in the waveform, the emptyflag is asserted with the last word read out of the FIFO. In this example, the Almost-Empty flag is asserted prior to a readaccess being initiated. In this case, there is one data word remaining in the FIFO. To access this word, the user asserts theSink FIFO Read Enable signal for one cycle.

    Sink Almost Full

    The behavior of Sink Almost Full flag is dependent on the static configuration signals SnkAFThresAssert andSnkAFThresNegate. When the SnkAlmostFull_n flag is asserted SnkAFThresAssert specifies the number of emptyFIFO locations available. Each FIFO location can contain up to one credit (16 bytes) worth of data from a single packet. TheSnkAFThresNegate specifies when the SnkAlmostFull_n flag is deasserted.

    The number of bytes that can be written into the SPI-4.2 sink interface after the Sink Almost Full flag is asserted dependsthe received packet sizes, data patterns, and the operations occurring on the sink user interface. Hence it is advised thatusers configure the SnkAFThresAssert value based on their system requirements.

    The following is an example of how to choose a SnkAFThresAssert value. It is assumed that the packets received on theSPI-4.2 interface prior to the assertion SnkAlmostFull_n flag are credit multiples and are not interleaved by idles ortraining patterns. The SnkFFClk is connected to RDClkDiv_GP. A user wants the capability to write 16 credits into theSPI-4.2 interface after the SnkAlmostFull_n flag is asserted and not have the Sink core overflow. For this traffic pattern,the customer must add 12 to the SnkAFThresAssert value to compensate for the data that is received by the Sink core buthas not been written into the FIFO. Hence he needs to set this SnkAFThresAssert value to 28. This will ensure that onceSnkAlmostFull_n is asserted, the Sink core will not overflow if 16 credits are written into the SPI-4.2 sink interface.

    "FifoAFMode and Sink Almost Full" on page 25 describes the behavior of the Sink FIFO interface when the sink almost flagis asserted.

    Figure 6: Sink FIFO Almost Empty

    Figure 7: Sink FIFO Empty

    SnkFFData

    SnkFFRdEn_n

    SnkFFClk

    SnkFFAlmostEmpty_n

    SnkFFValid

    SnkFFEmpty_n

    SnkFFData

    SnkFFRdEn_n

    SnkFFClk

    SnkFFAlmostEmpty_n

    SnkFFValid

    SnkFFEmpty_n

    14 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Table 6: Sink FIFO Interface Signals

    Signal Name Direction Description

    SnkFFClk Input Sink FIFO Clock: All Sink FIFO Interface signals are synchronous to the rising edge of this clock.

    SnkFFRdEn_n Input Sink FIFO Read-Enable: When detected low at the rising edge of SnkFFClk, data and status information is read out of the FIFO on the next rising edge of SnkFFClk.

    SnkFFAddr[7:0] Output Sink FIFO Channel Address: Channel number associated with the data on SnkFFData.

    SnkFFData[63:0]

    or

    SnkFFData[127:0]

    Output Sink FIFO Data Out: The data read from the Sink FIFO. Bit 0 is the LSB.

    The core can be configured to have a 64-bit or 128-bit User Interface. The 128-bit interface enables the user to run at half the clock rate required for a 64-bit interface.

    SnkFFMod[2:0]

    or

    SnkFFMod[3:0]

    Output Sink FIFO Modulo: These signals indicate which bytes on the SnkFFData bus are valid when the SnkFFEOP signal is asserted.

    SnkFFMod[2:0] is used with a 64-bit interface.

    SnkFFMod[3:0] is used with a 128-bit interface.

    See Table 3 on page 9 and Table 4 on page 10 for bit mapping.

    SnkFFSOP Output Sink FIFO Start of Packet: When set (Active High), this signal indicates the start of a packet is being read out of the Sink FIFO.

    SnkFFEOP Output Sink FIFO End of Packet: When set (Active High), this signal indicates that the end of a packet is being read out of the Sink FIFO.

    SnkFFErr Output Sink FIFO Error: When set (Active High), this signal indicates that the current packet is terminated with an EOP abort condition. This signal is valid only when SnkFFEOP is asserted.

    SnkFFEmpty_n Output Sink FIFO Empty: When set (Active Low), this signal indicates that the Sink FIFO is empty, and no more data can be read until it is deasserted. This signal is asserted with the last data word read out of the FIFO.

    SnkFFAlmostEmpty_n Output Sink FIFO Almost Empty: When this signal is true (Active Low), it indicates that one word (64-bits or 128-bits) remains in the FIFO, and the user should deassert the read enable signal on the next clock cycle. The Sink FIFO Read logic should then evaluate the SnkFFEmpty_n signal to verify that there is no data in the FIFO in case an additional word was simultaneously written into the FIFO. An example of this interface is provided with the SPI-4.2 core in the Design Example (see the pl4_fifo_loopback_read.v/vhd file).

    SnkFFValid Output Sink FIFO Read Valid: When true (Active High), this signal indicates that the information on SnkFFData, SnkFFAddr, SnkFFSOP, SnkFFEOP, SnkFFMod, SnkFFErr, SnkFFDIP-4Err, SnkFFPayloadErr, SnkFFPayloadDIP4, and SnkFFBurstErr are valid.

    SnkFFDIP-4Err Output Sink FIFO DIP-4 Error: When set (Active High), this signal indicates that a DIP-4 parity error was detected with the SPI-4.2 control word ending the current burst or packet of data. The DIP-4 error is stored in the FIFO, along with the preceding packet or burst of data. This provides the user information regarding which channel and burst/packet of data preceded the DIP-4 error. For more details see "Sink Core Operation" on page 34.

    DS209 February 15, 2006 www.xilinx.com 15Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Status Path and Flow ControlThe Sink FIFO Status Channel interface enables the user to send flow control data on the SPI-4.2 Interface. The channelorder and frequency that the status is sent is programmed by the user in a calendar. A two-bit register is provided for eachlocation in the calendar to store the channel status information (hungry=01, starving=00, satisfied=10). Figure 8 illustrateshow the calendar information is retrieved to determine the order and frequency that a particular channel’s FIFO Statusinformation is transmitted on RStat. A detailed description of the calendar interface and the FIFO Status interface isprovided below and a summary of the Sink Status Path signals and their definitions is provided in Table 7.

    SnkFFPayloadDIP-4 Output Sink FIFO Payload DIP-4 Error: When true (Active High), this signal indicates that a DIP-4 error occurred with the SPI-4.2 control word starting the next packet or burst of data. The signal is asserted at the end of that packet or burst of data. For more details see "Sink Core Operation" on page 34.

    SnkFFBurstErr Output Sink FIFO Burst Error: When true (Active High), this signal indicates when the Sink core has received data that stops on a non-credit boundary without an EOP. SnkFFBurstErr may be used by the user’s logic to indicate missing EOPs, or incorrectly terminated bursts. In this case the Sink core does not assert SnkFFEOP or SnkFFErr. For more details see "Sink Core Operation" on page 34.

    SnkFFPayloadErr Output Sink FIFO Payload Error: When set (Active High), this signal indicates that data was received without a valid payload control word preceding it. Since it is not a payload control word and it is not clear what the packet Address and SOP should be, it is flagged as an error. This is asserted High with each data word coming out of the FIFO, and will remain High until a valid payload “control word - data sequence” is received. For more details see "Sink Core Operation" on page 34.

    SnkAlmostFull_n Output Sink Almost Full: When true (Active Low), this signal indicates that the Sink core is approaching full (as defined by the parameter SnkAFThresAssert), and that immediate action should be taken to prevent overflow.

    SnkOverflow_n Output Sink Overflow: When true (Active Low), this signal indicates that the Sink core has overflowed and is in an error condition. Data will be lost if SnkOverflow_n is asserted, since no more data will be written into the FIFO until it is not in an overflow state.

    Table 6: Sink FIFO Interface Signals (Continued)

    Signal Name Direction Description

    16 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Figure 8: FIFO Status Calendar and Status Memory Block Diagram

    Sink Calendar Initialization

    At start-up, the circuitry provided by the user programs the Sink Calendar buffer by first de-asserting Sink Enable (SnkEn),then using the calendar write enable, address bus, and data bus. SnkCalAddr is used to indicate the location in thecalendar buffer, and SnkCalData is used to indicate the channel number that should be written into that location. Whenoutputting RStat, the status for the channel written to SnkCalAddr=0 is output first, followed by SnkCalAddr=1, etc., untilthe end of the Calendar is reached, as defined by SnkCalendar_Len.

    The waveform in Figure 9 illustrates the programming of the Sink Calendar. In this example, SnkCalendar_Len is set tofive and SnkCalendar_M is set to zero (indicating that the calendar length is six, and should be repeated once). This meansthat the Sink Calendar will be expected to drive the FIFO Status Channel data (onto the SPI-4.2 bus) in the followingsequence: status for channel 3, status for channel 0, status for channel 1, status for channel 2, status for channel 3, andstatus for channel 0.

    Status Memory

    0 1 2 3 4 5 6 7

    8 9 10 11 12 13 14 15

    248 249 250 251 252 253 254 255

    15

    247

    . . .

    . . .

    Sink FIFO

    StatusInterface

    Sink Calendar

    Control

    SnkStatClk

    SnkStatAddr[3:0]

    SnkStat[31:0]

    SnkStatWrEn_n

    SnkStatMask[15:0]

    SnkCalClk

    SnkCalWrEn_n

    SnkCalAddr[8:0]

    SnkCalData[7:0]

    SnkCalDataOut[7:0]

    Calendar RAM

    .

    .

    .

    0

    1

    2

    3

    4

    5

    509

    510

    511

    SnkCalendar_M

    SnkCalendar_Len

    RSTAT[1:0]

    SnkStatAddr = 0

    Bank 0: Ch 0-15

    DS209 February 15, 2006 www.xilinx.com 17Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    To verify what has been programmed into the calendar buffer, the user can read the contents using the Sink Calendar DataOut bus (SnkCalDataOut[7:0]). When the calendar write enable signal is deasserted, the data stored in the locationspecified by the calendar address is driven onto the SnkCalDataOut bus. See “Appendix B: SPI-4.2 CalendarProgramming” for more examples on programming the SPI-4.2 Calendar.

    Sink Flow Control

    There are two typical ways to implement the SPI-4.2 Sink flow control:

    • Automatic. For a single channel system or a system that does not require flow control on a per-channel basis, the SPI4.2 Sink core can be configured to perform flow control automatically.

    • Manual. If per-channel flow control is required, then the core enables the user to fully customize the interface. A typical implementation is shown in Figure 10. In this case, external FIFOs are used to provide additional per-channel storage and to facilitate per-channel flow control. A programmable full indication on the user’s individual FIFOs can be used to drive the status interface of the Sink core. This gives the user flexibility in implementing the optimal flow control for their system requirements.

    - If implementing large channel solutions, the user’s individual FIFOs may be shared by sets of channels oralternative approaches may be implemented that enable minimizing the external logic required.

    The Sink FIFO Status interface has a 32-bit bus for all channel configurations (e.g., whether the core is configured for fourchannels or 128 channels or 256 channels). This allows the user to write the FIFO Status Channel data for 16 channels ata time. There are four address lines for selecting which 16 channels the user is accessing. (Note that for systems using 1-16channels, the address lines are permanently set to zero.) The latency between the User Interface and SPI-4.2 Interface forthe Sink Status Path is seven RSClk cycles and one SnkStatClk cycle.

    The user can write the status for 16 channels each clock cycle. The SnkStatAddr bus is used to select which 16 channelsare written, and the core supports configurations of 1-256 channels. The 16 channels of FIFO Status that are written areaddressed as follows:

    • Bank 0: SnkStatAddr[3:0]=0 for channels 15 to 0

    • Bank 1: SnkStatAddr[3:0]=1 for channels 31 to 16

    • Bank 2: SnkStatAddr[3:0]=2 for channels 47 to 32

    • Bank 3: SnkStatAddr[3:0]=3 for channels 63 to 48

    • ...

    • Bank 14: SnkStatAddr[3:0]=14 for channels 239 to 224

    • Bank 15: SnkStatAddr[3:0]=15 for channels 255 to 240

    The status that is written is mapped to the 16-bit bus as follows:

    For Bank 0: SnkStatAddr[3:0]=0

    • SnkStat[1:0] => Channel 0, where SnkStat[1] is the MSB of the 2-bit status

    • SnkStat[3:2] => Channel 1

    Figure 9: Sink Calendar Initialization

    SnkCalendar_M

    SnkCalendar_Len

    SnkCalClk

    SnkCalWrEn_n

    SnkCalAddr[8:0]

    SnkCalData[7:0]

    0x00 0x01 0x02 0x03

    CH3 CH0 CH1 CH2

    SnkCalDataOut[7:0]

    0x04 0x05

    CH3 CH0

    CH3 CH0 CH1

    0x00 0x01 0x02 0x03

    SnkCalendar_M=0 (0000.0000)

    SnkCalendar_Len=5 (0.0000.0101)

    18 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    • SnkStat[5:4] => Channel 2

    • ...

    • SnkStat[11:10] => Channel 13

    • SnkStat[13:12] => Channel 14

    • SnkStat[15:14] => Channel 15

    Figure 10: Typical Flow Control Implementation for 4-Channel System

    Sink FIFO Status Interface: Example 1

    This example illustrates writing to the FIFO Status Interface for a 10-channel SPI-4.2 Sink core, as shown in Figure 11. Asthere are fewer than 17 channels, the Sink Status Address bus (SnkStatAddr[3:0]) is permanently tied to zero. In thisexample, the mask functionality is utilized to indicate that only 10 channels have valid status. The mask can change fromclock cycle to clock cycle, but in this illustration it is fixed (SnkStatMask= 0x03FF).

    The Sink Status Write signal (SnkStatWr_n) is used to write status values to be transmitted on the SPI-4.2 Interface in theorder specified by the calendar buffer. The status written in this example is as follows (note that the status data onSnkStat[31:0] is represented in hexadecimal):

    Write Cycle Staving Status Satisfied Status

    0,1,2,3 0-9 none

    4 1-9 0

    5 1,2, 4-9 0,3

    6-7 4-9 0,1,2,3

    8 0 1-9

    FIFO

    Channel 0

    FIFOChannel 1

    FIFO

    Channel 2

    FIFOChannel 3

    Sink Core

    FIFO

    Status I/F

    SPI-4.2Interface

    UserInterface

    MU

    X

    Status:

    StarvingHungry

    Satisfied

    Flow ControlProgrammable

    Full

    DS209 February 15, 2006 www.xilinx.com 19Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink FIFO Status Interface: Example 2

    This example illustrates writing to the FIFO Status Interface for a 64-channel SPI-4.2 Sink core, as shown in Figure 12. Towrite the status for 64 channels, the user must address the following four banks depending on the status of the channel thatis being updated:

    • Bank 0: SnkStatAddr[3:0]= 0000, for channels 15 to 0

    • Bank 1: SnkStatAddr[3:0]= 0001, for channels 31 to 16

    • Bank 2: SnkStatAddr[3:0]= 0010, for channels 47 to 32

    • Bank 3: SnkStatAddr[3:0]= 0011, for channels 63 to 48

    In the example shown in Figure 12, the mask (SnkStatMask[15:0]) is used to update only the channels for which FIFOstatus has changed. The status written in this example is as follows:

    Sink FIFO Status Interface: Example 3

    Example 3 illustrates status received on the user interface and written to the SPI-4.2 bus. Figure 13 shows an RStatwaveform for a calendar length of four (SnkCalendar_Len=3) and calendar repetition value of one (SnkCalendar_M=0).

    Figure 11: Sink FIFO Status Interface Example 1: 10-channel configuration

    Write Cycle Status Address Status Mask Staving Status Satisfied Status

    0-1 Bank 0 1111.1111.1111.1111 CH 0-15 none

    2 Bank 0 0000.0000.0000.0001 none CH 0

    3 Bank 1 1000.0000.0000.0000 none CH 31

    4-5 Bank 2 1111.1111.1111.1111 CH 32-47 none

    6-7 Bank 3 1111.1111.1111.1111 CH 48-63 none

    8-9 Bank 0 1111.0000.0000.0000 none CH 12-15

    Figure 12: Sink FIFO Status Interface Example: 64-channel Configuration

    SnkStatClk

    SnkStatMask[15:0]

    SnkStatAddr[3:0]

    BINARY

    BINARY

    SnkStat[31:0] HEX 0000.00AA

    SnkEn

    SnkStatWr_n

    0000.0000

    0000.0011.1111.1111

    0000

    Write 0 Write 1 Write 2 Write 3 Write 4 Write 5 Write 6 Write 7 Write 8

    000A.AAA80000.00820000.0002

    SnkStatClk

    SnkStatMask[15:0]

    SnkStatAddr[3:0]

    BINARY

    0000BINARY 0001 0010 0011

    SnkStat[31:0] HEX 0000.0000

    SnkEn

    SnkStatWr_n

    0000

    0000.0000

    1111.0000.0000.0000

    Write 0 Write 1 Write 2 Write 3 Write 4 Write 5 Write 6 Write 7 Write 8

    0000.0000.0000.0001

    8000.00000000.0002

    1111.1111.1111.1111 1111.1111.1111.1111

    AA00.0000

    1000.0000.0000.0000

    20 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Note that FIFO status information is periodic, repeating the sequence of a framing pattern (11), a repeated set of FIFOstatus words (SnkCalendar_M + 1 times) in accordance with the programmed calendar order, and a DIP-2 value. Theprogrammed calendar sequence is channel 0, 1, 2, 3, and the following RStat[1:0] sequence is illustrated:

    • Sequence #: CH0, CH1, CH2, CH3

    • Sequence 1: 10, 00, 00, 00

    • Sequence 2: 10, 00, 10, 10

    • Sequence 3: 10, 10, 10, 10

    Figure 13: Sink Status Path — User Interface to SPI-4.2 Interface

    Table 7: Sink Status Interface Signals

    Signal Name DirectionClock

    DomainDescription

    RSClk Output n/a SPI-4.2 Receive Status Clock: Source synchronous clock transmitted with RStat at 1/4 (or 1/8) rate of the RDClk. The rate of the status clock is controlled by the static configuration signal RSClkDiv. The user can select this signal to be either LVTTL or LVDS when the core is instantiated.

    RStat[1:0] Output RSClk SPI-4.2 Receive FIFO Status: FlFO-Status-Channel flow control interface. The user can select this bus to be either LVTTL or LVDS when the core is instantiated.

    SnkStatClk Input n/s Sink Status Clock: All Sink Status write signals are synchronous to this clock.

    SnkStat[31:0] Input SnkStatClk Sink Status Bus: This 32-bit bus is used to access the FIFO Status of 16-channels at a time. The user can write the status for 16 channels each clock cycle.

    The 16-channel status that are accessed simultaneously are grouped in the following manner: channels 15 to 0, channels 31 to 16, channels 47 to 32, . . . , channels 255 to 239.

    SnkDIP2ErrRequest Input SnkStatClk Sink DIP-2 Error Request: This is an Active High signal that requests an incorrect DIP-2 to be sent out of the RStat bus. The Sink FIFO Status logic will respond by inverting the next DIP-2 value that it sends.

    SnkCalendar_M

    SnkCalendar_Len

    SnkStatClk

    SnkStat[31:0] 0x00000002 0x000000A2

    SnkStatAddr[3:0] 0000

    SnkStatMask[15:0]

    SnkStatWr_n

    0000.0000.0000.1111

    0x000000AA

    0 = 0000 0000

    3 = 0 0000 0011

    RSClk

    RStat 0011 10 11 10 10 11 10DIP 00 DIP DIP 11

    DS209 February 15, 2006 www.xilinx.com 21Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Insertion of DIP-2 ErrorsThe Sink core enables the user to force the insertion of DIP-2 errors for use during system testing and debugging. This issupported by utilizing the SnkDIP2ErrRequest signal. When, SnkDIP2ErrRequest is asserted, the next DIP-2 value issent on RStat will be erred. The erroneous DIP-2 value is an inversion of the correctly calculated DIP-2.

    SnkStatAddr[3:0] Input SnkStatClk Sink Status Address bus: The Sink Status Address determines which group of 16-channel status that SnkStat will be updating.

    Bank 0: SnkStatAddr=0 channels 15 to 0

    Bank 1: SnkStatAddr=1, channels 31 to 16

    Bank 2: SnkStatAddr=2, channels 47 to 32

    . . .

    Bank 15: SnkStatAddr=15 channels 255 to 239

    SnkStatWr_n Input SnkStatClk Sink Status Write: The Sink Status Write qualifies the SnkStatMask signal. When SnkStatWr_n is asserted (Active Low), status for the different channels may be updated. When SnkStatWr_n is deasserted (Active High), SnkStat input will not be updated.

    SnkStatMask[15:0] Input SnkStatClk Sink Status Mask Bus: The Sink Status Mask determines which 2-bit status among the 16 channels on SnkStat will be updated if SnkStatWr_n is asserted (Active Low):

    SnkStatMask[x] = 1, status for channel x will be updated.

    SnkStatMask[y] = 0, status for channel y will not be updated.

    For example, if SnkStatMask[15] = 0, then SnkStat[31:0] = 00 will hold its current value.

    If SnkStatMask are all zeros, none of the sixteen 2-bit status will be updated. If SnkStatMask are all ones, all sixteen of the 2-bit status will be updated.

    SnkCalClk Input n/a Sink Calendar Clock: All Sink calendar signals are synchronous to this clock.

    SnkCalWrEn_n Input SnkCalClk Sink Calendar Write Enable: When this signal is true (active low), the Sink Calendar is loaded with the data on the SnkCalData bus on the rising edge of SnkCalClk. When the signal is false, the Sink Calendar is read on SnkCalDataOut.

    SnkCalAddr[8:0] Input SnkCalClk Sink Calendar Address Bus: This bus contains the address to write the calendar number indicated on the SnkCalData bus when SnkCalWrEn_n is asserted.

    SnkCalData[7:0] Input SnkCalClk Sink Calendar Data Bus: This bus contains the “channel number” to write into the calendar buffer when SnkCalWrEn_n is enabled. The channel numbers written into the calendar indicates the order that status will be sent on RStat.

    SnkCalDataOut[7:0] Output SnkCalClk Sink Calendar Data Output Bus: This bus contains the “channel number” that is read from the calendar buffer when SnkCalWrEn_n is disabled. The channel numbers read from the calendar indicates the order that status will be sent on RStat.

    Table 7: Sink Status Interface Signals (Continued)

    Signal Name DirectionClock

    DomainDescription

    22 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Static Configuration SignalsStatic configuration signals are inputs to the core that are statically driven by setting them to a constant value in the top-levelwrapper file. The SPI-4.2 release includes a wrapper file that has the static configuration signals connected to the valuesselected in the CORE Generator GUI. Use the GUI to modify the signals you want to customize.

    Two of the Sink Static Configuration signals can be changed in circuit. There are static registers for SnkCalendar_M andSnkCalendar_Len that are synchronous to SnkStatClk. To change these parameters while the core is operational, theuser must first deassert SnkEn.

    Note that there are legal values for each of the signals. If you set the configuration signal to an illegal number, the core willautomatically set it to the minimum value. The Sink Static Configuration signals are defined in Table 8.

    Table 8: Sink Static Configuration Signals

    Signal Name Direction Range Description

    NumDip4Errors[3:0] Static Input 1-15

    Value of 0 gets set to 1.

    Number of DIP-4 Errors: The Sink Interface will go out-of-frame (assert SnkOof) and will stop accepting SPI-4.2 data from across the data bus after receiving NumDip4Errors of consecutive DIP-4 errors.

    NumTrainSequences[3:0] Static Input 1-15

    Value of 0 gets set to 1.

    Number of Complete Training Sequences: The number of complete training patterns which consist of 10 training control words and 10 training data words. The Sink interface requires NumTrainSequences of consecutive training patterns before going in frame (de-asserting SnkOof) and accepting SPI-4.2 data from across the data bus.

    SnkCalendar_M[7:0] Input 0-255

    (effective range 1-256)

    Sink Calendar Period: The SnkCalendar_M parameter sets the number of repetitions of the calendar sequence before the DIP-2 parity and framing words are inserted.

    The core implements this parameter as a static register synchronous to SnkStatClk, and it can be updated in circuit by first de-asserting SnkEn.

    Note that the calendar period equals SnkCalendar_M + 1. For example, for SnkCalendar_M=22, the Sink Calendar Period will be equal to 23.

    SnkCalendar_Len[8:0] Input 0-511

    (effective range 1-512)

    Sink Calendar Length: The SnkCalendar_Len parameter sets the length of the calendar sequence.

    The core implements this parameter as a static register synchronous to SnkStatClk, and it can be updated in circuit by first de-asserting SnkEn.

    Note that the calendar length equals SnkCalendar_Len + 1. For example, for SnkCalendar_Len=15, the Sink Calendar Length will be equal to 16.

    DS209 February 15, 2006 www.xilinx.com 23Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    SnkAFThresAssert[8:0] Static Input 6 to SnkAFThresNegate

    Values less than 6 get set to 6

    Values greater than SnkAFThresNegate

    get set to SnkAFThresNegate

    Sink Almost-full Threshold Assert: The SnkAFThresAssert parameter specifies the threshold level at which the Sink core initiates flow control. It defines the minimum number of empty FIFO locations that exist when SnkAlmostFull_n is asserted. Note that the assert threshold must be less than or equal to SnkAFThresNegate. Additional information on SnkAFThresAssert can be found in the Sink Almost Full section.

    When SnkAlmostFull_n is asserted, the core initiates the flow control mechanism selected by the parameter FifoAFMode. The FifoAFMode defines when the interface stops sending valid FIFO status levels and begins sending flow control information on RStat. This indicates to the transmitting device that the core is almost full and additional data cannot be sent.

    SnkAFThresNegate[8:0] Static Input 6-508

    Values less than 6 get set to 6.

    Values greater than 508

    get set to 508.

    Sink Almost-full Threshold Negate: The SnkAFThresNegate parameter specifies the threshold at which the Sink core stops sending flow-control (de-asserts SnkAlmostFull_n) and resumes transmission of valid FIFO status levels. This indicates to the transmitting device that additional data can be sent.

    The SnkAFThresNegate parameter specifies the minimum number of empty FIFO locations that exist in for SnkAlmostFull_n to be deasserted. Note that the negate threshold must be greater or equal to SnkAFThresAssert.

    RSClkDiv Static Input n/a Sink Status Clock Divide: This static input is used to determine if the RSClk is 1/4 of the data rate, which is compliant with the OIF specification, or 1/8 of the data rate, which is required by some PHY ASSPs:

    0: RSClkDiv = 1/4 rate (default value)

    1: RSClkDiv = 1/8 rate

    RSClkPhase Static Input n/a Sink Status Clock Phase: This static input determines whether the FIFO Status Channel data (RStat[1:0]) changes on the rising edge of RSClk or the falling edge of RSClk:

    0: RSClkPhase = rising edge of RSClk (default value)

    1: RSClkPhase= falling edge of RSClk

    Table 8: Sink Static Configuration Signals (Continued)

    Signal Name Direction Range Description

    24 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    FifoAFMode and Sink Almost Full

    The user can select the behavior of the Sink core when it is almost full. This is done by setting the static configuration signalSink FIFO in Almost-full Mode (FifoAFMode[1:0]). Figure 14, Figure 15, and Figure 16 are timing diagrams illustratingthe behavior of the core for each of the three modes.

    FIFO Almost-full Mode 1

    When the FIFO Almost-full Mode (FifoAFMode) is set to “00” and the Sink core becomes almost full, the Sink interface willgo out-of-frame, and the Sink Status logic will send the framing sequence “11” until SnkAlmostFull_n is deasserted. Thisis illustrated in Figure 14.

    FifoAFMode[1:0] Static Input n/a Sink Almost-full Mode: Selects the mode of operation for the Sink interface when the Sink core reaches the almost-full threshold (SnkAFThresAssert).

    If FifoAFMode is set to “00,” the Sink interface will go out-of-frame when the core is almost full, and the Sink Status logic will send the framing sequence “11” until Sink core is not almost full.

    If FifoAFMode is set to “01,” the Sink interface will remain in frame (SnkOof deasserted), and the Sink Status logic will send satisfied “10” on all channels until SnkAlmostFull_n is deasserted.

    If FifoAFMode is set to “10” or “11,” the Sink interface will remain in frame (SnkOof deasserted), and the Sink Status logic will continue to drive out the user’s status information (i.e., continue in normal operation). In this case, the user should take immediate action to prevent overflow and loss of data.

    Table 8: Sink Static Configuration Signals (Continued)

    Signal Name Direction Range Description

    DS209 February 15, 2006 www.xilinx.com 25Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    FIFO Almost-full Mode 2

    When the FIFO Almost-Full Mode (FifoAFMode) is set to “01” and the Sink core becomes almost-full, the Sink interface willremain in frame (SnkOof deasserted), and the Sink Status logic will send satisfied (“10”) on all channels untilSnkAlmostFull_n is deasserted. This is illustrated in Figure 15.

    FIFO Almost-full Mode 3

    When the FIFO Almost-full Mode (FifoAFMode) is set to “10” or “11” and the Sink core becomes almost full, the Sink Statuslogic will continue to drive out the user’s status information (continue in normal operation). In this last case, the user shouldtake immediate action to prevent FIFO overflow and loss of data. This is illustrated in Figure 16.

    Figure 14: FIFO Almost-full Mode 1

    Figure 15: FIFO Almost-full Mode 2

    D D

    11 11

    D D D D D D D DD D DRDat_P

    RDClk_P

    D

    SnkAlmostFull_n

    SnkFFClk

    00 00 00 00RStat

    RSClk

    SnkStat

    SnkStatClk

    00 00 00 00 00 00 00 00 00 00 00 00 00 00

    00 00 11 11 11 11 11 11 11 11 11 11 11

    SnkOof

    D D D D

    00 00 000000 00 00

    D D D D D

    D D

    10 10

    D D D D D D D DD D DRDat_P

    RDClk_P

    D

    SnkAlmostFull_n

    SnkFFClk

    00 00 00 00RStat

    RSClk

    SnkStat

    SnkStatClk

    00 00 00 00 00 00 00 00 00 00 00 00 00 00

    00 10 10 10 10 10 10 10 10 10 10 10 10

    SnkOof

    D D D D

    00 00 000000 00 00

    D D D D

    26 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Synchronization Start-upFigure 17 shows a state machine diagram illustrating the Sink core startup sequence and its error condition processing.After a core reset, the Sink core begins in the RESET state. While in the RESET state, the core sends the framing pattern(11) on RStat, and until synchronization is achieved the Sink core does not write data into the Sink FIFO.

    The following summarizes the start up sequence for the Sink core:

    1. Disable the Sink core (SnkEn = 0).

    2. Assert and release the RDClk DCM Reset (DcmReset_RDClk), and wait until the RDClk DCM Locked signal (Locked_RDClk) is asserted.

    3. Assert and release the Sink core reset (Reset_n).

    4. Program the Sink Calendar (if required).

    5. Enable the Sink core (SnkEn = 1).

    For Dynamic Alignment Mode, pulse the PhaseAlignRequest signal High for 2 x the SnkFFClk period (just long enoughfor PhaseAlignRequest to be recognized), deassert PhaseAlignRequest, and wait for PhaseAlignComplete to beasserted. Repeat PhaseAlignRequest assertion only if Sink core goes out of frame during the operation (SnkOof = 1).Also, when Dynamic Alignment mode is used, the Sink core must be receiving a training pattern to perform the phasealignment (PhaseAlignRequest). Ensure that the Source core is capable of sending a training pattern at the startup andwhen "Sink Core Out of Frame" (SnkOof) has been asserted by the Sink core before doing an alignment.

    Once the Sink core is enabled and the clock has been successfully aligned, the core enters the HUNT state and waits for aprogrammable number of consecutive training patterns (NumTrainSequences).

    When the required number of training pattern matches is received, the core goes to the SYNC state and normal operationbegins. In this state, the core processes data received on the SPI-4.2 bus and stores it in the Sink FIFO. The core alsotransmits valid FIFO Status Channel data on the SPI-4.2 status bus.

    While in the SYNC state, if a defined number of consecutive DIP-4 errors are detected (NumDip4Errors), or the Sinksection is disabled (SnkEn), the core will go back to the RESET state.

    Figure 16: FIFO Almost-full Mode 3

    10 10

    DD D D D D DD D D DRDat_P

    RDClk_P

    D

    SnkAlmostFull_n

    SnkFFClk

    00 00 00 00RStat

    RSClk

    SnkStat

    SnkStatClk

    00 00 00 00 10 10 10 10 10 10 10 10 00 00 00 00 00 00

    00 10 10 10 10 10 10 10 10 10 10 10 10

    SnkOof

    D D

    00 00 001010 00 00

    D D DD D D

    DS209 February 15, 2006 www.xilinx.com 27Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Sink Data Capture ImplementationThe SPI-4.2 core supports both static alignment and dynamic alignment of the Sink RDClk to RDat[15:0] as defined bythe SPI-4.2 standard. The method for aligning the received data affects only the Sink core. The Source core does notchange, whether static or dynamic alignment is selected. The user interface and I/O pinout are also the same regardless ofthe type of alignment required.

    Dynamic Alignment

    The Sink core can be configured to support dynamic alignment on the incoming source synchronous SPI-4.2 data stream(RCtl and RDat[15:0] with respect to the RDClk). Dynamic alignment provides the SPI-4.2 Interface with increasedsystem margin by removing data skew across the ingress SPI-4.2 bus as part of an interface timing budget. Theimplementation determines the ideal sampling point for each incoming bit independent of all other bits. A second alignmentphase uses the SPI-4.2 training pattern to remove any bus skew (potential for the sampled bits to have originated fromdifferent bus cycles) induced by the independent bit sampling or bus skew on the PCB or backplane.

    The increase in timing margin on the interface does have a cost associated with FPGA resources and power dissipation.Selecting dynamic alignment as an implementation option will increase the size of the Sink logic by ~900 slices and coulddissipate more than 500mW of additional power (depending on the switching density of the bus). From a black boxperspective there are no differences in the Sink Core interface definition for the static and dynamic alignment options. Itshould be noted that the use of dynamic alignment does not relax the PCB design requirements for high-speed differentialsignals. Each individual bit pair should still have matched length and controlled impedance traces to ensure signal integrityat 300MHz and above.

    Dynamic Alignment Implementation Considerations

    There are two signals on the Sink user interface that are used in conjunction with Dynamic Alignment, which aresummarized in Table 9. The dynamic alignment algorithm requires training patterns on the SPI-4.2 bus to complete the

    Figure 17: Sink Startup Sequence State Machine

    SYNCHUNTRESET

    Reset Asserted, Sink Disabled, or Consecutive

    Incorrect DIP-4 Calculations Detected

    Reset Asserted orSink Disabled

    The Sink core remains in the reset stateuntil the following conditions are true:1. Reset_n is de-asserted2. Clock Alignment is complete. Automatic Static Alignment: RDClk is

    aligned to the eye of the RDat[15:0]data bus.

    Dynamic Alignment: Per bit deskew isperformed and RDClk is aligned to theeye of the RDat[15:0] data bus.

    The Sink core transmits framing patternson RStat[1:0] while in the reset state .

    The Sink core remains in the hunt stateuntil the following condition is true: A set number of consecutive training

    patterns are received as defined bythe parameter NumTrainSequences.

    The Sink core transmits framing patternson RStat[1:0] while in the hunt state.

    In the sync state, the Sink core hascompleted the start-up sequence andnormal core operation is enabled.

    In normal operation, the Sink corecontinuously checks DIP-4 parity, storesdata received on RDat[15:0] into theSink FIFO, and sends FIFO ChannelStatus on RStat.

    28 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    alignment. If PhaseAlignRequest is activated when the Sink logic is not receiving training patterns, the logic will fail toachieve lock or obtain an incorrect lock.

    The user should not assert PhaseAlignRequest unless the Sink logic is indicating out-of-frame (SnkOof asserted). Whenthe Sink state machine is out-of-frame, it will send framing patterns (all 11s) on its FIFO status channel. The SPI-4.2specification requires the PHY Transmit device to respond to this condition by sending continuous training patterns.

    An alternative solution is to assert PhaseAlignRequest twice. The first request will fail, which causes the Sink logic tobecome out-of-frame (SnkOof indicated); at this point, PhaseAlignRequest may be correctly asserted. Note that thereshould be some lag (that will be system dependent) between the receipt of the SnkOof indication and the assertion of thesecond PhaseAlignRequest to ensure that the Source side has started sending valid training sequences.

    Static Alignment

    The SPI-4.2 Core performs static alignment by using the RDClk DCM to shift the internal version of the RDClk such that itsedges are centered to the data eye of RDat/RCtl at the IOB DDR flip-flops. The ability of the DCM to shift the internal clockin small increments (~50ps) is critical for sampling the SPI-4.2 source synchronous signals. For statically aligned systems,the DCM output clock phase offset (set by PHASE_SHIFT in UCF file) is a critical part of the system. This, combined with therequirement that the PCB be designed with precise delay and impedance matching for all the differential pairs of the LVDSdata bus, are key for SPI-4.2 static alignment.

    Static Alignment Implementation Considerations

    The user determines the optimal DCM setting (PHASE_SHIFT) to ensure that the target system will have the maximumsystem margin and performance across voltage, temperature, and process (chip to chip) variations. Testing the system todetermine the best DCM PHASE_SHIFT setting has the added advantage of providing a benchmark of the system marginbased on the UI (unit interval or bit time).

    System Margin (ps) = UI(ps) * (working phase shift range/128)

    Xilinx does not recommend a singular DCM PHASE_SHIFT value that will be effective across all hardware platforms. Xilinxalso does not recommend that you attempt to determine the PHASE_SHIFT setting empirically. In addition to theclock-to-data phase relationship, other factors such as package flight time (package skew) and clock routing delays (internalto the device) affect the clock data relationship at the sample point (in the IOB) and are difficult to characterize.

    The optimal PHASE_SHIFT setting should be investigated during hardware integration and debugging. Note that the phaseshift setting provided with the SPI-4.2 core in the constraints file is only a place holder, and has been determined to work onthe Xilinx SPI-4.2 hardware platform. (Note that this default setting has changed for the various SPI-4.2 releases to accountfor changes to the DCM DESKEW ADJUST attribute.)

    Table 9: Dynamic Alignment Signals

    Signal Name Direction Clock Domain Description

    PhaseAlignComplete Output SnkFFClk Phase Alignment Complete: Active High signal that indicates that the phase alignment is complete.

    PhaseAlignRequest Input SnkFFClk Phase Alignment Request: Active High signal that requests that the phase alignment of the data (RDat) to the clock (RDClk) be initiated. This signal can only be asserted when SnkOof and PhaseAlignComplete are

    asserted.

    SnkDPAModeSel Input SnkFFClk Sink DPA Mode Select: An input signal that determines whether the DPA mode is operating on fast (Active High) or slow delay implementation. In ‘‘‘‘‘‘, this pin should be

    tied high.

    SnkDPAMode Output SnkFFClk Sink DPA Mode: Active High signal that indicates whether the DPA mode has automatically selected a fast

    or slow delay implementation. This output reflects the value of SnkDPAModeSel.

    DS209 February 15, 2006 www.xilinx.com 29Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    For further information on how to find the ideal phase shift value for your system, please refer to the Xilinx SPI-4.2 solutionrecord 16112.

    Note that the PhaseAlignRequest, PhaseAlignComplete, and SnkDPAMode signals are present but not currentlyimplemented for the Static Alignment core. PhaseAlignRequest should be tied to a constant zero.

    PhaseAlignComplete and SnkDPAMode should be ignored.

    Sink Clocking ImplementationFor the generation of the Sink I/O reference clock, the configuration options depend on whether the data is received utilizingStatic or Dynamic Phase Alignment. If the Sink core is configured for Static Phase Alignment, the core supports twoimplementations:

    • CLK0/CLK180. his implementation uses the DCM to generate both a full-rate clock (Clk0) and an inverted full-rateclock (Clk180). This configuration provides improved performance on the Sink interface and is illustrated in Figure 18.

    • CLK0/Local Inversion.This implementation distributes a signal full-rate clock (Clk0) and uses the inversion capabilityof the dual data rate registers to generate Clk180. This configuration uses fewer global clock resources and isillustrated in Figure . Note: This clocking scheme is not supported in Virtex-II Pro.

    The user selects the clock implementation in the CORE Generator interface. For speeds up to 700 Mbp/s, either clockingscheme is acceptable. For clock rates over 700 Mbp/s, the CLK0/CLK180 scheme must be implemented.

    If the core is configured for Dynamic Phase Alignment, then the configuration of the Sink clocks is implementedautomatically to ensure optimal performance. This configuration is illustrated in Figure 19.

    A list of the Sink Clocks and their description is given in Table 10, the DCM reset and locked signals are defined in Table .

    30 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Figure 18: Sink Clocks: Use DCM to Generate Clk180

    RDClk0_GP

    RDClk1 80_ GP

    RDClkDiv_GP

    IOBRDClk

    Denotes I/O on User Interface

    RDat[15:0] & RCtl IOBQ D

    Q D

    RDClk0_GP

    RDClk180_GP

    IOB DDR Flops

    DIV2

    RDClkDiv_GP

    Q D

    16 to

    64

    -bit

    MU

    X

    Sink InternalData & Control

    Bus

    RDClkDiv_GP

    D Q

    EN

    Enable at ¼ (or 1/8) SPI-4.2 Rx data rate

    IOBRStat[1:0] & RSClkInternal Bus

    RStat[1:0] & RSClk

    CLK0

    CLK180

    DCM

    DCMReset_RDClk

    Locked_RDClk

    DS209 February 15, 2006 www.xilinx.com 31Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    RDClk0_GP

    RDClkDiv_GP

    IOBRDClk

    Denotes I/O on User Interface

    RDat[15:0] & RCtl IOBQ D

    Q D

    RDClk0_GP

    RDClk0_GP

    IOB DDR Flops

    DIV2

    RDClkDiv_GP

    Q D

    16 to

    64

    -bit

    MU

    X

    Sink InternalData & Control

    Bus

    RDClkDiv_GP

    D Q

    EN

    Enable at ¼ (or 1/8) SPI-4.2 Rx data rate

    IOBRStat[1:0] & RSClkInternal Bus

    RStat[1:0] & RSClk

    CLK0

    CLK180

    DCM

    DCMReset_RDClk

    Locked_RDClk

    N/A

    32 www.xilinx.com DS209 February 15, 2006Product Specification

    http://www.xilinx.com

  • SPI-4.2 Core v6.3

    Figure 19: Sink Clocks: Dynamic Phase Alignment

    Table 10: Sink Clocks

    Clock Pins Direction Description Max Freq.Global Clock

    Buffer

    RDClkDiv_GP Output(User Interface)

    RDClkDiv General Purpose: This clock is half the frequency of RDClk. It is used for clocking the internal logic of the core and is routed to t