LATTICE ORSPI4

ORCA® ORSPI4
Dual SPI4 Interface
and High-Speed SERDES FPSC
October 2007
Data Sheet
Lattice Semiconductor has developed a next-generation FPSC targeted at high-speed data transmission. Built on
the Series 4 reconfigurable embedded System-on-a-Chip (SoC) architecture, the ORSPI4 FPSC contains two
SPI4.2 interface blocks, a high-speed Memory Controller, four channels of 0.6-3.7 Gbits/s SERDES with 8b/10b
encoding and decoding and over 600K programmable system gates all on a single chip.
Embedded SPI4 Core Features
■
■
■
■
■
■
OIF-SPI4-02.0 compliant interfaces
Dynamic timing receive interface:
• Full bandwidth up to 450 MHz DDR (900
Mbits/s) for all speed grades.
• Bit de-skewing up to 16 phases of the clock
• Capable of aligning bit-to-bit skews as large as
±1 bit periods
DIP-4 and DIP-2 parity generation and checking
Transmit Interface:
• Speeds up to 450 MHz DDR (900 Mbits/s)
• Dedicated LVDS transmit interface for improved
data eye integrity
• Automatic idle insertion
■
Configuration options as suggested in the OIFSPI4-02.0 standard
• Configures parameters such as maximum burst
size, calendar length, main and shadow calendars (1K deep each), length of training
sequence etc.
■
Loopback modes provided for system- and
chip-level debug
Embedded 32-bit internal system bus plus 4-bit
parity
• Interconnects FPGA logic, microprocessor interface (MPI), embedded RAM blocks, and embedded core blocks
• Includes built-in system registers that act as the
control and status center for the device
■
Low power operation.
• Full-rate SPI4.2 interfaces running at 450 MHz
DDR (900 Mbits/sec) with dynamic alignment
consumes 1.5 W of power or less. More efficient
than FPGAs with soft-IP SPI4 solutions which
consume in excess of 10 W.
■
Programmable Minburst capability with
selectable burst values ranging from 16 to 240.
Interoperability demonstrated with ORSPI4
partners.
■
256 logical ports:
• Embedded Calendar-based sequence port polling mechanism and bandwidth allocation.
Shadow Calendar support for smooth transition
to new Calendar
• Up to 32 independent TX and 32 independent
RX buffers per SPI4 interface internally. Various
aggregation modes to support 1 to 32 separate
embedded buffers per TX and RX
• Up to 4 independent TX and 4 independent RX
clock domain transfers to the FPGA logic
FIFO status support modes:
• 1/4 rate LVTTL or 1/4 rate LVDS
• Automatic status handling or optionally under
user control. Credit calculations based on burst
size and status are also handled automatically
Simple FIFO interface to the FPGA logic
• Provides ease of design and efficient clock
domain transfers
■
Static timing receive interface:
• Speeds up to 325 MHz DDR (650 Mbits/s), for
all speed grades, including Quarter-Rate mode
• Clock aligned or clock centered modes supported
■
■
Embedded SERDES Core Features
■
Quad 600 Mbits/s to 3.7 Gbits/s SERDES:
• IEEE 802.3ae XAUI (Link State Machine &
Alignment FIFOs embedded)
• ANSI X3.230:1994 1G/2G FC-compliant (Link
State Machine & Alignment FIFOs embedded)
• Proven performance (same SERDES used in
ORT82G5/ORT42G5 FPSCs)
Embedded Memory Controller Features
■
High Performance Memory Controller for
interface to external buffer memory
• Required for Layer 2 data buffering
• QDR II memory interface:
– 36-bit Input and 36-bit Output bus, 18-bit address
– 175 MHz clock rates
– 20+ Gbits/s bandwidth
– Supports 2- or 4-word burst mode
– Simple FIFO interface to FPGA
– Integrated PLL for optimized performance
– Proven performance with multiple memory suppliers
Note: The term SPI4 refers to OIF SPI-4.2 throughout this document
© 2007 Lattice Semiconductor Corp. All Lattice trademarks, registered trademarks, patents, and disclaimers are as listed at www.latticesemi.com/legal. All other brand
or product names are trademarks or registered trademarks of their respective holders. The specifications and information herein are subject to change without notice.
www.latticesemi.com
1
ORSPI4_06
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
High-Speed ORCA Series 4 FPGA
■
■
■
■
■
Internal performance of > 250 MHz
Over 16K programmable logic elements
1.5V operation (30% less power than 1.8 V operation)
Comprehensive I/O selections including LVTTL, LVCMOS, GTL, GTL+, PECL, SSTL3/2, HSTL, ZBT,
DDR, LVDS, bused-LVDS, and LVPECL
1036-pin ftSBGA package provides enough FPGA user I/Os (498) for 4 full-duplex XGMII interfaces, 4
full-duplex PL-3 interfaces, etc; a 40% smaller 1156-pin fpBGA package is available with 356 FPGA user
I/Os
Introduction
The SPI4 blocks provide dual 10 Gbits/s physical-to-link layer interfaces in conformance to the OIF-SPI4-02.0
specification. Each block provides a full-duplex interface with an aggregate bandwidth of 13.6 Gbits/s. This is
achieved by using 16 LVDS pairs each for RX and TX operating at a maximum data rate of 900 Mbits/s with a 450
MHz DDR clock. Both static and dynamic alignment are supported at the receive interface. Dynamic alignment is
used to compensate for bit-to-bit skew at higher data rates, where it becomes difficult to meet tight setup/hold
requirements. DIP-4 and DIP-2 parity generation and checking are supported. Data buffering of 8K bytes for both
transmit and receive is provided by embedded Dual-Port RAM in each SPI4 core. Internal 1K deep main and
shadow calendar supports scheduling of up to 256 ports. The Transmit and Receive Status FIFOs can also store
flow control information for up to 256 ports, the maximum specified in the SPI4 specification.
An independent QDRII Memory Controller block provides data buffering between the FPGA logic and external
memory and supports a throughput of greater than 20 Gbits/s. Data is transferred to and from memory through two
sets of 36-bit unidirectional data lines operating at up to 175 MHz DDR. A set of 72 data signals is available to
transfer data across the core-FPGA interface and allows the system to utilize the bandwidth available with secondgeneration Quad Data Rate (QDRII) SRAMs. Of the 72 data signals, 8 signals can be either used for parity or data.
A soft IP version of this core is also available to allow a second data buffer on this device.
The High-Speed SERDES block supports four serial links, each operating at up to 3.7 Gbits/s (2.96 Gbits/s data
rate with 8b/10b encoding and decoding), to provide four full-duplex synchronous interfaces with built-in RX Clock
and Data Recovery (CDR) and transmitter preemphasis. The SERDES block is identical to that in the ORT82G5
FPSC, supports embedded 8b/10b encoding/decoding and implements link state machines for both 10G Ethernet,
and 1G/2G/10G Fibre Channel. The state machines are IEEE P802.3ae/D4.01 XAUI based and also support FC
(ANSI X3.230:1994) link synchronization.
Table 1. ORCA ORSPI4 — Available FPGA Logic
Device
PFU Rows
PFU
Columns
Total PFUs
FPGA Max
User I/O
LUTs
EBR
Blocks
EBR Bits
(K)
Usable*
Gates (K)
ORSPI4
46
44
2,024
498/356
16,192
16
148
471-899
Note: The embedded core, embedded system bus, FPGA interface and MPI are not included in the above gate counts. The System Gate
ranges are derived from the following: Minimum System Gates assumes 100% of the PFU's are used for logic only (No PFU RAM) with 40%
EBR usage and 2 PLL's. Maximum System Gates assumes 80% of the PFU's are for logic, 20% are used for PFU RAM, with 80% EBR
usage and 4 PLL's.
The ORSPI4 device is offered in two packages: 1036 ftSBGA and 1156 fpBGA. The 1036 package offers 498 FPGA User I/Os while the 1156
package offers 356 FPGA User I/Os. Additionally, the SERDES option is not available on the 1156 package.
2
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 Overview
The ORSPI4 FPSC provides two SPI4.2 interface blocks, a Memory Controller and a 4-channel SERDES block,
combined with FPGA logic. Based on the 1.5 V OR4E06 ORCA FPGA, it has a 46 x 44 array of Programmable
Logic Cells (PLCs). The embedded core is attached to the right side of the device, as shown below, and is integrated directly into the FPGA array. A top level diagram of the basic chip configuration is shown in Figure 1.
Figure 1. ORSPI4 Basic Chip Configuration
Quad
SERDES
Serial I/O
/
SPI4.2
I/F
SPI4 I/O
ORCA 4E06-Based
Programmable Logic
SPI4 I/O
SPI4.2
I/F
Shared I/O
FPGA Programmable I/O
Memory
Controller
Memory
Controller I/O
Embedded Core
Each of the logic blocks in the embedded core is functionally independent from the other blocks. Connections
between blocks must be made through the FPGA logic. However, one of the SPI4 blocks and the SERDES block
share I/Os. Hence the device may be configured to provide either two SPI4 interfaces or one SPI4 interface and
one serial interface.
What Is an FPSC?
FPSCs, or Field-Programmable System Chips, are devices that combine field-programmable logic with ASIC or
mask-programmed logic on a single device. FPSCs provide the time to market and the flexibility of FPGAs, the
design effort savings of soft Intellectual Property (IP) cores, and the speed, design density, and economy of ASICs.
FPSC Overview
Lattice’s Series 4 FPSCs are created from Series 4 ORCA FPGAs. To create a Series 4 FPSC, several columns of
Programmable Logic Cells are integrated with an embedded logic core. Other than replacing some FPGA gates
with ASIC gates, at greater than 10:1 area efficiency, none of the FPGA functionality is changed—all of the Series
4 FPGA capability is retained including the Embedded Block RAMs, MicroProcessor Interface (MPI), boundary
scan, etc. Pins from the replaced columns of programmable logic are used as I/O pins for the embedded core. The
remainder of the device pins retain their FPGA functionality.
FPSC Gate Counting
The total gate count for an FPSC is the sum of its embedded core (standard-cell/ASIC gates) and its FPGA gates.
Because FPGA gates are generally expressed as a usable range with a nominal value, the total FPSC gate count
is sometimes expressed in the same manner. Standard-cell ASIC gates are, however, 10 to 25 times more silicon-
3
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
area efficient than FPGA gates. Therefore, an FPSC with an embedded function is gate equivalent to an FPGA with
a much larger gate count.
FPGA/Embedded Core Interface
The interface between the FPGA logic and the embedded core has been enhanced to allow for a greater number of
interface signals than on previous FPSC architectures. Compared to bringing embedded core signals off-chip, this
on-chip interface is much faster and requires less power. All of the delays for the interface are precharacterized and
accounted for in the ispLEVER Development System.
Series 4 based FPSCs expand this interface by providing a link between the embedded block and the multi-master
32-bit system bus in the FPGA logic. This system bus allows the core easy access to many of the FPGA logic functions including the Embedded Block RAMs and the microprocessor interface.
Clock spines also can pass across the FPGA/embedded core boundary. This allows for fast, low-skew clocking
between the FPGA and the embedded core. Many of the special signals from the FPGA, such as DONE and global
set/reset, are also available to the embedded core, making it possible to fully integrate the embedded core with the
FPGA as a system.
For even greater system flexibility, FPGA configuration RAMs are available for use by the embedded core. This
allows for user-programmable options in the embedded core, in turn allowing for greater flexibility. Multiple embedded core configurations may be designed into a single device with user-programmable control over which configurations are implemented, as well as the capability to change core functionality simply by reconfiguring the device.
FPSC Design Kit
Development is facilitated by an FPSC design kit which, together with ispLEVER and third-party synthesis and simulation engines, provides all software and documentation required to design and verify an FPSC implementation.
Included in the kit are the FPSC configuration manager, and compiled Verilog simulation models, HSPICE and/or
IBIS models for I/O buffers, and complete online documentation. The kit's software coupled with the design environment, provides a seamless FPSC design environment. More information can be obtained by visiting the Lattice
website at
http://www.latticesemi.com.
SPI4 Protocol Overview
The System Packet Interface Level 4, Phase 2 (SPI4) was defined by the Optical Internetworking Forum (OIF) as
an interface for packet and cell transfers between a Physical Layer (PHY) device and a link layer device for applications requiring up to 10 Gbit/s aggregate bandwidth. The system level model for the SPI4 interface is shown in Figure 2.
4
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 2. System Model for SPI4 Interface
Link Layer in Model
PHY Layer in Model
TSTAT[1:0]
TSCLK
Transmit Link
Layer Device
TDCLK
TDAT[15:0]
TCTL
Physical (PHY)
Layer Device
RSTAT[1:0]
RSCLK
Receive Link
Layer Device
RDCLK
RDAT[15:0]
RCTL
The details of the interface are specified in the OIF document “Implementation Agreement OIF-SPI4-02.0”
(www.oiforum.com). That specification is based on the system model shown in the previous figure, which, in turn, is
based on the Open System Interconnect (OSI) reference model. In the system model, a “transmit interface” sends
address, start and end of packet signals and error control information from a Link Layer device to a PHY device and
receives flow control (status) information from the PHY device. In the other direction, a “receive interface” at the
Link Layer receives data from a PHY device and sends status information to the PHY device. While this convention
provides a clear framework for defining the system level functions, a clean separation between Link Layer and
Physical Layer functionality is not often seen in actual implementations.
The ORSPI4 FPSC SPI4 blocks implement the basic functions defined in the standard and also implements additional options, as suggested in the standard, to configure parameters such as maximum burst size, calendar
length, length of training sequence, etc. As required by the specification, the transmit and receive interfaces operate completely independently.
5
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Embedded Core Overview - Functions and Features
The embedded core contains four separate functional blocks, two SPI4 interface blocks, a high-speed Memory
Controller block, and a quad SERDES block providing 4 channels of 0.6-3.7 Gbits/s SERDES. Features common to
all blocks include:
• Improved PowerPC ® 860 and PowerPC II high-speed synchronous MicroProcessor Interface that can be used
for configuration, readback, device control, and device status; as well as for a general-purpose interface to the
FPGA logic, RAMs, and embedded standard cell blocks. Glueless interface to synchronous PowerPC processors
with user-configurable address space provided.
• New embedded AMBA ™ specification 2.0 AHB system bus (ARM ® processor) facilitates communication among
the MicroProcessor Interface, configuration logic, and embedded core blocks.
• FPSC Design Kit available for use with ispLEVER development system software. Supported by industry-standard CAE tools for design entry, synthesis, simulation, and timing analysis.
SPI4 Interface Blocks - Overview
The ORSPI4 FPSC provides two independent SPI4 interface blocks in the embedded core. The two SPI4 blocks
are identical and the following overview applies to both blocks. In the following sections, the SPI4 protocol conventions for “transmit” and “receive” are not followed, since in various applications the ORSPI4 FPSC could be used to
perform different functions at various levels in the SPI4 protocol stack. Instead, the “transmit” functions are those
used to transmit data to and receive current status information from the device at the other end of the SPI4 link.
The “receive” functions are those used to receive data from and transmit current status information to the device at
the other end of the SPI4 link.
Each SPI4 block supports a standard 10 Gbits/s physical-to-link layer interface in conformance to the specification.
This is achieved by using 16 LVDS pairs each for RX and TX that operate at a maximum data rate of 900 Mbits/s
with a 450 MHz DDR clock. Data buffering of 8 Kbytes each in the transmit and receive direction (example: 256
bytes each for up to 32 ports) is provided by embedded Dual-Port RAM (DPRAM). Aggregation of buffer space is
supported for systems with less than 32 ports. The internal calendar and Transmit and Receive Status FIFOs have
been sized so that applications with larger numbers of ports can be supported. The ORSPI4 has been designed to
support up to 256 ports, the maximum specified in the SPI4 specification.
Despite operating independently, both the transmit path and the receive path logic perform similar functions and
the partitioning of both logical blocks are quite similar as shown in Figure 3. The top level partitioning is between
the logic blocks to transfer and process data and control information, and the logic blocks to generate, transfer and
process status information.
SPI4 Interface Block Features
• Each SPI4 block provides a standard 10 Gbits/s physical-to-link layer interface in conformance to the OIF-SPI402.0 specification. Each interface provides an aggregate bandwidth of 13.6 Gbits/s. This is achieved by using 16
LVDS pairs each for RX and TX with a maximum data rate of 900 Mbits/s using a 450 MHz DDR clock.
• The blocks can be used for applications such as interconnecting an OC-192 framer with a proprietary packetized
interface, to a network processor with a SPI4 based packet interface or vice versa.
• Support for “static” or “dynamic” alignment at the receive interface. At clock rates above 350 MHz DDR, it
becomes difficult to meet the tight setup/hold requirements at the receiver using static alignment. In this case,
dynamic alignment is used to compensate for bit-to-bit skew.
• Dynamic alignment automatically compensates for Process, Voltage, and Temperature (PVT) changes in devices
and systems.
– Full bandwidth up to 450 MHz DDR (900 Mbits/s throughput)
– Dynamically performs alignment based on 16 phases of the RX clock for improved accuracy
– Alignment algorithm can be done based on excessive bit errors on the DIP-4 calculation
– Clock skews up to +/- one clock cycle can be compensated by the dynamic alignment logic
6
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• For low speed data, static alignment can be selected through a programmable control bit
– Speeds up to 350 MHz DDR (700 Mbits/s throughput)
– Dynamic alignment is bypassed and disabled to save power in static alignment mode.
– Programmable on-edge or on-center clock/data relationship option at receiver.
– Programmable clock delay
• Single-link and multi-link operation.
• SPI4 transmit data protocol support logic
– Combines the data and control words from the transmit FIFO (DPRAMs) into the SPI4 format
– Performs DIP-4 calculation over data and control words on the TX side and inserts into the payload control
word
• Handles all credit calculations based on the status information automatically
• Provides optional signals to FPGA interface logic for flow control:
– Current transmit Port ID (Calendar Port or user specified port # per calendar port)
– Current BURST_VAL Parameter for that Port
– Status from that Port
• Embedded Calendar-based port polling sequence mechanism and bandwidth allocation for all 256 ports
– Programmable transmit and receive calendar tables support up to 256 ports
• Two calendars are supported in each direction
– Main Calendar (1K deep)
– Shadow Calendar (also 1K deep). User can reconfigure second calendar while operating off main calendar,
and then switch on the next cycle to allow hitless operation
– All calendar configuration parameters specified in the standard (CALENDAR_LEN, CALENDAR_M, etc.) are
supported
• Transmit and Receive Status FIFOs provided to store flow control information for up to 256 ports.
– Performs Status frame creation
– DIP-2 odd parity calculated over the status frames
– Supports either quarter-rate LVDS or LVTTL status channels
• Support for various options for flow control status creation, selectable per port:
– Based on DPRAM FIFO fill levels
– Based on status from FPGA interface per port
– Both of the above
• Dual-port RAM interface to the FPGA supports flexible data widths for both the receive and transmit FPGA/core
interfaces.
– Scalable data bus enables users to configure TX interface for their respective port bandwidth requirements
– A total of 4 DPRAM banks where each of the DPRAMs can be logically partitioned into 1, 2, 4, or 8 virtual
FIFOs
– Used for temporary storage and clock domain crossing
– Can be configured to provide 32-, 64-, 128-bit data bus interfaces from the FPGA (plus accompanying control signals)
– 32-bit mode: Four banks are separate and accessed independently
– 64-bit mode: Banks 0 & 1 become a single aggregation and Banks 2 & 3 become a single aggregation
– 128-bit mode: All four banks become a single aggregation
– Mixed mode: One 64-bit (two banks become a single aggregation) and two banks are separate and
accessed independently
• Training pattern generation
– User controlled “alpha” repetitions of training pattern in TX_DATA_MAX_T intervals
– Automatic generation of training pattern during loss of synchronization
7
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• Automatic idle generation
– When no data for a given channel is available for transmit
– If the receiver on other end of the link is “satisfied” for this channel
• Automatic training pattern and idle deletion in receive path
• Low-power, high performance ASIC LVDS I/Os compliant with EIA®-644
– I/O buffers support hot insertion
– I/O buffers proven to operate at over 900 MHz rates (Lattice ORLI10G FPSC uses same LVDS buffers)
– On-chip center tap termination for common mode noise reduction
• Configuration options as suggested in the OIF-SPI4-02.0 standard are supported to configure parameters such
as maximum burst size, calendar length, length of training sequence, etc.
• Support for three forms of loopback:
– High-speed near end loopback which involves looping back data from the high-speed transmit block serial
output to the high-speed receive block serial input. All of the logic up to the LVDS buffers is included in the
loopback path. The LVDS buffers are bypassed
– Far end loopback which involves looping back the 128-bit output data from high-speed receive block to the
128-bit input of the high-speed transmit block. Data is received at the high-speed SPI4 RX interface and
transmitted at the SPI4 TX interface. The transmit protocol, receive protocol and DPRAM blocks are
bypassed. This works for both static and dynamic alignment modes.
– Low-speed near end loopback which excludes the high-speed blocks from the loopback path. This involves
sourcing data from the FPGA, looping back the output of the transmit protocol block into the receive protocol
block and observing data at the core-FPGA boundary
• Support for several SPI4 debug options:
– Under software control, DIP-4 errors can be forced by inverting the DIP-4 parity bits
– DIP-2 errors can be forced by inverting the DIP-2 parity bits
– Eight-bit counters are provided for counting DIP-4 and DIP-2 errors
• SPI4 Status Reporting Capabilities:
– Status information is reported through status registers.
– Most conditions can also cause an alarm (interrupt) to be generated
– DIP-4, DIP-2 errors
– Deskew error from high-speed RX side
– DPRAM Virtual FIFO overruns
8
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 3. ORSPI4 SPI4 Interface Block - Top Level Functional Partitioning
Transmit
Transmit Status
SPI4 Logic - Status
Read Control
Sequencer
TSTAT[1:0]
Protocol
Input
TSCLK
Port
Calendar Address
Map Descriptor
32,
64,
Transmit Data 128
Transmit Buffers
Transmit Control
Write
Control
SPI4 Logic - Data
TDCLK
DPRAM
Banks
Protocol
Output
TCTL
FIFO_FULL
Receive Status
Receive
Transmit Buffers
Address Port
Map
Descriptor
Port Status
Sequencer
SPI4 Logic - Status
Protocol
RSTAT[1:0]
Output
SPI4 Logic - Data
128
Read Control
RSCLK
Calendar
Receive Buffers
Read Data
TDAT[15:0]
RDCLK
Protocol
ReceiveDPRAM Write
Center Banks Control
Input
RDAT[15:0]
RCTL
At the embedded core/FPGA interface, data buffering is provided by banks of DPRAM partitioned into FIFOs. FIFO
reads and writes are completely decoupled. Data and accompanying address, packet delineation and error identification information are written into the selected FIFO as received - either from the FPGA, in the transmit case, or
from the receive link. For transmit, reads are performed from the FIFOs based on pre-programmed packet format
information, a pre-programmed schedule for link access as read from calendar logic, and far end status information
as received from the transmit status logic. In the receive direction, the receive status logic transmits information
concerning the states of the receive buffers on the receive status links, while the FPGA logic reads data from the
FIFOs as needed under control of the FPGA logic.
The read/write control functions are similar if operating with external RAM. In this case, the internal DPRAM can be
used as clock domain crossing FIFOs.
Formatting/deformatting, flow control processing, and error control logic forms the interface between the DPRAM
banks and the SPI4 transmit and receive blocks. This logic performs the necessary conversions between the SPI4
and FPGA/core interface formats. It also performs DIP-2 (status) and DIP-4 (control) generation/checking. Finally,
the SPI4 interface blocks perform the MUX/DEMUX functions for rate conversion between the internal core data
paths and the SPI4 links and also provides the needed LVDS driver and receiver functions. Either static or dynamic
alignment is available at the receiver interface. Dynamic alignment is used to compensate for bit-to-bit skew at
higher data rates where it becomes difficult to meet tight setup and hold timing requirements.
9
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPI4 Transmit Path Overview
The first of the major blocks in the Transmit section contains four DPRAM banks which can be configured to provide
32-bit, 64-bit or 128-bit data bus interfaces from the FPGA to the embedded core. Providing a scalable data bus
enables users to tailor the transmit interface to meet their port bandwidth requirements. For example, with a POSPHY Level 3 (PL3) interface supporting multiple PHYs (ports), a single 32-bit interface to the Transmit DPRAM is
required. For an Ethernet 10 Gbits/s interface, a single port will require a single 128-bit interface to the Transmit
DPRAM.
To realize the various data bus interfaces or aggregation modes, the user must configure the mode within the
embedded core via the MPI interface or the system bus. Multiple DPRAM banks can be aggregated into larger
FIFOs. Division of the DPRAM banks into virtual partitions (up to eight) is also possible.
The FPGA logic initiates a write to DPRAM by providing Data, Port ID, 3-bit FIFO Address and Write Enable signals
to the SPI4 block. The internal FIFO controller latches the data and port control information into a temporary hold
register that stores the data until an entire 128-bit line is captured, or an EOP is asserted. The 128-bit line is then
written into the selected virtual FIFO.
Associated with each FPGA data write interface, there are also control information signals and a transmit clock.
The FIFO control logic transparently passes the control information to the Control memory, with the exception of
the Byte Enable bits (BE[3:0]), which indicate which bytes of the associated 32-bit Word are valid.
The DPRAM read logic blocks poll port data from the DPRAM banks, based on a preconfigured calendar sequence
and the current status of each active port. The SPI4 calendar is a mechanism that maintains out-of-band statistics
of the current status of each port supported across the SPI4 interface. The calendar is a reverse direction flow-control mechanism used to control the dynamic bandwidth allocated for the each supported port. By periodically providing far end receive status for each port, the transmitter can modulate the amount of bandwidth allocated to a
particular port dynamically.
Writes to the DPRAMs from the FPGA logic are asynchronous to the calendar polling algorithm. The SPI4 transmit
logic reads data from the DPRAMs according to a strict calendar sequence algorithm and will generally not read
port data from the virtual FIFOs in the sequence it was written.
Both a main and a shadow calendar are provided and are each 1K deep. This enables the user to provide finer
granularity of the polling sequence based on bandwidth allocated for each port. The length of the calendar table
(CALENDAR_LEN) is programmable. CALENDAR_LEN should be at least as large as the number of active ports
(channels) in the system and should not exceed the upper threshold set by the parameter
(MAX_CALENDAR_LEN).
There are two basic modes supported for transmitting data. Within the SPI4 core, the embedded core operates
identically for all modes. At the FPGA interface, processing will be done slightly differently, depending upon the
mode the user requires. Each mode is discussed below.
• Embedded memory mode - This mode is used when the ORSPI4 is interfacing to asynchronous FPGA interfaces, such as POS-PHY Level 3, 1GbE, Utopia Level 3, etc. and storing the data in the virtual DPRAM FIFOs.
When operating in this mode, the SPI4 transmit logic will read port data from the FIFOs according to the calendar
sequence. If there is no data, it will send idle data and advance to the next port. It is the user's responsibility to
ensure the proper port data has been written to the virtual FIFO.
• External memory mode - This mode is used in conjunction with the Memory Controller or some other external
memory based interface where data is available only after some fixed delay. In this mode the SPI4 transmit logic
instructs the FPGA as to what port data to retrieve as well as how many bursts of data to retrieve. The FPGA is
responsible to write the data read from the Memory Controller into the DPRAMs. Data is read from the DPRAM
devices by the SPI4 transmit logic according to the transmit calendar.
The DPRAM read logic also includes a Port Descriptor Memory (PDM) which is a user configurable memory containing a list of read control parameters for all enabled ports to be polled. The depth of the memory is 256 locations,
10
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
which corresponds to the maximum number of ports that are supported by SPI4. The PDM data is comprised of
three separate segments - a 10-bit dynamic table maintained by the SPI4 logic, a static 20-bit table, and a dynamic
3-bit register file written by the FIFO Status Update (FSU) logic. The PDM provides a mapping of the SPI4 port
number to the FPGA interface device/port number, removing the burden from FPGA logic.
When port data is read from the PDM, a status update bit (the U-bit) is first examined to see whether the STAT field
is new or stale. If stale, then the STAT field is not considered for the rest of processing. If the STAT field is new (Ubit=1) the STAT field is used in conjunction with other field to calculate what the new Credit field for the port should
be.
A SATISFIED status indicates the corresponding port's FIFO is almost full, and only transfers using the remaining
previously granted 16-byte blocks (if any) may be sent to corresponding port until the next status update. No additional transfers to that port are permitted.
When a HUNGRY status indication is received, transfers up to MAXBURST2 16-byte blocks or the remainder of
what was previously granted (whichever is greater), may be sent to the corresponding port prior to the next status
update. A STARVING status indication indicates that buffer underflow is imminent in the corresponding PHY port.
When STARVING is received, transfers for up to MAXBURST1 16-byte blocks may be sent to the corresponding
port prior to the next status update.
If the U-bit is cleared, this indicates the STAT field has already been used to update the Credit field on a previous
Port servicing. Therefore, the Credit field should simply be reduced by BURST_VAL. Otherwise, the Credit field is
updated to the new Credit value minus BURST_VAL. In both cases, the output of the logic is used to update the
Credit field. If the Credit field is zero, and the STAT field is stale, then the port receives no service. Read accesses
of the port control information need to be optimized to minimize any lost bandwidth due to the Credit field having a
value of zero.
Data read from the DPRAMS is sent to the SPI4 transmit block which is responsible for the following functions:
• Combining the data and control words from the Transmit FIFO into the data format specified in the OIF SPI4
standard.
• DIP-4 calculation and insertion into the payload control word.
• Generation of idle/training control words in programmable intervals.
Training words are used to dynamically align the far end receiver. As long as a disabled status ‘11’ is received on
the SPI4 status channel, the transmit interface block sends continuous training patterns (10 training control words
followed by 10 training data words). When valid status is received on the status channel, user data is normally sent
on the SPI4 data link. However, users can also periodically schedule training patterns in TX_DATA_MAX_T periods. The training patterns can be repeated TX_ALPHA times. Both TX_ALPHA and TX_DATA_MAX_T are programmable control register bits.
The SPI4 transmit block contains the high-speed serializer which uses the x8 clock, synthesized by an internal
PLL, to generate the high-speed data from the low-speed 128-bit FIFO data. Data is transmitted off-chip using a
16-bit LVDS data bus - TDAT[15:0], a LVDS control bit - TCTL, and a source synchronous clock - TDCLK.
The 16-bit data bus and control are DDR with respect to TDCLK. In order to support 10 Gbits/s throughput, the
minimum frequency of TDCLK needs to be 622 Mbits/s (311 MHz DDR). To allow considerable margin above this
minimum data rate a maximum frequency of operation of 900 Mbits/s is supported.
The Transmit Status Protocol (S4TSP) block provides the interface to the SPI4 Transmit Status interfaces. These
signals can be either LVDS or LVCMOS buffers. The S4TSP block is responsible for the following functions:
• FIFO Status Decoding and Buffering.
• Framing using the status framing pattern.
• DIP-2 checking of incoming status information.
11
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The FIFO Status Update logic block reads the Port and Status information and uses this information to update Port
Descriptor Memory STAT field. Whenever a valid STAT field has been updated, the associated U-bit field is set as
discussed previously. This indicates that the STAT field is new and that the Credit field for that must be re-evaluated
the next time it is selected as a source for transmit data.
SPI4 Receive Path Overview
In the receive direction, data is received in SPI4 format on the LVDS I/Os at the receive interface. The data is written into DPRAM as received and read from the DPRAMs as requested by the FPGA logic. Control information is
also interpreted and buffered and idles and training sequences are removed from the incoming data stream.
Receive FIFO status is transmitted from the Receive Status interface according to a pre-configured polling
sequence contained within the Receive Calendar. Data is formatted into the SPI4 Receive Status format and sent
to the physical links as either LVDS or LVTTL signals.
The SPI4 block contains the high-speed receive logic. Incoming LVDS signals, in SPI4 format, include the 16-bit
data bus (RDAT[15:0]), a control bit (RCTL) and a source synchronous DDR clock (RDCLK). The incoming data is
deserialized to a 128-bit format and the control information is converted to an 8-bit format.
The SPI4 receive block also detects training patterns and performs dynamic alignment of the incoming data. At
speeds above 700 Mbit/s (350 MHz) it becomes necessary to use dynamic alignment. Skews of up to ± one clock
period can be compensated by the dynamic alignment logic. For low speed incoming data, static alignment can be
chosen through a programmable control bit. Various timing options of receive data vs. receive clock are also programmable.
The SPI4 block is responsible for decoding the in-band control information. It then forwards both the data and control information, such as link address, SOP, EOP and error, to the virtual FIFOs. The SPI4 block also parses the
control words embedded within the incoming data. Using this control information, it performs the following functions:
• Checks DIP-4 parity
• Monitors for continuous alignment (if more than a programmable number of DIP-4 parity errors exist, there may
be an alignment problem).
• Removes idle/training words.
• Extracts link address and SOP, EOP and valid packet (no error) signals.
In the receive direction there are also four Dual Port Memory (DPRAM) banks that contain a total of 8K bytes available for clock domain crossing and/or temporary buffering. As with the transmit buffers, each bank can be further
partitioned up to 8 virtual memories, one for each of 8 ports. The following are the characteristics of the DPRAM
virtual FIFOs:
• The DPRAM memories support asynchronous reads. Each DPRAM bank can be accessed on the FPGA side
with an individual clock.
• For data buffering beyond 32 ports, the DPRAM banks can be used as clock domain crossing FIFOs before writing the data and control information into an external memory. If fewer ports are supported, the virtual memories
can be aggregated, providing more buffer space for each port.
• Each DPRAM bank has a 32-bit data and 8-bit control read interface to the FPGA. When using the DPRAM
memories, the data can be read as either a 32-, 64-, or 128-bit data bus with associated control signals.
• At any time, the user can poll the status of a FIFO within a DPRAM bank by providing just the read address without a valid read enable.
• A FIFO empty flag is generated by the read control logic to the FPGA. This empty flag can be programmed to
indicate truly empty or < 1/4 full (1/4 full - 1).
12
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
In addition to formatting received data and sending it to the FPGA logic, the receive block also sends status information to the SPI4 status interface.
The Port Status Sequencer (PSS) block is responsible for providing port status to the SPI4 Receive Status block
logic according to a pre-configured calendar sequence. Status is derived from the fill-levels of the DPRAM FIFOs
and/or from the FPGA status interface.
The SPI4 Receive Status block is responsible for FIFO status encoding, calendar management, status pattern
encoding (sync bits “11”), DIP-2 calculation and optional calendar selection word encoding.
The SPI4 Receive Status block contains the low speed LVTTL output buffers and LVDS output buffers necessary
for the output stage of receive status logic. The option to choose between LVTTL or LVDS outputs is done by setting a control register bit.
SPI4 Debugging and Statistics Gathering Support
There are also several other features, including three loopback modes incorporated into the embedded core to
assist in debugging and statistic gathering. These features involve both the transmit and receive paths.
The three forms of loopback supported directly are:
• High-speed near-end loopback
• Far-end high-speed loopback
• Low-speed near-end loopback
The SPI4 blocks support the following error insertion and status reporting options for testing:
• DIP-4 odd parity is calculated over data and control words and inserted on the TX side. DIP-4 errors can be
forced by inverting the DIP-4 parity bits. DIP-4 parity is then checked at the receive interface.
• DIP-2 odd parity is calculated over the status frames and inserted on the RX side. DIP-2 errors can be forced by
inverting the DIP-2 parity bits. DIP-2 parity is then checked at the transmit status interface.
• Eight-bit counters are provided for counting DIP-4 and DIP-2 errors.
• Deskew error reporting for high-speed RX side dynamic alignment. This can cause an alarm.
• DPRAM FIFO overrun reporting. These can cause an alarm.
13
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Memory Controller - Overview
The Memory Controller block controls an interface to external Quad Data Rate (QDRII) SRAM for data buffering
between the FPGA logic and external memory. The key features of the Memory Controller interface are described
below:
Memory Controller Features
• Independent Memory Controller interface to external Quad Data Rate (QDRII) SRAMs from multiple suppliers for
data buffering.
– Provides additional packet buffering for > 32 ports
– Provides traffic smoothing for any number of ports
• The Controller supports a throughput of greater than 20 Gbits/s so that all the data received on the SPI4 interface at 10 Gbits/s can be buffered.
• The QDRII SRAM supports this throughput with 36 unidirectional data lines in both the read and write directions.
• The controller block provides the ability to access external QDRII SRAM through the FPGA.
– A set of 72 data signals across the core-FPGA interface
– Of the 72, 8 signals can be either used for parity or data.
– Simple asynchronous FIFO interface to FPGA for ease of design. A high-speed clock signal is provided to
the FPGA as an option to make the write and read synchronous, if desired.
• The core passes the data transparently to and from the QDRII SRAM in two-word or four-word bursts. Interfaces
to memory are 36 bits wide and the address buses are 18 bits wide.
– Supports the interfaces required for a 512K x 36 bit (18 Mbit) QDRII SRAM in two-word burst mode.
– Only 17 address lines are required in four-word burst mode.
• Status/Alarm reported to user through registers
– Data length mismatch from the write controller state machine
– Data instruction coherency error
– Write data, Read data FIFO overrun and underrun errors
• Additional high-speed Memory Controller can be implemented in FPGA gates if required.
SERDES Logic Block - Overview
The SERDES logic block in of the ORSPI4 contains four Clock and Data Recovery (CDR) macrocells and four Serializer/Deserializer (SERDES) macrocells to support four channels of 8b/10b (IEEE 802.3.2002) encoded serial
links. The logic block also contains Fiber Channel and XAUI-based state machines, logic to support multi-channel
alignment and MUX/DEMUX logic for the FPGA/core interface. Figure 4 shows the SERDES top level block diagram and the basic data flow. Boundary scan for the SERDES only includes programmable I/Os and does not
include any of the embedded block I/Os.
14
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 4. SERDES Top Level Block Diagram.
0.6 Gbits/s
TO
3.7 Gbits/s
DATA
STANDARD
FPGA I/Os
ORCA
SERIES 4
FPGA LOGIC
BYTE- SERDES w/
8b/10b
WIDE CLOCK/DATA
DECODER/ENCODER DATA RECOVERY
4:1 MUX/1:4 DEMUX
CML
I/Os
4 FULLDUPLEX
SERIAL
CHANNELS
0.6 Gbits/s
TO
3.7 Gbits/s
DATA
The serial channels can each operate at up to 3.7 Gbits/s (2.96 Gbits/s data rate) with a full-duplex synchronous
interface with built-in clock recovery (CDR). The 8b/10b encoding provides guaranteed ones density for the CDR,
byte alignment, and error detection. The core is also capable of frame synchronization and physical link monitoring.
An overview of the individual blocks in the embedded core is presented in the following paragraphs. The SERDES
portion of the core contains a quad transceiver block for serial data transmission at a selectable data rate of 0.6 to
3.7 Gbits/s. Each SERDES channel features high-speed 8b/10b parallel I/O interfaces to other core blocks and
high-speed CML interfaces to the serial links.
Serializer and Deserializer (SERDES)
The SERDES portion of the core contains a transceiver block for serial data transmission at a selectable data rate
of 0.6-3.7 Gbits/s. Each SERDES channel features high-speed 8b/10b parallel I/O interfaces to other core blocks
and high-speed CML interfaces to the serial links.
The SERDES circuitry consists of receiver, transmitter, and auxiliary functional blocks. The receiver accepts highspeed (up to 3.7 Gbits/s) serial data. Based on data transitions, the receiver locks an analog receive PLL for each
channel to retime the data, then demultiplexes the data down to parallel bytes and an accompanying clock.
The transmitter operates in the reverse direction. Parallel bytes are multiplexed up to 3.7 Gbits/s serial data for offchip communication. The transmitter generates the necessary clocks from a lower speed reference clock.
The transceiver is controlled and configured through the system bus in the FPGA logic and through the external 8bit microprocessor interface of the FPGA. Each channel has associated dedicated registers that are readable and
writable. There are also global registers for control of common circuitry and functions.
The SERDES performs 8b/10b encoding and decoding for each channel. The 8b/10b transmission code can support either Ethernet or Fibre Channel specifications for serial encoding/decoding, special characters, and error
detection.
The user can disable the 8b/10b decoder to receive raw 10-bit words, which will be rate reduced by the SERDES. If
this mode is chosen, the user must also bypass the multichannel alignment FIFOs.
The SERDES macrocell contains its own dedicated PLLs for both transmit and receive clock generation. The user
provides a reference clock of the appropriate frequency. The receiver PLLs extract the clock from the serial input
data and re-time the data with the recovered clock.
MUX/DEMUX Block
The MUX/DEMUX logic converts the data format for the high-speed serial links to a wide, low-speed format for
crossing the CORE/FPGA interface. The intermediate interface to the SERDES macrocell runs at 1/10th the bit
15
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
rate of the data lane. The MUX/DEMUX converts the data rate and bus width so the interface to the FPGA core can
run at 1/4th this intermediate frequency, giving a range of 25.0 to 92.5 MHz for the data rates into and out of the
FPGA logic.
Multi-Channel Alignment FIFOs
In the ORSPI4 SERDES block, the four incoming data channels can be independent of each other or can be synchronized in several ways. Two channels within a SERDES block can be aligned together; channels A and B and/or
channels C and D. Finally, four channels in a SERDES block can be aligned together to form a communication
channel with a bandwidth of 10 Gbits/s. Individual channels within an alignment group can be disabled (i.e., powered down) without disrupting other channels.
XAUI and Fibre Channel Link State Machines
Two separate link state machines are included in the architecture. A XAUI-based link state machine is included in
the embedded core to implement the IEEE 802.3ae standard. A separate state machine for Fibre Channel is also
implemented.
FPGA/Embedded Core Interface
In 8b/10b mode, the FPGA logic will receive/transmit 32-bits of data (up to 92.5 MHz) and four K_CTRL bits from/to
the embedded core. There are 4 data streams in each direction plus additional timing, status and control signals.
Data sent to the FPGA can be aligned using comma (/K/) characters or /A/ character as specified either by Fibre
Channel or by IEEE 802.3ae for XAUI based interfaces. The alignment character is made available to the FPGA
along with the data. The special characters K28.1, K28.5 and K28.7 are treated as valid comma characters by the
SERDES.
If the receive channel alignment FIFOs are bypassed, then each channel will provide its own receive clock in addition to data and comma character detect signals. If the 8b/10b decoders are bypassed, then 40-bit data streams
are passed to the FPGA logic. No channel alignment can be done in 8b/10b bypass mode.
SERDES Features
• Four channels of 0.6-3.7G SERDES with 8b/10b encoding/decoding are supported. The SERDES quad is IEEE
P802.3ae/D4.01 XAUI based and also supports the FC (ANSI X3.230:1994) link synchronization state machine
specification.
• The high-speed SERDES are programmable and support serial data rates including 622 Mbits/s, 1.0 Gbits/s,
1.25 Gbits/s, 2.5 Gbits/s, 3.125 Gbits/s, and 3.7 Gbits/s. Operation has been demonstrated on design tolerance
devices at 3.7 Gbits/s across 26 in. of FR-4 backplane and at 3.2 Gbits/s across 40 in. of FR-4 backplane across
temperature and voltage specifications.
• Asynchronous operation per receive channel, with the receiver frequency tolerance based on one reference
clock per four channels (separate PLL per channel).
• Ability to select full-rate or half-rate operation per transmit or receive channel by setting the appropriate control
registers.
• Programmable one-half amplitude transmit mode for reduced power in chip-to-chip application.
• Transmit preemphasis (programmable) for improved receive data eye opening.
• 32-bit (8b/10b) or 40-bit (raw data) parallel internal bus for data processing in FPGA logic.
• Provides a 10 Gbits/s backplane interface to a switch fabric using four 2.5 Gbit/s links. Also supports port cards
at 2.5 Gbit/s.
• 3.125 Gbits/s SERDES compliant with XAUI serial data specification for 10 Gigabit Ethernet applications.
• Most XAUI features for 10 Gigabit Ethernet are embedded including the required link state machine.
• Compliant to Fibre Channel physical layer specification.
16
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• High-Speed Interface (HSI) function for clock/data recovery serial backplane data transfer without external
clocks.
• Four-channel HSI functions provide 2.96 Gbits/s serial user data interface per channel (8b/10b encoding and
decoding) for a total chip bandwidth of > 10 Gbits/s (full duplex).
• SERDES have low-power CML buffers and support 1.5 V or 1.8 V I/Os. This allows use of the SERDES with optical transceiver, coaxial copper media, shielded twisted pair wiring or high-speed backplanes such as FR-4.
• Powerdown option of SERDES HSI receiver or transmitter is on a per-channel basis.
• Automatic lock to reference clock in the absence of valid receive data.
• High-speed and low-speed loopback test modes.
• No external components required for clock recovery and frequency synthesis.
• Built-in boundary scan (IEEE ® 1149.1 and 1149.2 JTAG) for the programmable I/Os, not including the SERDES
interface.
• FIFOs can align incoming data either across groups of four channels or groups of two channels. Alignment is
done either using comma characters or by using the /A/ character in XAUI mode. Optional ability to bypass the
alignment FIFOs for asynchronous operation between channels (Each channel includes its own clock and frame
pulse or comma detect).
ORSPI4 FPGA Logic Overview
The following sections provide a brief overview of the main architectural features of the ORSPI4 FPGA logic. For
more detailed information, please refer to the ORCA Series 4 FPGA Data Sheet which can be found under the
“Products” folder on the Lattice Semiconductor main Web site: www.latticesemi.com. The ORCA Series 4 FPGA
Data Sheet provides detailed information required for designing with the ORSPI4 device. Topics covered in the
ORCA Series 4 Data Sheet include:
• FPGA Logic Architecture
• FPGA Routing Resources
• FPGA Clock Routing Resources
• FPGA Programmable Input/Output Cells (PICs)
• FPGA Embedded Block RAM (EBR)
• Microprocessor Interface (MPI)
• Phase-Locked Loops (PLLs)
• Electrical Characteristics
• FPGA Timing Characteristics
• Power-up
• Configuration
ORCA Series 4 FPGA Logic Overview
The ORCA Series 4 architecture is a new generation of SRAM-based programmable devices from Lattice. It
includes enhancements and innovations geared toward today’s high-speed systems on a single chip. Designed
with networking applications in mind, the Series 4 family incorporates system-level features that can further reduce
logic requirements and increase system speed. ORCA Series 4 devices contain many new patented enhancements and are offered in a variety of packages and speed grades.
17
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The hierarchical architecture of the logic, clocks, routing, RAM, and system-level blocks create a seamless merge
of FPGA and ASIC designs. Modular hardware and software technologies enable System-on-Chip integration with
true plug-and-play design implementation.
The architecture consists of the following basic elements: Programmable Logic Cells (PLCs), Programmable I/O
cells (PIOs), Embedded Block RAMs (EBRs), plus supporting system-level features. These elements are interconnected with a rich routing fabric of both global and local wires. An array of PLCs is surrounded by common interface blocks that provide an abundant interface to the adjacent PLCs or system blocks. Routing congestion around
these critical blocks is eliminated by the use of the same routing fabric implemented within the programmable logic
core.
Each PLC contains a Programmable Function Unit (PFU), Supplemental Logic Interconnect Cell (SLIC), local routing resources, and configuration RAM. Most of the FPGA logic is performed in the PFU, but decoders, PAL-like
functions, and 3-state buffering can be performed in the SLIC. The PIOs provide device inputs and outputs and can
be used to register signals and to perform input demultiplexing, output multiplexing, uplink and downlink functions,
and other functions on two output signals.
Large blocks of 512 x 18 quad-port RAM complement the existing distributed PFU memory. The RAM blocks can
be used to implement RAM, ROM, FIFO, multiplier, and CAM. Some of the other system-level functions include the
MPI, PLLs, and the Embedded System Bus (ESB).
18
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Programmable Logic Features
• High-performance programmable logic:
– 0.16 µm, 7-level metal technology.
– Internal performance of >250 MHz.
– Over 600K usable system gates.
– Meets multiple I/O interface standards.
– 1.5 V operation (30% less power than 1.8 V operation), translates to greater performance.
• Traditional I/O selections:
– LVTTL (3.3V) and LVCMOS (2.5 V and 1.8 V) I/Os.
– Per pin-selectable I/O clamping diodes provide 3.3 V PCI compliance.
– Individually programmable drive capability:
24 mA sink/12 mA source, 12 mA sink/6 mA source, or 6 mA sink/3 mA source.
– Two slew rates supported (fast and slew-limited).
– Fast-capture input latch and input Flip-Flop (FF)/latch for reduced input setup time and zero hold time.
– Fast open-drain drive capability.
– Capability to register 3-state enable signal.
– Off-chip clock drive capability.
– Two-input function generator in output path.
• New programmable high-speed I/O:
– Single-ended: GTL, GTL+, PECL, SSTL3/2 (Class I and II), HSTL (Class I, III, IV), ZBT, and DDR.
– Double-ended: LVDS, bused-LVDS, and LVPECL. Programmable, (on/off) internal parallel termination (100
Ω) is also supported for these I/Os.
• New capability to (de)multiplex I/O signals:
– New DDR on both input and output at rates up to 350 MHz (700 Mbits/s effective rate).
– New 2x and 4x downlink and uplink capability per I/O (i.e., 50 MHz internal to 200 MHz I/O).
• Enhanced twin-quad Programmable Function Unit (PFU):
– Eight 16-bit Look-Up Tables (LUTs) per PFU.
– Nine user registers per PFU, one following each LUT, and organized to allow two nibbles to act independently, plus one extra for arithmetic operations.
– New register control in each PFU has two independent programmable clocks, clock enables, local
SET/RESET, and data selects.
– New LUT structure allows flexible combinations of LUT4, LUT5, new LUT6, 4 → 1 MUX, new
8 → 1 MUX, and ripple mode arithmetic functions in the same PFU.
– 32 x 4 RAM per PFU, configurable as single- or dual-port. Create large, fast RAM/ROM blocks (128 x 8 in
only eight PFUs) using the Supplemental Logic and Interconnect Cell (SLIC) decoders as bank drivers.
– Soft-Wired LUTs (SWL) allow fast cascading of up to three levels of LUT logic in a single PFU through fast
internal routing which reduces routing congestion and improves speed.
– Flexible fast access to PFU inputs from routing.
– Fast-carry logic and routing to all four adjacent PFUs for nibble-wide, byte-wide, or longer arithmetic functions, with the option to register the PFU carry-out.
• Abundant high-speed buffered and non-buffered routing resources provide 2x average speed improvements over
previous architectures.
• Hierarchical routing optimized for both local and global routing with dedicated routing resources. This results in
faster routing times with predictable and efficient performance.
• SLIC provides eight 3-state buffers, up to a 10-bit decoder, and PAL™-like AND-OR-Invert (AOI) in each programmable logic cell.
• New 200 MHz embedded quad-port RAM blocks, 2 read ports, 2 write ports, and 2 sets of byte lane enables.
Each embedded RAM block can be configured as:
– 1—512 x 18 (quad-port, two read/two write) with optional built in arbitration.
19
Lattice Semiconductor
–
–
–
–
–
–
–
–
–
ORCA ORSPI4 Data Sheet
1—256 x 36 (dual-port, one read/one write).
1—1K x 9 (dual-port, one read/one write).
2—512 x 9 (dual-port, one read/one write for each).
2 RAMS with an arbitrary number of words whose sum is 512 (or less) x 18 (dual-port, one read/one write).
Supports joining of RAM blocks.
Two 16 x 8-bit content addressable memory (CAM) support.
FIFO 512 x 18, 256 x 36, 1K x 9, or dual 512 x 9.
Constant multiply (8 x 16 or 16 x 8).
Dual variable multiply (8 x 8).
• Embedded 32-bit internal system bus plus 4-bit parity interconnects FPGA logic, MicroProcessor interface (MPI),
embedded RAM blocks, and embedded standard cell blocks with 100 MHz bus performance. Included are builtin system registers that act as the control and status center for the device.
• Built-in testability:
– Full boundary scan (IEEE 1149.1 and Draft 1149.2 JTAG).
– Programming and readback through boundary scan port compliant to IEEE Draft 1532:D1.7.
– TS_ALL testability function to 3-state all I/O pins.
– New temperature-sensing diode.
• Improved built-in clock management with Programmable Phase-Locked Loops (PPLLs) provide optimum clock
modification and conditioning for phase, frequency, and duty cycle from 20 MHz up to 420 MHz. Multiplication of
the input frequency up to 64x and division of the input frequency down to 1/64x possible.
• New cycle stealing capability allows a typical 15% to 40% internal speed improvement after final place and route.
This feature also enables compliance with many setup/hold and clock to out I/O specifications and may provide
reduced ground bounce for output buses by allowing flexible delays of switching output buffers.
Programmable Logic System Features
• PCI local bus compliant for FPGA I/Os.
• Improved PowerPC ® 860 and PowerPC II high-speed synchronous microprocessor interface can be used for
configuration, readback, device control, and device status, as well as for a general-purpose interface to the
FPGA logic, RAMs, and embedded standard cell blocks. Glueless interface to synchronous PowerPC processors
with user-configurable address space provided.
• New embedded AMBA ™ specification 2.0 AHB system bus (ARM ® processor) facilitates communication among
the microprocessor interface, configuration logic, Embedded Block RAM, FPGA logic, and embedded standard
cell blocks.
• Variable size bused readback of configuration data capability with the built-in microprocessor interface and system bus.
• Internal, 3-state, and bidirectional buses with simple control provided by the SLIC.
• New clock routing structures for global and local clocking significantly increases speed and reduces skew (<200
ps for OR4E04).
• New local clock routing structures allow creation of localized clock trees.
• Two new edge clock routing structures allow up to six high-speed clocks on each edge of the device for improved
setup/hold and clock to out performance.
• New Double-Data Rate (DDR) and Zero-Bus Turn-around (ZBT) memory interfaces support the latest highspeed memory interfaces.
• New 2x/4x uplink and downlink I/O capabilities interface high-speed external I/Os to reduced speed internal
logic.
• Meets Universal Test and Operations PHY Interface for ATM (UTOPIA) levels 1, 2, and 3; as well as POS-PHY3.
20
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
PLC Logic
Each PFU within a PLC contains eight 4-input (16-bit) LUTs, eight latches/FFs, and one additional Flip-Flop that
may be used independently or with arithmetic functions.
The PFU is organized in a twin-quad fashion; two sets of four LUTs and FFs that can be controlled independently.
Each PFU has two independent programmable clocks, clock enables, local set/reset, and data selects. LUTs may
also be combined for use in arithmetic functions using fast-carry chain logic in either 4-bit or 8-bit modes. The
carry-out of either mode may be registered in the ninth FF for pipelining.
Each PFU may also be configured as a synchronous 32 x 4 single- or dual-port RAM or ROM. The FFs (or latches)
may obtain input from LUT outputs or directly from invertible PFU inputs, or they can be tied high or tied low. The
FFs also have programmable clock polarity, clock enables, and local set/reset.
The SLIC is connected from PLC routing resources and from the outputs of the PFU. It contains eight 3-state, bidirectional buffers, and logic to perform up to a 10-bit AND function for decoding, or an AND-OR with optional
INVERT to perform PAL-like functions. The 3-state drivers in the SLIC and their direct connections from the PFU
outputs make fast, true, 3-state buses possible within the FPGA, reducing required routing and allowing for realworld system performance.
Programmable I/O
The Series 4 PIO addresses the demand for the flexibility to select I/Os that meet system interface requirements.
I/Os can be programmed in the same manner as in previous ORCA devices, with the additional new features which
allow the user the flexibility to select new I/O types that support High-Speed Interfaces.
Each PIO contains four programmable I/O pads and is interfaced through a common interface block to the FPGA
array. The PIO is split into two pairs of I/O pads with each pair having independent clock enables, local set/reset,
and global set/reset. On the input side, each PIO contains a programmable latch/Flip-Flop, which enables very fast
latching of data from any pad. The combination provides for very low setup requirements and zero hold times for
signals coming on-chip. It may also be used to demultiplex an input signal, such as a multiplexed address/data signal, and register the signals without explicitly building a demultiplexer with a PFU.
On the output side of each PIO, an output from the PLC array can be routed to each output Flip-Flop, and logic can
be associated with each I/O pad. The output logic associated with each pad allows for multiplexing of output signals
and other functions of two output signals.
The output FF, in combination with output signal multiplexing, is particularly useful for registering address signals to
be multiplexed with data, allowing a full clock cycle for the data to propagate to the output. The output buffer signal
can be inverted, and the 3-state control can be made active-high, active-low, or always enabled. In addition, this 3state signal can be registered or nonregistered.
The Series 4 I/O logic has been enhanced to include modes for speed uplink and downlink capabilities. These
modes are supported through shift register logic, which divides down incoming data rates, or multiplies up outgoing
data rates. This new logic block also supports high-speed DDR mode requirements where data is clocked into and
out of the I/O buffers on both edges of the clock.
The new programmable I/O cell allows designers to select I/Os which meet many new communication standards
permitting the device to hook up directly without any external interface translation. They support traditional FPGA
standards as well as high-speed, single-ended, and differential-pair signaling. Based on a programmable, bank-oriented I/O ring architecture, designs can be implemented using 3.3 V, 2.5 V, 1.8 V, and 1.5 V referenced output levels.
Routing
The abundant routing resources of the Series 4 architecture are organized to route signals individually or as buses
with related control signals. Both local and global signals utilize high-speed buffered and non-buffered routes. One
PLC segmented (x1), six PLC segmented (x6), and bused half chip (xHL) routes are patterned together to provide
high connectivity with fast software routing times and high-speed system performance.
21
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Eight fully distributed primary clocks are routed on a low-skew, high-speed distribution network and may be
sourced from dedicated I/O pads, PLLs, or the PLC logic. Secondary and edge-clock routing is available for fast
regional clock or control signal routing for both internal regions and on device edges. Secondary clock routing can
be sourced from any I/O pin, PLLs, or the PLC logic.
The improved routing resources offer great flexibility in moving signals to and from the logic core. This flexibility
translates into an improved capability to route designs at the required speeds when the I/O signals have been
locked to specific pins.
System-Level Features
The Series 4 also provides system-level functionality by means of its microprocessor interface, Embedded System
Bus, quad-port Embedded Block RAMs, universal programmable Phase-Locked Loops, and the addition of highly
tuned networking specific Phase-Locked Loops. These functional blocks allow for easy, glueless system interfacing
and the capability to adjust to varying conditions in today’s high-speed networking systems.
MicroProcessor Interface
The MPI provides a glueless interface between the FPGA and PowerPC microprocessors. Programmable in 8-bit,
16-bit, and 32-bit interfaces with optional parity to the Motorola® PowerPC 860 bus, it can be used for configuration
and readback, as well as for FPGA control and monitoring of FPGA status. All MPI transactions utilize the Series 4
Embedded System Bus at 66 MHz performance.
A system-level microprocessor interface to the FPGA user-defined logic following configuration, through the system
bus, including access to the Embedded Block RAM and general user-logic, is provided by the MPI. The MPI supports burst data read and write transfers, allowing short, uneven transmission of data through the interface by
including data FIFOs. Transfer accesses can be single beat (1 x 4 bytes or less), 4-beat (4 x 4 bytes), 8-beat (8 x 2
bytes), or 16-beat (16 x 1 bytes).
System Bus
An on-chip, multimaster, 8-bit system bus with 1-bit parity facilitates communication among the MPI, configuration
logic, FPGA control, and status registers, Embedded Block RAMs, as well as user logic. Utilizing the AMBA specification Rev 2.0 AHB protocol, the Embedded System Bus offers arbiter, decoder, master, and slave elements.
Master and slave elements are also available for the user-logic and a slave interface is used for control and status
of the embedded backplane transceiver portion of the ORSPI4.
The system bus control registers can provide control to the FPGA such as signaling for reprogramming, reset functions, and PLL programming. Status registers monitor INIT, DONE, and system bus errors. An interrupt controller is
integrated to provide up to eight possible interrupt resources. Bus clock generation can be sourced from the microprocessor interface clock, configuration clock (for slave configuration modes), internal oscillator, user clock from
routing, or from the port clock (for JTAG configuration modes).
Phase-Locked Loops
The ORSPI4 provides 4 programmable PLLs accessible through clock routing in the FPGA array. There are two
standard programmable PLLs (PPLL) and 2 high-speed programmable PLLs (HPPLL) available in the ORSPI4.
The two PPLLs are capable of manipulating and conditioning clock outputs from 15 MHz to 200 MHz. The two
HPPLLs are capable of manipulating and conditioning clock outputs from 60 MHz to 420 MHz. Programmable
PLLs can be used to manipulate the frequency, phase, and duty cycle of a clock signal. Frequencies can be
adjusted from 1/8x to 8x, the input clock frequency. Each programmable PLL provides two outputs that have different multiplication factors but can have the same phase relationships. Duty cycles and phase delays can be
adjusted in 12.5% of the clock period increments. An automatic input buffer delay compensation mode is available
for phase delay. Each PPLL provides two outputs that can have programmable (12.5% steps) phase differences.
FPGA Configuration
The FPGA functionality is determined by internal configuration RAM. The FPGAs internal initialization/configuration
circuitry loads the configuration data at power-up or under system control. The configuration data can reside exter-
22
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
nally in an EEPROM or any other storage media. Serial EEPROMs provide a simple, low pin-count method for configuring FPGAs.
The RAM is loaded by using one of several configuration modes. Supporting the traditional master/slave serial,
master/slave parallel, and asynchronous peripheral modes, the Series 4 also utilizes its microprocessor interface
and Embedded System Bus to perform both programming and readback. Daisy chaining of multiple devices and
partial reconfiguration are also permitted.
Other configuration options include the initialization of the embedded-block RAM memories and FPSC memory, as
well as system bus options and bit stream error checking. Programming and readback through the JTAG (IEEE
1149.2) port is also available, meeting In-System Programming (ISP) standards (IEEE 1532 Draft).
FPSC Configuration
Configuration of the ORSPI4 occurs in two stages: FPGA bit-stream configuration and embedded core setup.
Prior to becoming operational, the FPGA goes through a sequence of states, including power-up, initialization, configuration, start-up, and operation. The FPGA logic is configured by standard FPGA bit-stream configuration means
as discussed in the ORCA Series 4 FPGA data sheet.
After the FPGA configuration is complete, the options for the embedded core are set based on the contents of registers that are accessed through the FPGA system bus. The system bus itself can be driven by an external PowerPC compliant microprocessor via the MPI block or via a user master interface in FPGA logic. A simple IP block
that drives the system by using the user register interface and very little FPGA logic is available in the MPI/System
Bus Technical Note (TN-1017). This IP block sets up the embedded core via a state machine and allows the
ORSPI4 to work in an independent system without an external microprocessor interface.
ORSPI4 Package Options
The ORSPI4 FPSC is available in two package options: a 1036 ftSBGA and a 1156 fpBGA. The 1036 pin package
provides an OR4E06 FPGA array (16,192 LEs, 148 Kbits of Embedded Block RAM), 498 FPGA user I/Os, two
SPI4 interfaces (or one SPI4 interface and a quad high-speed SERDES interface), and a high-speed QDRII SRAM
Controller. The 1156 pin package provides an OR4E06 FPGA array (16,192 LEs, 148 Kbits of Embedded Block
RAM), 356 FPGA user I/Os, two SPI4 interfaces (SERDES interface not available on this package), and a highspeed QDRII SRAM Controller.
Additional Information
Contact your local Lattice representative for additional information regarding the ORCA Series 4 FPGA devices, or
visit our website at: http://www.latticesemi.com/orca
Links to Specs and Standards
Optical Internetworking Forum – OIF-SPI4-02.0 - www.oiforum.com
Fibre Channel Physical and Signaling Interface – FC-PH ANSI X3.230-1994 - www.t11.org
10 Gigabit Ethernet – IEEE P802.3ae - www.ieee.org
18Mb QDR-II SRAM 2-word burst – MT54W512H36B - www.cypress.com/products/micron/micron.cfm
18Mb QDR-II SRAM 4-word burst – MT54W512H36B - www.cypress.com/products/micron/micron.cfm
36Mb QDR-II SRAM 2-word burst – KTR323682M - www.samsung.com/Products/Semiconductor/SRAM/index.htm
36Mb QDR-II SRAM 4-word burst – KTR323684M - www.samsung.com/Products/Semiconductor/SRAM/index.htm
23
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 SPI4 Data Formats
The data format across the SPI4 interface follows the OIF SPI4 convention where the lowest byte number occupies
the highest bit positions within the 16-bit word as shown in Figure 5. On payload transfers that do not end on an
even byte boundary, the unused byte (after the last valid byte) on bit positions 7 through 0 is set to all zeroes as
shown in Figure 5.
Figure 5. SPI4 Byte and Bit Ordering
15
0
7
Byte 0
TDAT
Byte 1
Byte 3
Byte 2
Byte 4
15
x (set to zeros)
0
7
Byte 0
RDAT
Byte 1
Byte 3
Byte 2
Byte 4
x (set to zeros)
At the FPGA-embedded core RX and TX interface, the same SPI4 convention is followed wherein the lowest byte
number occupies the highest bit positions within a word. This is the same in all operating modes - 32-bit, 64-bit and
128-bit.
Byte enables for all data except EOP should be “1”. During an EOP, the last valid byte enable within a 32-bit, 64-bit
or 128-bit word indicates the last byte for the packet. Figure 6 shows EOP signal being asserted during Word 3. In
Figure 6, the last valid byte enable within “1110” in Word 3 indicates the EOP. The valid byte enables during an
EOP are “1111”, “1110”, “1100” and “1000”. If the packet was errored, the ERR signal is asserted and will remain
asserted until EOP as shown in Figure 6
Figure 6. Example of EOP Indication in 32-Bit Mode
Word 0
Word 1
0 1 2 3
0 1 2 3
Word 2
Word 3
0 1 2 3
0 1 2 3
Byte
BE0
1 1 1
BE1
1
1 1 1 1
BE2
1 1 1
BE3
1
1 1
1 0
Bit
SPI[A,B]_TX32_EOP_j
SPI[A,B]_RX32_EOP_j
SPI[A,B]_TX32_ERR_j
SPI[A,B]_RX32_ERR_j
Clock 1
Clock 2
Clock 3
24
Clock 4
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The bit ordering in the data format in the 32-bit aggregation mode is shown in Figure 7. In 32-bit mode, data transfers are done in 4-word bursts with the exception of an EOP. As shown in the figure, SOP is always aligned to the
most significant 32-bit word, Word 0 of a 4-word burst. The first byte of a packet is always Word 0. The SOP indicator is high during Word 0. EOP can be any byte within the 32-bit word. The last valid byte enable within a 32-bit
word indicates the end of packet. The EOP signal can be high during Word 0, Word 1, Word 2 or Word 3. It should
be used in conjunction with the byte enables to determine the last byte in that data transfer. If data transfers do not
end on Word 3, then the burst is terminated and Word 0 of the next burst is sent to the user. For example, if EOP
occurs during Word 2, Word 3 will be discarded and Word 0 of the next word will be sent to the user.
Figure 7. Byte and Bit Ordering in 32-Bit Operating Mode
SPI[A,B]_TX32_DATA_j[31:0]
or
SPI[A,B]_RX32_DATA_j[31:0]
FPGA
DPRAM
31
23
15
7
0 31
23
15
7
0 31
23
15
7
0 31
23
15
7
0
Byte 0 Byte 1Byte 2 Byte 3 Byte 0 Byte 1 Byte 2 Byte 3 Byte 0 Byte 1Byte 2 Byte 3 Byte 0 Byte 1 Byte 2 Byte 3
Word 0
Word 2
Word 3
Clock 3
Clock 4
Word 1
127
95 63
31 0
W0 W1 W2 W3
SPI[A,B]_RX32_SOP_j
SPI[A,B]_RX32_SOP_j
Clock 2
Clock 1
Time
Byte 0 is the SOP
The bit ordering in the data format in the 64-bit aggregation mode is shown in Figure 8. In 64-bit mode, data transfers are done in 2-word bursts with the exception of an EOP. As shown in the figure, SOP is always aligned to the
most significant 64-bit Word 0 of a 2-word burst. The first byte of a packet is always Word 0. The SOP indicator is
high during word Word 0.
Figure 8. Byte and Bit Ordering in 64-Bit Mode
SPI[A,B]_TX64_DATA_j[63:0]
SPI[A,B]_RX64_DATA_j[63:0] or
63
55
47
39 32
31 23
15
7
0 63
55
47
FPGA
39 32 31
23
15
7
DPRAM
0
Byte 0 Byte 1Byte 2 Byte 3 Byte 4Byte 5Byte 6 Byte 7
Byte 0 Byte 1Byte 2 Byte 3 Byte4 Byte 5Byte 6 Byte 7
Word 0
Word 1
SPI[A,B]_TX64_SOP_j
SPI[A,B]_RX64_SOP_j
Clock 2
Clock 1
Time
25
127
95 63
Word 0
31
0
Word 1
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The bit ordering in the data format in the 128-bit aggregation mode is shown in Figure 9. The first byte of a packet
is always byte 0 of the 128-bit word. As shown in the figure, SOP is always aligned to the most significant 64-bit
Word 0 of a 2-word burst. SOP is always aligned to byte 0 of the 128-bit word.
Figure 9. Byte and Bit Ordering in 128-Bit Mode
SPI[A,B]_TX128_DATA[127:0] or
SPI[A,B]_RX128_DATA[127:0]
DPRAM
FPGA
127
127
119
111
103 96 95
Byte 0 Byte 1 Byte 2 Byte 3
87
79
71
64 63
Byte 4 Byte 5 Byte 6 Byte 7
55
47
39
3231
23
15
7
0
Byte 8 Byte 9 Byte 10 Byte 11 Byte12 Byte 13 Byte 14 Byte 15
Word 0
SPI[A,B]_TX128_SOP
SPI[A,B]_RX128_SOP
Clock 1
Time
26
95 63
31
Word 0
0
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPI4 Transmit Path Functional Description
This section describes the transmit section of the SPI4 interface. The ORSPI4 device contains two identical, yet
independent Transmit SPI4 compliant interfaces within the FPSC. The description provided within this section is
applicable to both Transmit SPI4 interfaces.
The Transmit SPI4 interface supports the following features:
• Independent TX interface that is not tied to associated Receive SPI4 interface
• 10 Gbit/s data throughput
• 4 dual-port memories used to provide 256 Bytes of buffering for up to 32 ports. If support for more than 32 ports
is required, the dual-port memories can be used, or they can be used for clock crossing purposes while data is
buffered with external memory.
• Simple FIFO-like interface from FPGA to SPI4 TX embedded core block.
• Calendar Control Logic, including the Transmit Calendar, Shadow Calendar and support for up to 256 ports (the
maximum allowable number of SPI4 ports).
• Mixed data width aggregation modes at the user Transmit interface. 32, 64, and 128-bit modes are supported.
• Programmable calendar table, supporting all calendar configuration parameters as specified in the SPI4 standard.
• Feedback to FPGA of currently serviced SPI4 port.
The Transmit SPI4 logic enables users to write port data from a variety of interfaces and associated clock domains
using Dual Port RAMs (DPRAM) for temporary storage and clock domain crossing. Data is written into the DPRAM
banks from the FPGA and read according to a pre-configured transmit calendar sequence. Data is formatted into
the SPI4 format and transmitted to the physical links as LVDS signals, as specified by OIF-SPI4-02.0.
In addition to the transmit data path, out-of-band status information is received on the Transmit Status lines. This
information is used, along with preconfigured Calendar sequence information, to schedule the servicing of SPI4
port for data transmission. The status information is also passed back to the FPGA logic. There are also several
other features incorporated into the embedded core such as parallel loopback and SPI4 loopback to assist in
debugging and statistic gathering.
The major blocks associated with the ORSPI4 transmitter are:
• Four Transmit DPRAM Banks
• Address Map and Arbiter (AMA)
• Transmit Calendar Control Logic
– Port Write Sequencer Logic (PWS)
• SPI4 Logic - Data
– SPI4 Transmit Data Logic (TDP)
– SPI4 Transmit I/O Interface (TDO)
• SPI4 Transmit Status Logic (TSP)
– SPI4 Transmit Status Interface (TSI)
– SPI4 Transmit Status Protocol (TSP)
These blocks will be described in detail in the following sections. The ORSPI4 Transmit functional block diagram is
shown in Figure 10.
.
27
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 10. ORSPI4 Transmit Functional Block Diagram
k = TX32, TX64 or TX128
j = 0, 1, 2 or 3
SPI[A,B]_k_DATA_j, BEj
FPGA Interface
SPI[A,B]_k_SOPj, ERRj
SPI[A,B]_k_PORT_j
SPI[A,B]_k_WE_j
[A,B]TDAT
16
SPI[A,B]_k_ADDRj
Address
Map &
Arbiter
TX
DPRAM
TDP
TDP
[A,B]TCTL
TDO
[A,B]TDCLK
SPI[A,B]_k_WD_CNT_RST_j
SPI[A,B]_k_LINK_DIS_j
SPI[A,B]_k_FIFO_FULL_j
SPI[A,B]_k_CLK_j
SPI[A,B]_k_PORT_ID
AMA_ID
SPI[A,B]_k_PORT_ID
BURST_VAL
8
PORT_ID
SPI[A,B]_k_STAT
2
SPI[A,B]_k_BURST_VAL
4
TX Calendar
Control Logic
PORT_STAT TSP
TLSTAT
TLCLK TSI
2
[A,B]TSTAT
[A,B]TSCLK
ORSPI4 Transmit Functional Block Overview
The user can write transmit data and associated control signals to the TX DPRAM bank using either multiple 32- or
64-bit interfaces, or a single aggregated 128-bit interface. The data bus interface is software configurable. The TX
DPRAM block is made up of 4 configurable DPRAMs, used for transmit data buffering and clock domain crossing.
The DPRAMs can be configured via software to support up to 8 virtual partitions each, providing a maximum of 32
virtual FIFOs, each being 256 Bytes deep. Data is read from the DPRAMs according to the configured Transmit
Calendar within the TX Calendar Control Logic. The control logic provides both the virtual partition address and
BURST_VAL to the Address Map & Arbiter (AMA) block. The AMA services the requested partition and can optionally provide idle data if the partition is empty when serviced. The TDP block accepts transmit data and control signals from the AMA and formats the data according to the SPI4 transmit data protocol. The transmit data is then
serialized within the TDO block. Data is transmitted across the SPI4 interface on a 16-bit LVDS pair bus (TDAT)
which is source synchronous to the LVDS pair clock (TDCLK). The LVDS control signal pair (TCTL) is used to identify when the content of the SPI4 bus is control versus user data. The interface is an OIF-SPI-4 02.0 compliant
interface that supports data rates in the range of 622-900 Mbps. Additionally, lower speed data in the range of 100200 Mbps is also supported. To accommodate dynamic timing the TDP will insert training patterns as configured.
28
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Far-end status is received by the TSI block and sent to the TSP block for buffering. The interface supports quarterrate status from either LVDS or TTL inputs. The TSP block provides both the port identification and current status to
the TX Calendar Control Logic, where internal tables are updated accordingly to provide proper port servicing.
ORSPI4 Transmit FPGA/Embedded Core Interface Description
The FPGA I/O interface to the ORSPI4 logic supports several interface features and varying interface characteristics, depending upon the configured mode of operation. The modes are referred to as 'aggregation modes' due to
the nature of the aggregation of data busses for the different modes of operation. There are three data aggregation
modes supported by the Transmit Core:
• 32-bit mode: Each of the 4 DPRAMs can be configured to use a 32-bit user data interface plus associated control
signals across the FPGA interface. This interface is useful when interfacing the SPI4 data pipe to one or more
sub-rate channels. This mode provides up to 4 independent 32-bit interfaces. In this mode, the interfaces do not
need to be synchronous with each other.
• 64-bit mode: DPRAM pairs {[0:1], [2:3]} are configured to serve as 64-bit user data interfaces, plus associated
control signals. Note that 32-bit and 64-bit modes can be combined to provide up to 3 independent interfaces.
• 128-bit mode: All four DPRAM banks are aggregated into a single FIFO with a 128-bit user-data interface from
the FPGA.
• To maintain compliance with the SPI-4.2 interface protocol, the user is required to burst a minimum of 16 data
bytes per write period. This is required for all modes of aggregation. For 32-bit mode, four writes are required, for
64-bit mode, two writes are required. For 128-bit mode, a single write access will provide 16 bytes of data.
Several other features are:
• Auto-increment of the DPRAM write address pointer when an EOP is detected.
• Prohibit data writes if no associated byte-enable (BE) bits are asserted within an entire 128-bit line, optimizing
the FIFO memory locations by not wasting memory.
• The ability for the user to disable one or more of the interface links using the SPI[A,B]_k_LINK_DIS_j signals.
This causes the AMA logic to cease polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted.
• The ability for the user to reset a port’s write pointer with the SPI[A,B]_k_WD_CNT_RST_j signal. This can be
used to customize data applications or as a diagnostic test function.
• The ability for the user to individually poll for DPRAM FIFO fill status. Normal FIFO status is provided whenever
the user attempts to write data to the DPRAMs. If an address is provided to the FIFO without a write enable,
FIFO status is still provided. This feature is useful when the application requires knowing the status of individual
virtual FIFOs but is not prepared to write data to it.
Table 2 lists the I/Os for the Transmit SPI4A core only. The interface signals for core B are identical with the names
modified appropriately.
Table 3 and Table 4 list the I/O for the Transmit SPI4 core for 64-bit and 128-bit aggregation modes respectively.
29
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 2. SPIA Core Transmit FPGA Interface in 32-Bit Mode
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX32_ADDR_0[2:0]
FPGA → Core Virtual FIFO write address. Each DPRAM can be divided up to a maximum
of eight partitions. More than one port can be configured to share a virtual
FIFO partition.
SPIA_TX32_DATA_0[31:0]
FPGA → Core User Write data. Four writes are required in order to complete an entire 128bit line. All writes must occur in four write bursts, unless an EOP occurs.
SPIA_TX32_BE_0[3:0]
FPGA → Core Byte enables indicating which bytes within the 32-bit word are valid.
Bit[3]-Byte enable for SPIA_TX32_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX32_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX32_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX32_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, port
data will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[3:0] = 1111--indicates all four bytes contain valid user data
BE[3:0] = 1110--indicates three bytes are valid. EOP occurs in third Byte.
BE[3:0] = 1100--indicates two bytes are valid. EOP occurs in second Byte.
BE[3:0] = 1000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX32_SOP_0
FPGA → Core Start of Packet indicator. A '1' indicates the start of packet for a particular
port.
When operating in either 32- or 64-bit mode, the SOP indicator must be
asserted coincident with the first write per address line within the FIFO partition.
SPIA_TX32_EOP_0
FPGA → Core End of Packet indicator. A '1' indicates the end of packet for a particular port.
The EOP may be asserted on any write per address line within the FIFO
partition.
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX32_ERR_0
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted.
The ERR signal must be asserted coincident with the EOP signal.
SPIA_TX32_WE_0
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX32_DATA_0[31:0] bus
to be captured for a write to the DPRAM.
SPIA_TX32_PORT_0[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
0
SPIA_TX32_WD_CNT_RST_ FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
0
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX32_LINK_DIS_0
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX32_CLK_0
FPGA → Core Transmit write reference clock. The clocks across the different transmit
interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX32_FIFO_FULL_0
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX32_ADDR_0[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
Note: For SPIB replace A with B
30
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 2. SPIA Core Transmit FPGA Interface in 32-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX32_ADDR_1[2:0]
FPGA → Core Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. More than one port can be configured to share a virtual
FIFO partition.
SPIA_TX32_DATA_1[31:0]
FPGA → Core User Write data. Four writes are required in order to complete an entire
128-bit line. All writes must occur in four write bursts, unless an EOP
occurs.
SPIA_TX32_BE_1[3:0]
FPGA → Core Byte enables indicating which bytes within the 32-bit word are valid.
Bit[3]-Byte enable for SPIA_TX32_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX32_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX32_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX32_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, port
data will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[3:0] = 1111--indicates all four bytes contain valid user data
BE[3:0] = 1110--indicates three bytes are valid. EOP occurs in third Byte.
BE[3:0] = 1100--indicates two bytes are valid. EOP occurs in second Byte.
BE[3:0] = 1000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX32_SOP_1
FPGA → Core Start of Packet indicator. A '1' indicates the start of packet for a particular
port. When operating in either 32- or 64-bit mode, the SOP indicator must
be asserted coincident with the first write per address line within the FIFO
partition.
SPIA_TX32_EOP_1
FPGA → Core End of Packet indicator. A '1' indicates the end of packet for a particular
port. The EOP may be asserted on any write per address line within the
FIFO partition.
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX32_ERR_1
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
SPIA_TX32_WE_1
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX32_DATA_1[31:0] bus
to be captured for a write to the DPRAM.
SPIA_TX32_PORT_1[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
1
SPIA_TX32_WD_CNT_RST_ FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
1
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX32_LINK_DIS_1
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX32_CLK_1
FPGA → Core Transmit write reference clock. The clocks across the different transmit
interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX32_FIFO_FULL_1
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX32_ADDR_1[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
Note: For SPIB replace A with B
31
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 2. SPIA Core Transmit FPGA Interface in 32-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX32_ADDR_2[2:0]
FPGA → Core Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. More than one port can be configured to share a virtual
FIFO partition.
SPIA_TX32_DATA_2[31:0]
FPGA → Core User Write data. Four writes are required in order to complete an entire
128-bit line. All writes must occur in four write bursts, unless an EOP
occurs.
SPIA_TX32_BE_2[3:0]
FPGA → Core Byte enables indicating which bytes within the 32-bit word are valid.
Bit[3]-Byte enable for SPIA_TX32_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX32_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX32_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX32_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, port
data will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[3:0] = 1111--indicates all four bytes contain valid user data. If an EOP is
present, it resides within the fourth byte.
BE[3:0] = 1110--indicates three bytes are valid. EOP occurs in third Byte.
BE[3:0] = 1100--indicates two bytes are valid. EOP occurs in second Byte.
BE[3:0] = 1000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX32_SOP_2
FPGA → Core Start of Packet indicator. A '1' indicates the start of packet for a particular
port. When operating in either 32- or 64-bit mode, the SOP indicator must
be asserted coincident with the first write per address line within the FIFO
partition.
SPIA_TX32_EOP_2
FPGA → Core End of Packet indicator. A '1' indicates the end of packet for a particular
port. The EOP may be asserted on any write per address line within the
FIFO partition.
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX32_ERR_2
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
SPIA_TX32_WE_2
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX32_DATA_2[31:0] bus
to be captured for a write to the DPRAM.
SPIA_TX32_PORT_2[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
2
SPIA_TX32_WD_CNT_RST_ FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
2
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX32_LINK_DIS_2
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX32_CLK_2
FPGA → Core Transmit write reference clock. The clocks across the different transmit
interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX32_FIFO_FULL_2
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX32_ADDR_3[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
Note: For SPIB replace A with B
32
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 2. SPIA Core Transmit FPGA Interface in 32-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX32_ADDR_3[2:0]
FPGA → Core Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. More than one port can be configured to share a virtual
FIFO partition.
SPIA_TX32_DATA_3[31:0]
FPGA → Core User Write data. Four writes are required in order to complete an entire
128-bit line. All writes must occur in four write bursts, unless an EOP
occurs.
SPIA_TX32_BE_3[3:0]
FPGA → Core Byte enables indicating which bytes within the 32-bit word are valid.
Bit[3]-Byte enable for SPIA_TX32_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX32_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX32_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX32_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, port
data will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[3:0] = 1111--indicates all four bytes contain valid user data. If an EOP is
present, it resides within the fourth byte.
BE[3:0] = 1110--indicates three bytes are valid. EOP occurs in third Byte.
BE[3:0] = 1100--indicates two bytes are valid. EOP occurs in second Byte.
BE[3:0] = 1000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX32_SOP_3
FPGA → Core Start of Packet indicator. A '1' indicates the start of packet for a particular
port. When operating in either 32- or 64-bit mode, the SOP indicator must
be asserted coincident with the first write per address line within the FIFO
partition.
SPIA_TX32_EOP_3
FPGA → Core End of Packet indicator. A '1' indicates the end of packet for a particular
port. The EOP may be asserted on any write per address line within the
FIFO partition.
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX32_ERR_3
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
SPIA_TX32_WE_3
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX32_DATA_3[31:0] bus
to be captured for a write to the DPRAM.
SPIA_TX32_PORT_3[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
3
SPIA_TX32_WD_CNT_RST_ FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
3
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX32_LINK_DIS_3
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX32_CLK_3
Transmit write reference clock. The clocks across the different transmit
FPGA → Core interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX32_FIFO_FULL_3
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX32_ADDR_3[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
Note: For SPIB replace A with B
33
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 2. SPIA Core Transmit FPGA Interface in 32-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX32_PORT_ID[7:0]
Port number of the currently serviced SPI4 data port. The value can either
Core →FPGA be the actual SPI4 value or a programmed user value. Further details are
provided in the TX Calendar Control Logic description.
SPIA_TX32_STAT[1:0]
Status of the SPI4 port currently being serviced. These signals can be
Core →FPGA used in conjunction with the SPIA_TX32_PORT_ID signal to police transmit traffic congestion for a particular SPI4 port.
SPIA_TX32_BURST_VAL[3:0]
Indicates the number of SPI4 cycles for which the currently active port will
Core →FPGA be serviced. Each cycle indicates an attempt to read 128 bits of data from
the respective FIFO partition.
ATREFCLK_F
Core →FPGA
SPIA_TREFCLK_X8
Quarter-rate Transmit reference clock. This FPGA-sourced clock reference
must be 2x the desired Transmit SPI4 line clock rate. When not operating
FPGA → Core the Transmit SPI4 core in Quarter-rate mode, this signal should be tied off.
Ex: For a 100 MHz Transmit SPI4 line clock, SPIA_TREFCLK_X8 from the
FPGA must be 200 MHz.
SPI_SATM_A
FPGA → Core ‘0’ - Incoming ATSCLK is assumed to be edge-aligned with the data and
centered to the data eye within the chip.
‘1’ - Incoming ATSCLK is assumed to be skewed with respect to the data
off-chip.
Status
I/Os
Misc.
I/Os
Transmit reference clock. This clock signal is 1/4th the SPI4 clock. This signal can be used to synchronize FPGA application logic to the FPSC logic.
Note: For SPIB replace A with B
34
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 3. SPIA Core Transmit FPGA Interface in 64-Bit Mode
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX64_ADDR_0[2:0]
FPGA → Core Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. When operating in 64-bit mode, each partition will be 2x
the depth of the corresponding partition in 32-bit mode. More than one port
can be configured to share a virtual FIFO partition.
SPIA_TX64_DATA_0[63:0]
FPGA → Core User Write data. Two writes are required in order to complete an entire 128bit line. All writes must occur in two write bursts, unless an EOP occurs.
SPIA_TX64_BE_0[7:0]
FPGA → Core Byte enables indicating which bytes within the 64-bit word are valid.
Bit[7]-Byte enable for SPIA_TX64_DATA_0[63:56]
Bit[6]-Byte enable for SPIA_TX64_DATA_0[55:48]
Bit[5]-Byte enable for SPIA_TX64_DATA_0[47:40]
Bit[4]-Byte enable for SPIA_TX64_DATA_0[39:32]
Bit[3]-Byte enable for SPIA_TX64_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX64_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX64_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX64_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, data
will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[7:0] = 11111111--indicates all eight bytes contain valid user data. If an
EOP is present, it resides within the eighth byte.
BE[7:0] = 11111110--indicates seven bytes are valid. EOP occurs in seventh
Byte.
BE[7:0] = 11111100--indicates six bytes are valid. EOP occurs in sixth Byte.
BE[7:0] = 11111000--indicates five byte is valid. EOP occurs in fifth Byte.
BE[7:0] = 11110000--indicates four bytes are valid. EOP occurs in fourth
Byte.
BE[7:0] = 11100000--indicates three bytes are valid. EOP occurs in third
Byte.
BE[7:0] = 11000000--indicates two bytes are valid. EOP occurs in second Byte.
BE[7:0] = 10000000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX64_SOP_0
FPGA → Core Start of Packet indicator. A '1' indicates the start of packet for a particular
port. When operating in 64-bit mode, the SOP indicator must be asserted
coincident with the first write per address line within the FIFO partition.
SPIA_TX64_EOP_0
FPGA → Core End of Packet indicator. A '1' indicates the end of packet for a particular
port. The EOP may be asserted on either write per address line within the
FIFO partition.
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX64_ERR_0
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
SPIA_TX64_WE_0
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX64_DATA_0[63:0] bus
to be captured for a write to the DPRAM.
SPIA_TX64_PORT_0[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
0
SPIA_TX64_WD_CNT_RST_ FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
0
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
Note: For SPIB replace A with B
35
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 3. SPIA Core Transmit FPGA Interface in 64-Bit Mode (Continued)
DPRAM
0
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX64_LINK_DIS_0
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX64_CLK_0
FPGA → Core Transmit write reference clock. The clocks across the different transmit
interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX64_FIFO_FULL_0
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX64_ADDR_1[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
SPIA_TX64_ADDR_1[2:0]
FPGA → Core Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. When operating in 64-bit mode, each partition will be 2x
the depth of the corresponding partition in 32-bit mode. More than one port
can be configured to share a virtual FIFO partition.
SPIA_TX64_DATA_1[63:0]
FPGA → Core User Write data. Two writes are required in order to complete an entire 128bit line. All writes must occur in two write bursts, unless an EOP occurs.
SPIA_TX64_BE_1[7:0]
FPGA → Core Byte enables indicating which bytes within the 64-bit word are valid.
Bit[7]-Byte enable for SPIA_TX64_DATA_0[63:56]
Bit[6]-Byte enable for SPIA_TX64_DATA_0[55:48]
Bit[5]-Byte enable for SPIA_TX64_DATA_0[47:40]
Bit[4]-Byte enable for SPIA_TX64_DATA_0[39:32]
Bit[3]-Byte enable for SPIA_TX64_DATA_0[31:24]
Bit[2]-Byte enable for SPIA_TX64_DATA_0[23:16]
Bit[1]-Byte enable for SPIA_TX64_DATA_0[15:8]
Bit[0]-Byte enable for SPIA_TX64_DATA_0[7:0]
If no BE bits are asserted for a particular location within the DPRAM, data
will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[7:0] = 11111111--indicates all eight bytes contain valid user data. If an
EOP is present, it resides within the eighth byte.
BE[7:0] = 11111110--indicates seven bytes are valid. EOP occurs in seventh Byte.
BE[7:0] = 11111100--indicates six bytes are valid. EOP occurs in sixth
Byte.
BE[7:0] = 11111000--indicates five byte is valid. EOP occurs in fifth Byte.
BE[7:0] = 11110000--indicates four bytes are valid. EOP occurs in fourth
Byte.
BE[7:0] = 11100000--indicates three bytes are valid. EOP occurs in third
Byte.
BE[7:0] = 11000000--indicates two bytes are valid. EOP occurs in second
Byte.
BE[7:0] = 10000000--indicates one byte is valid. EOP occurs in first Byte.
SPIA_TX64_SOP_1
Start of Packet indicator. A '1' indicates the start of packet for a particular
FPGA → Core port. When operating in 64-bit mode, the SOP indicator must be asserted
coincident with the first write per address line within the FIFO partition.
SPIA_TX64_EOP_1
End of Packet indicator. A '1' indicates the end of packet for a particular
FPGA → Core port. The EOP may be asserted on either write per address line within the
FIFO partition.
1
Note: For SPIB replace A with B
36
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 3. SPIA Core Transmit FPGA Interface in 64-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
FPGA → Core
When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX64_WE_1
FPGA → Core
Write Enable. A logic '1' causes data on the SPIA_TX64_DATA_1[63:0] bus
to be captured for a write to the DPRAM.
SPIA_TX64_PORT_1[7:0]
FPGA → Core
SPI4 port indicator, used to associate the current transmit data with a particular port number.
FPGA → Core
Line Write Termination indicator. This signal causes the FIFO write address
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX64_WD_CNT_RST_
1
1
Status
/Os
Description
SPIA_TX64_ERR_1
SPIA_TX64_LINK_DIS_1
Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
FPGA → Core
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX64_CLK_1
Transmit write clock reference. The clocks across the different transmit
FPGA → Core interfaces are independent from each other, and are not required to be synchronous to each other.
SPIA_TX64_FIFO_FULL_1
FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX64_ADDR_1[2:0] bus. This signal will be
Core →FPGA
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
SPIA_TX64_PORT_ID[7:0]
Port number of the currently serviced SPI4 data port. The value can either
Core →FPGA be the actual SPI4 value or a programmed user value. Further details are
provided in the TX Calendar Control Logic description.
SPIA_TX64_STAT[1:0]
Status of the SPI4 port currently being serviced. These signals can be
Core →FPGA used in conjunction with the FIFO partition FIFO to police transmit traffic
congestion for a particular SPI4 port.
SPIA_TX64_BURST_VAL[3:0]
Indicates the number of SPI4 cycles the currently active port will be serCore →FPGA viced. Each cycle indicates an attempt to read 128 bits of data from the
respective FIFO partition.
SPIA_TREFCLK_X8
FPGA → Core
SPI_SATM_A
FPGA → Core ‘0’ - Incoming ATSCLK is assumed to be edge-aligned with the data and
centered to the data eye within the chip.
‘1’ - Incoming ATSCLK is assumed to be skewed with respect to the data
off-chip.
Misc.
I/Os
Transmit reference clock. This clock signal is 1/4th the SPI4 clock. This signal can be used to synchronize FPGA application logic to the FPSC logic.
Note: For SPIB replace A with B
Table 4. SPIA Core Transmit FPGA Interface in 128-Bit Mode
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX128_ADDR[2:0]
Virtual FIFO Write Address. Each DPRAM can be divided up to a maximum
of eight partitions. When operating in 128-bit mode, each partition will be 4x
FPGA → Core
the depth of the corresponding partition in 32-bit mode. More than one port
can be configured to share a virtual FIFO partition.
SPIA_TX128_DATA[127:0]
FPGA → Core User Write data. A single write will complete an entire 128-bit line.
0
Note: For SPIB replace A with B
37
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 4. SPIA Core Transmit FPGA Interface in 128-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX128_BE[15:0]
Byte enables indicating which bytes within the 128-bit word are valid.
Bit[15]-Byte enable for SPIA_TX128_DATA[127:120]
Bit[14]-Byte enable for SPIA_TX128_DATA[119:112]
Bit[13]-Byte enable for SPIA_TX128_DATA[111:104]
Bit[12]-Byte enable for SPIA_TX128_DATA[103:96]
Bit[11]-Byte enable for SPIA_TX128_DATA[95:88]
Bit[10]-Byte enable for SPIA_TX128_DATA[87:80]
Bit[9]-Byte enable for SPIA_TX128_DATA[79:72]
Bit[8]-Byte enable for SPIA_TX128_DATA[71:64]
Bit[7]-Byte enable for SPIA_TX128_DATA[63:56]
Bit[6]-Byte enable for SPIA_TX128_DATA[55:48]
Bit[5]-Byte enable for SPIA_TX128_DATA[47:40]
Bit[4]-Byte enable for SPIA_TX128_DATA[39:32]
Bit[3]-Byte enable for SPIA_TX128_DATA[31:24]
Bit[2]-Byte enable for SPIA_TX128_DATA[23:16]
Bit[1]-Byte enable for SPIA_TX128_DATA[15:8]
Bit[0]-Byte enable for SPIA_TX128_DATA[7:0]
If no BE bits are asserted for a particular location within the DPRAM, data
will be dropped and no write to the DPRAM will occur.
According to the SPI-4.2 specification, the BE bits must be asserted for all
but the last transfer, where an End of Packet or Error may occur. The valid
combinations of BE are as follows:
BE[15:0] = 1111111111111111--indicates all sixteen bytes contain valid
user data. If an EOP is present, it resides within the sixteenth byte.
BE[15:0] = 1111111111111110--indicates fifteen bytes are valid. EOP
occurs in fifteenth Byte.
BE[15:0] = 1111111111111100--indicates fourteen bytes are valid. EOP
FPGA → Core
occurs in fourteenth Byte.
BE[15:0] = 1111111111111000-indicates thirteen byte is valid. EOP occurs
in thirteenth Byte.
BE[15:0] = 1111111111110000--indicates twelve bytes are valid. EOP
occurs in twelfth Byte.
BE[15:0] = 1111111111100000-indicates eleven bytes are valid. EOP
occurs in eleventh Byte.
BE[15:0] = 1111111111000000--indicates ten bytes are valid. EOP occurs
in tenth Byte.
BE[15:0] = 1111111110000000--indicates nine bytes are valid. EOP occurs
in ninth Byte.
BE[15:0] = 1111111100000000--indicates eight bytes are valid. EOP
occurs in eight Byte.
BE[15:0] = 1111111000000000--indicates seven bytes are valid. EOP
occurs in seventh Byte.
BE[15:0] = 1111110000000000--indicates six bytes are valid. EOP occurs
in sixth Byte.
BE[15:0] = 1111100000000000-indicates five byte is valid. EOP occurs in
fifth Byte.
BE[15:0] = 1111000000000000--indicates four bytes are valid. EOP occurs
in fourth Byte.
BE[15:0] = 1110000000000000-indicates three bytes are valid. EOP
occurs in third Byte.
BE[15:0] = 1100000000000000--indicates two bytes are valid. EOP occurs
in second Byte.
BE[15:0] = 1000000000000000--indicates one byte is valid. EOP occurs in
first Byte.
SPIA_TX128_SOP
Start of Packet indicator. A '1' indicates the start of packet for a particular
port. When operating in 128-bit mode, the SOP indicator must be asserted
FPGA → Core
coincident with the first line write to the FIFO partition in order to align the
start of packet data with the SOP sideband signal.
0
Note: For SPIB replace A with B
38
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 4. SPIA Core Transmit FPGA Interface in 128-Bit Mode (Continued)
DPRAM
0
FPGA Interface I/Os
Direction
From/To
Description
SPIA_TX128_EOP
End of Packet indicator. A '1' indicates the end of packet for a particular
port.
FPGA → Core When an EOP is detected by the DPRAM Write Pointer Logic, the address
pointer will be automatically incremented to the next location within the
FIFO partition range.
SPIA_TX128_ERR
FPGA → Core Packet error indication. A '1' indicates an error has occurred for the current
packet being transmitted. The ERR signal must be asserted coincident with
the EOP signal.
SPIA_TX128_WE
FPGA → Core Write Enable. A logic '1' causes data on the SPIA_TX128_DATA_0[127:0]
bus to be captured for a write to the DPRAM.
SPIA_TX128_PORT[7:0]
FPGA → Core SPI4 port indicator, used to associate the current transmit data with a particular port number.
SPIA_TX128_WD_CNT_RST FPGA → Core Line Write Termination indicator. This signal causes the FIFO write address
pointer within the embedded core to increment to the next address location
for the addressed partition. This signal can be used for custom applications
as well as for diagnostic test functions.
SPIA_TX128_LINK_DIS_0
FPGA → Core Link disable control signal. When asserted to a logic '1', the AMA will cease
polling from a DPRAM. All ports associated with a disabled DPRAM will
remain unserviced until the control signal is deasserted. The AMA will send
IDLE data across the SPI4 link. If the application continues to write data to
that port FIFO, it will eventually fill and provide proper FIFO fill status to the
application.
SPIA_TX128_CLK
FPGA → Core Transmit write reference clock. There is a single clock per SPI4 interface
when operating in 128-bit mode.
SPIA_TX128_FIFO_FULL
Core →FPGA FIFO full status. The status is given in response to the assertion of any
valid address on the SPIA_TX128_ADDR[2:0] bus. This signal will be
asserted to a logic '1' when the current FIFO partition has crossed the configured fill level within the partition.
SPIA_TX128_PORT_ID[7:0]
Core →FPGA Port number of the currently serviced SPI4 data port. The value can either
be the actual SPI4 value or a programmed user value. Further details are
provided in the TX Calendar Control Logic description.
SPIA_TX128_STAT[1:0]
Core →FPGA Status of the SPI4 port currently being serviced. These signals can be
used in conjunction with the SPIA_TX32_PORT_ID signal to police transmit traffic congestion for a particular SPI4 port.
SPIA_TX128_BURST_VAL[3: Core →FPGA Indicates the number of SPI4 cycles for which the currently active port will
Status 0]
be serviced. Each cycle indicates an attempt to read 128 bits of data from
I/Os
the respective FIFO partition.
ATREFCLK_F
Core →FPGA Transmit reference clock. This clock signal is 1/4th the SPI4 clock. This signal can be used to synchronize FPGA application logic to the FPSC logic.
SPIA_TREFCLK_X8
FPGA → Core Quarter-rate Transmit reference clock. This FPGA-sourced clock reference
must be 2x the desired Transmit SPI4 line clock rate. When not operating
the Transmit SPI4 core in Quarter-rate mode, this signal should be tied off.
Ex: For a 100 MHz Transmit SPI4 line clock, SPIA_TREFCLK_X8 from the
FPGA must be 200 MHz.
SPI_SATM_A
FPGA → Core ‘0’ - Incoming ATSCLK is assumed to be edge-aligned with the data and
centered to the data eye within the chip.
‘1’ - Incoming ATSCLK is assumed to be skewed with respect to the data
off-chip.
Misc.
I/Os
Note: For SPIB replace A with B
39
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
I/O Modes - SPI4 FPGA/Embedded Core Data Protocol
In order to successfully transmit data across the Transmit SPI4 link, there is a certain protocol that the data and
control signals must obey. This section outlines the FPGA/embedded core interface protocol to follow for each of
the operating modes of the Transmit SPI4 embedded core. As mentioned, there are three basic modes of operation
when transmitting data into the embedded core from the FPGA. For all modes of operation, data is transferred synchronous to the rising edge of the respective SPI_TX_CLK signals. The following figures detail the write protocol
defined for transmitting SPI4 transmit data. Figure 11 below shows basic interface signals for 32-bit mode of operation.
Figure 11. Basic 32-bit Data Write Protocol to DPRAM
1
2
3
4
5
6
7
8
0xF
0xF
0xC
9
10
SPIA_TX32_CLK
Partition Addr 'k'
SPIA_TX32_ADDR[2:0]
SPIA_TX32_WE
SPIA_TX32_DATA[31:0]
SPIA_TX32_BE[3:0]
0xF
0xF
0xF
0xF
0xF
SPIA_TX32_SOP
SPIA_TX32_EOP
SPIA_TX32_PORT[7:0]
Port 3
Port 3
SPIA_TX32_WD_CNT_RST
Note: SPIB is identical to SPIA
During clock cycle 1, the FPGA asserts the partition Address, which indicates which partition within the DPRAM
the data and control signals are to be written to. The Write Enable signal is also asserted, qualifying all data and
control signals. In the figure, this is the start of a packet, so the SOP signal is also asserted. Data is presented to
the interface, as well as the Byte Enable (BE) and Port ID signals. The Port ID is used to identify the PORT_ID field
within the SPI4 control word. The BE vector is used to qualify which Bytes on the SPI4 transmit link are valid data.
During clock cycle 4, the internal DPRAM write is automatically incremented, and the user is expected to continue
write accesses to the FIFO partition. During clock cycle 8, the BE bits are set to 0xC, indicating only two of the four
Bytes contain valid packet data.
During clock cycle 8, the FPGA indicates an End of Packet condition for the current selected Port. Asserting the
EOP signal causes the internal logic to terminate writes to the current Port, as well as automatically incrementing
to the next address for the FIFO partition.
The Port ID signal should be asserted during an entire write sequence. At a minimum, it must be asserted at least
during the last write to the current DPRAM address line (i.e. for every 128 data bits that are in a DPRAM location).
In the figure above, the Port ID must be asserted during clock cycles 4 and 8.
Internal to the embedded core is logic that advances the write pointer for each DPRAM partition. Although not visible to the FPGA, the internal DPRAM pointer logic advances to the next valid address within partition range after
every 4 writes when in 32-bit aggregation mode.
40
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 12 shows 32-bit write timing using fast back-to-back transfers.
Figure 12. 32-Bit Write Protocol Using Fast Back-to-Back Transfers
1
2
3
4
5
6
7
8
9
10
11
SPI_TX32_CLK
SPI_TX32_ADDR[2:0]
Partition Addr 'k'
Addr 'k+1'
Addr 'k'
SPI_TX32_WE
SPI_TX32_DATA[31:0]
SPI_TX32_BE[3:0]
0xF
0xF
0xF
0xF
0xF
0xF
0xF
0x8
0xF
0xF
SPI_TX32_SOP
SPI_TX32_EOP
SPI_TX32_PORT[7:0]
Port 3
Port 7
Port 3
SPI_TX32_WD_CNT_RST
Internal DPRAM Write Ptr.
Addr 'n'
Addr 'm'
'm+1'
Addr 'n+1'
NOTE: SPIB is identical to SPIA
During clock cycle 1, the FPGA asserts the partition Address, which indicates which partition within the DPRAM
the data and control signals are to be written to. The Write Enable signal is also asserted, qualifying all data and
control signals. In the figure, this is the start of a packet, so the SOP signal is also asserted. Data is presented to
the interface, as well as the Byte Enable (BE) and Port ID signals. The Port ID is used to identify the PORT_ID field
within the SPI4 control word. The BE vector is used to qualify which Bytes on the SPI4 transmit link are valid data.
During clock cycle 4, the FPGA has completed writing an entire 128-bit line to the addressed DPRAM partition and
begins an access to another partition commencing with clock cycle 5. Since there was no EOP presented during
clock cycle 4, Port 3 must be revisited later with the remaining packet data and required EOP. The internal DPRAM
write is automatically incremented at the end of clock cycle 4 as well. During clock cycle 5, Port 7 is addressed as
the destination partition for the next 128-bit line burst sequence. During clock cycle 8, the BE bits are set to 0x8,
indicating only one of the four Bytes contain valid packet data. The EOP signal is also asserted during clock cycle 8
indicating the end of packet for the currently active Port 7.
Asserting the EOP signal causes the internal logic to terminate writes to the current Port, as well as automatically
incrementing to the next address for the FIFO partition.
During clock cycle 10, the FPGA returns to Port 3, completing the packet with two 32-bit bursts, and asserting the
EOP during the latter write cycle. All BE bits set to a logic ‘1’ during the second write indicates all four bytes of the
write are valid.
As shown, data may be written to different Ports, in a fast back-to-back fashion, without any reduction in data
throughput.
Some points to note are:
• According the SPI4 specification, the smallest packet that may be transmitted across the Transmit SPI4 link consists of a single 16-Byte transfer. This means a single occurrence of SOP and EOP may occur within any
DPRAM location.
• According to the SPI4 specification, only a single Port's data may occur within a 16-Byte cycle. As a consequence,
data from a single Port is permitted to be written to any single 128-bit location within the DPRAM partitions.
41
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• The SOP must always be written into the first byte location of the 16-byte DPRAM word. (Shown in Figure 7 for
the 32-bit interface mode.) With the Lattice SPI4 interface, the EOP may occur during any of the four 4-byte
mode writes to fill the 16-byte DPRAM, and will be associated with the correct 128-bit line within the partition
memory.
The next two figures show the 64-bit write protocol from the FPGA to the TX DPRAMs. It is functionally identical to
the 32-bit mode, except two writes are required to fill an address line within a FIFO partition instead of four. Figure
13 shows the basic interface signals for 64-bit mode of operation.
Figure 13. Basic 64-Bit Data Write Protocol to DPRAM
1
2
3
4
5
6
0xFF
0xFE
7
SPIA_TX64_CLK
Partition Addr 'k'
SPIA_TX64_ADDR[2:0]
SPIA_TX64_WE
SPIA_TX64_DATA[63:0]
SPIA_TX64_BE[7:0]
0xFF
0xFF
0xFF
0xFF
SPIA_TX64_SOP
SPIA_TX64_EOP
SPIA_TX64_PORT[7:0]
Port 3
Port 3
Port 3
SPIA_TX64_WD_CNT_RST
Note SPIB is identical to SPIA
During Clock cycle 1, the FPGA asserts the partition Address, which indicates which partition within the DPRAM
the data and control signals are to be written to. The Write Enable signal is also asserted, qualifying all data and
control signals. From the figure, this is the start of a packet, so the SOP signal is also asserted. Data is presented
to the interface, as well as the Byte Enable (BE) and Port ID signals. The BE vector is used to qualify which Bytes
on the SPI4 transmit link are valid data. When operating in 64-bit mode, there are 8 BE bits. During clock cycle 6
the BE bits are set to 0xFE, indicating 7 of the eight Bytes contain valid packet data.
As with 32-bit mode, the Port ID signal should be asserted during an entire write sequence, although as a minimum
it must be asserted at least during the second write to the current DPRAM address line. In the figure above, the
Port ID must be asserted during clock cycles 2, 4, and 6.
During clock cycle 6, the FPGA indicates an End of Packet condition for the current selected Port. Asserting the
EOP signal causes the internal logic to terminate writes to the current Port. Also, the internal DPRAM pointer logic
is advanced after every second write to the DPRAM when in 64-bit aggregation mode.
As with the 32-bit aggregation mode, the “internal DPRAM Write Ptr” advances to the next valid address within partition range, but after every 2 writes when in 64-bit aggregation mode. This is because two 64-bit writes fill an entire
128-bit DPRAM line entry. The same interface logic in the FPGA can also be used as described in 32-bit mode, but
the counter implemented in FPGA logic is simply a one-bit toggle FF.
42
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 14. 64-Bit Write Protocol Using Fast Back-to-Back Transfers
1
2
3
4
5
6
7
8
SPI_TX64_CLK
SPI_TX64_ADDR[2:0]
Part. Addr 'k'
Partition Addr 'k+4'
Part. Addr 'k'
SPI_TX64_WE
SPI_TX64_DATA[63:0]
SPI_TX64_BE[7:0]
0xFF
0xFF
0xFF
0xFF
0xFF
0xFC
0xFF
0xC0
SPI_TX64_SOP
SPI_TX64_EOP
SPI_TX64_PORT[7:0]
Port 7
Port 3
Port 3
SPI_TX64_WD_CNT_RST
Internal DPRAM Write Ptr.
Addr 'n'
Addr 'm'
'm+1'
'n+1'
Note: SPIB is identical to SPIA
As with Figure 13, the FPGA initiates the start of a packet by asserting the FIFO partition address, WE, Data and
other pertinent control signals in Figure 14. During clock cycle 2, an entire 128-bit line has been written and the
internal logic increments it’s write pointer to the next location within the FIFO partition. During clock cycle 3, the
FPGA begins writing to a different DPRAM FIFO using a back-to-back transfer. A new Partition address and Port ID
are presented to the DPRAM. Since this is the Start of the Packet, the SOP is asserted. During clock cycle 5, the
internal write pointer is advanced to the next address within the FIFO partition range. On clock cycle 6, the FPGA
terminates the packet by asserting the EOP signal. The internal DPRAM Write Pointer advances during clock cycle
6 to the next location and then waits for the FPGA to attempt another write access to a partition within the DPRAM.
Beginning with clock cycle 7, the FPGA resumes writing to the original port. The FPGA presents the correct Partition address and asserts the required control signals. The internal write pointer decodes the Partition address and
sets the internal write pointer to address 'n+1'. As with 32-bit mode, in 64-bit aggregation mode, data may be written to different Ports in a fast back-to-back fashion without any reduction in data throughput. During clock cycle 8,
the FPGA terminates writing to the current packet by asserting the EOP input signals and the correct number of BE
signals.
Figure 15 below shows the protocol required when operating in 128-bit aggregation mode. A single write from the
FPGA fills an entire line within a FIFO partition.
43
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 15. 128-Bit Write Protocol
1
2
3
4
5
6
SPIA_TX128_CLK
SPIA_TX128_ADDR[2:0]
Part. Addr 'k'
Addr 'j'
Partition Addr 'j+4'
SPIA_TX128_WE
SPIA_TX128_DATA[127:0]
SPIA_TX128_BE[7:0]
0xFFFF
0xFFF8
0xFFFF
0xFFFF
0xFFFF
SPIA_TX128_SOP
SPIA_TX128_EOP
SPIA_TX128_PORT[15:0]
Port 3
Port 7
Port 2
SPIA_TX128_WD_CNT_RST
NOTE: SPIB is identical to SPIA
SPI4 Transmit Interface - Detailed Description
The FPGA transmit interface provides a simple FIFO-like interface, simplifying write accesses. Asserting the correct 3-bit address with the associated write enable signal causes transmit data and sideband control signals to be
registered for writes to a FIFO partition within the DPRAMs. When addressing a particular FIFO partition within the
DPRAM, the associated FIFO fill level of the addressed partition is immediately reflected back to the FPGA,
enabling the user to monitor the current fill level of a particular partition. Based upon the configured fill level, a logic
'1' on the FIFO_FULL signal will indicate either a 3/4-full condition or a completely full condition for the indexed partition.
Transmit DPRAMs
There are four DPRAMs referred to as banks 0, 1, 2 and 3. Each bank has a 32-bit data interface to the FPGA.
Each DPRAM has its own individual write enable and write clock allowing it to be written by the FPGA application
independently.
Each DPRAM bank is configured by software to operate in either 32-bit, 64-bit or 128-bit aggregation mode. Every
DPRAM bank is also configured to contain 1, 2, 4 or 8 virtual FIFOs. The user determines the number of FIFOs
depending on the number of ports and buffer requirements for the ports as required by a given application. The programming of a DPRAM bank in 32-bit, 64-bit or 128-bit mode and programming of the number of virtual FIFOs
within a DPRAM bank is done through software as shown in Table 8. Note that in 64-bit mode, DPRAMs 0 and 1
must be configured identically. The combined DPRAM pair is referred to as DPRAM “0”. Similarly DPRAM pairs 2
and 3 must be configured identically. This combined DPRAM pair is referred to as DPRAM “2”. In 128-bit mode, all
DPRAMs must be configured identically. The combined DPRAM banks are collectively referred to as DPRAM “0”.
The aggregation modes can be used in five possible combinations as shown in Table 6. The size of the embedded
data and control FIFOs for each mode is shown in Table 7. The user accesses a virtual FIFO using the 3-bit FIFO
read address (refer to Table 2, Table 3, and Table 4) from the FPGA. Table 5 shows the indexed partition based
upon the configured DPRAM partitioning and aggregation mode.
44
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 5. FIFO Address Based on Programmed Virtual FIFOs
SPI[A,B]_TX_ADDR[2:0]
Description
XXX
Bits are ignored when the DPRAM is configured to support a single partition.
(Device Select bits can be set to any value in single partition mode).
000
Selects Partition 0 when the DPRAM is configured to support 2, 4 or 8 partitions.
001
Selects Partition 1 when the DPRAM is configured to support 2, 4 or 8 partitions.
010
Selects Partition 2 when the DPRAM is configured to support 4 or 8 partitions.
011
Selects Partition 3 when the DPRAM is configured to support 4 or 8 partitions.
100
Selects Partition 4 when the DPRAM is configured to support 8 partitions.
101
Selects Partition 5 when the DPRAM is configured to support 8 partitions.
110
Selects Partition 6 when the DPRAM is configured to support 8 partitions.
111
Selects Partition 7 when the DPRAM is configured to support 8 partitions.
Table 6. Possible Combinations of Aggregation Modes
Mode
Valid
Banks 0 to 3 in 32-bit aggregation mode
Yes
Banks 0, 1 in 64-bit aggregation mode,
Banks 2,3 in 64-bit mode
Yes
Banks 0,1 in 64-bit mode,
Banks 2 & 3 in 32-bit mode
Yes
Banks 0,1 in 32-bit mode,
Banks 2 & 3 in 64-bit mode
Yes
All banks in 128-bit
Yes
Bank 0 in 32-bit mode,
Bank 1 in 64-bit mode or vice-versa
No
Bank 2 in 32-bit mode,
Bank 3 in 64-bit mode or vice-versa
No
Within the embedded core, data is quad-word aligned, and written to the DPRAMs only on 128-bit boundaries.
When operating in 32-bit or 64-bit mode, with the exception of EOP terminated write accesses, either 4 or 2 write
accesses, respectively, must be performed before the internal FIFO address pointer can be incremented to the next
location. It is required for the FPGA to perform all data writes on 128-bit boundaries. Thus, the application will write
entire “lines” to the DPRAM causing the internal address pointer to increment to the next location in memory. If the
FPGA attempts to write to a FIFO partition within the DPRAM and none of the 16 BE bits are set, the data will not
be written into the FIFO and the internal write pointers will not be advanced. This is done to prevent erroneous data
from being sent across the SPI4 link, as well as optimize FIFO memory usage.
Link Disable
Under certain circumstances, the application may require the SPI4 interface to disable a particular DPRAM from
being serviced. To accommodate this, the user can assert the proper 'Link Disable” (LINK_DIS) signal indicating to
the DPRAM logic to stop service to a particular DPRAM. As long as the assertion of the LINK_DIS for a particular
partition is asserted, all partitions within the associated DPRAM will not be serviced. If the application attempts to
perform further writes to any of the disabled FIFO partitions, data will be accepted up to the point the FIFO
becomes full. After the FIFO fills, data will no longer be accepted. Data written to the disabled DPRAM will remain
latent within the memory. Upon removal of the Link Disable signal, ports from the enabled DPRAM will be serviced
according to the configured Calendar sequence.
The following is an example of the effect of asserting a Link Disable. For this example, assume the ORSPI4 is configured as follows:
45
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
– Both SPI-4 A and B are enabled
– 32-bit aggregation for all banks
Furthermore, assume the configuration of the SPI-4 is as follows:
–
–
–
–
Transmit calendar has 4 ports: 0,1, 2, and 3
Transmit DPRAMs configured to 1 partition each
Transmit PDM assigns burst value of 4 to each port
Transmit PDM maps port 0 to bank 0, port 1 to bank 1, port 2 to bank 2, and port3 to bank 3
Figure 16 shows how the port polling changes when the link disable for bank 1 is asserted (input signal
SPIB_TX32_LINK_DIS_1 in this configuration). Before SPIB_TX32_LINK_DIS_1 is asserted, the normal port polling sequence – 0, 1, 2, 3, 0, 1, 2, 3, 0, …. – is seen on the SPIB_TX32_PORT_ID outputs. Each port poll lasts for
the programmed burst value (4 in this example) number of cycles. After the SPIB_TX32_LINK_DIS_1 high transition, the sequence of port IDs changes to 0, 2, 3, 0, 2, 3, 0, …..
Note that the duration of port 0 is now 6 cycles with port 1 disabled. The 2 extra cycles are needed by the port poll
sequencer to skip over port 1 and continue to port 2. The port poll sequencer does not read data from bank 0 during these 2 extra cycles, so they may be considered idle cycles. Before SPIB_TX32_LINK_DIS_1 was asserted,
the port polling period was 4 ports X 4 cycles/port = 16 cycles. After SPIB_TX32_LINK_DIS_1 is asserted, the port
polling period becomes 3 ports X 4 cycles/port + 2 extra cycles = 14 cycles.
Figure 16. Port 1 Disable
SPIB_TX32_CLK_0
SPIB_TX32_LINK_DIS_0
SPIB_TX32_LINK_DIS_1
SPIB_TX32_LINK_DIS_2
SPIB_TX32_LINK_DIS_3
SPIB_TX32_PORT_ID[7:0]
0
1
2
3
0
1
2
3
0
2
3
0
2
Figure 17 shows how the port polling changes when a second bank is disabled. Here the signal
SPIB_TX32_LINK_DIS_2 is asserted to disable port 2. The port polling period with two ports disabled becomes 2
ports X 4 cycles/port + 4 extra cycles = 12 cycles.
46
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 17. Port 1 and 2 Disable
SPIB_TX32_CLK_0
SPIB_TX32_LINK_DIS_0
SPIB_TX32_LINK_DIS_1
SPIB_TX32_LINK_DIS_2
SPIB_TX32_LINK_DIS_3
SPIB_TX32_PORT_ID[7:0]
0
2
3
0
2
3
0
3
0
3
0
TX DPRAM
The TX DPRAMs consist of four 256 x 160 memories, that can each be partitioned into a maximum of 8 equally
sized virtual partitions, providing a maximum of 32 virtual FIFO partitions. By providing a simple FIFO-like interface
to the FPGA, the FPGA can access FIFO partitions by asserting a 3-bit address field. Internal logic maintains both
write and read pointers and provides a programmable FIFO_FULL flag to the FPGA logic in order to prevent overflow conditions.
Data may be written into the DPRAMs using either multiple 32-, or 64-bit interfaces, or alternatively using a single
128-bit interface. The sideband control bus is present for each individual interface. The DPRAM partition depths are
a function of the interface width used, as well as the number of configured partitions. Table 7 shows the depth of
virtual partitions for data and sideband control information based upon the write interface width and the number of
partitions.
Table 7. Memory Size for Each Aggregation Mode and Partitioning
Write Interface Mode
32-bit
64-bit
128-bit
# of Configured
Virtual FIFO
Partitions
DATA FIFO Depth
(in Bytes)
Control FIFO Depth
(in Bytes)
1
2K
512
2
1K
256
4
512
128
8
256
64
1
4K
1K
2
2K
512
4
1K
256
8
512
128
1
8K
2K
2
4K
1K
4
2K
512
8
1K
256
47
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Partitioning of the Dual Port RAMs is done through customer programmable registers. Table 8 below shows Register Settings for Aggregation Mode and Partition Size.
Table 8. Register Settings for Aggregation Mode and Partition Size.
DPRAM Aggregation
Mode
Address 30903 (SPIA),
30A30 (SPIB)
DPRAM 0
(register Bits 0:1) = 00
01
10
DPRAM 1
(Register Bits 2:3) = 00
01
10
DPRAM 2
(Register Bits 4:5) = 00
01
10
Virtual FIFO Partition Size
Address 30927 (SPIA),
30A27 (SPIB)
Configuration
Register Bits 0:1 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Register Bits 2:3 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Register Bits 4:5 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
48
Lattice Semiconductor
DPRAM Aggregation
Mode
Address 30903 (SPIA),
30A30 (SPIB)
DPRAM 3
(Register Bits 6:7) = 00
01
10
ORCA ORSPI4 Data Sheet
Virtual FIFO Partition Size
Address 30927 (SPIA),
30A27 (SPIB)
Configuration
Register Bits 6:7 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Based upon the traffic characteristics of individual ports and number of ports supported, the user can tailor the
FIFO depth to optimize performance at the FPGA/embedded core interface. When operating in 32-bit mode, four
write cycles are necessary to complete an entire 128-bit line. 64-bit mode requires 2 write accesses, with 128-bit
mode using a single clock per line fill.
When data is read out of the DPRAMs, via the AMA logic, it is read using a 128-bit data bus. Therefore, for each
port serviced, one clock cycle is consumed to read 16 data Bytes and 4 control Bytes from each addressable location within a FIFO partition. This corresponds to the SPI4 requirement that only a single SPI4 port's data may exist
on the transmit data bus within any Burst Cycle. A Burst Cycle is made up of 16 Bytes.
Note, for all modes of aggregation, if an entire 128 bits is written to any FIFO partition, with all 16 BE bits deasserted, the Quad-word will not be written to the DPRAM, nor will the internal write pointer be incremented for the
selected FIFO partition.
Within the Transmit DPRAM, there are user-programmable fill level thresholds for each enabled partition. The programmable levels are either 3/4-full or absolutely full. When the fill level of an addressed partition exceeds the programmed fill level, a FIFO full condition is reported back to the FPGA. Because the fill level operates only on 128
bits, the full flag is only updated after an entire line has been written. The full condition will persist until the FIFO
has been serviced and the fill level drops below the programmed fill threshold.
In order to take a DPRAM temporarily out of service without updating the Calendar, the FPGA can assert the Link
Disable (SPI_TX_LINK_DIS[3:0]) input signal associated with the DPRAM to be disabled. The FPGA is permitted
to continue to write data to the disabled port FIFO, as it will obey all the functionality described above regarding
FIFO fill level and status. When the DPRAM is to be put back into service, the user simply deasserts the LINK_DIS
signal. The associated ports will then be serviced according to the configured Calendar sequence.
Address Map Arbiter (AMA) Logic Block
The Address Map Arbiter (AMA) logic block is a slave device to the TX Calendar Control logic. Upon receiving a
valid AMA_ID and BURST_VAL vectors, the AMA will attempt to read out data from the indexed DPRAM FIFO partition along with the associated sideband control signals.
In order to take a DPRAM temporarily out of service without updating the Calendar, the FPGA can assert the Link
Disable (SPI_TX_LINK_DIS[3:0]) input signal associated with the DPRAM to be disabled. The FPGA is permitted
to continue to write data to the disabled port FIFO, as it will obey all the functionality described above regarding
49
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
FIFO fill level and status. When the DPRAM is to be put back into service, the user simply deasserts the LINK_DIS
signal. The associated ports will then be serviced according to the configured Calendar sequence.
Upon receiving a valid AMA_ID, the AMA logic will service a port by reading data from the FIFO partitions for
BURST_VAL clock cycles. Both data and sideband control signals are read and sent directly to the TDP logic block.
In the event a FIFO partition becomes depleted before BURST_VAL number of reads is performed, the AMA will
send Idle data to the TDP and will override the associated Byte Enable (BE) control signals, indicating the current
data is not user data. This will temporarily reduce the SPI4 transmit link data throughput, but will not affect the operation of the Transmit link itself.
When reading data from FIFO partitions, and the FIFOs are empty, it is possible to gain back some lost data
throughput on the SPI4 Transmit link. Enabling the TX_BURST_TERMINATION control register within the embedded core causes the AMA to advance to the next port for service within four clock cycles after detecting the FIFO is
empty. This feature works in conjunction with the TX Calendar Control logic. Upon detecting the currently serviced
FIFO has run empty, the AMA block sends a control signal to the Calendar Control logic, which then immediately
advances to the next location within the Calendar and presents a new set of AMA_ID and BURST_VAL fields to the
AMA block. Because there is a four-clock latency between detection of an empty FIFO and the assertion of the next
port to service, data bandwidth gains can be achieved on ports with larger BURST_VAL values.
Transmit Data Protocol (TDP) Logic Block
The Transmit Data Protocol (TDP) block is responsible for receiving and formatting SPI4 packet data and all associated sideband control signals, and formatting the data into the correct SPI4 protocol. This block also performs
DIP-4 calculation, SPI4 data word, control word and Training control word generation. Additionally, this block
attempts to perform bandwidth optimization by combining ordered Bytes from 2 consecutive 128-bit words from the
AMA whenever possible. This is done to maximize data throughput on the Transmit SPI4 link.
The TDP provides a small FIFO to allow for data buffering in order to concatenate valid Bytes with idles. In the
event the FIFO becomes full, it sends a FIFO_FULL flag to the Transmit Calendar Control Word logic to throttle
data transmission. Flow control is necessary for small periods of time while Training patterns are being sent across
the Transmit SPI4 link.
Data formatting performed in this block consists of alignment, DIP-4 calculation and training pattern generation.
Aligner:
Using the SOP, EOP and Port control signals the TDP determines what type of control word is necessary to be
transmitted with the corresponding data. Using the BE bits, the TDP can determine how to concatenate data into
sequences of continuous 16 Byte bursts whenever possible.
DIP-4 Calculation:
After aligning the data and control words, the TDP calculates the odd parity codeword according to the OIF SPI4
specification.
Training Pattern Generation:
There are two causes of generating a Training sequence for the Transmit SPI4 link:
• Using the user-programmable TX_DATA_MAX_T register, or
• The TDP receives four or more consecutive '11' patterns from the status block, indicating excess DIP-2 errors.
Using the programmed TX_DATA_MAX_T register along with the user-programmable TX_ALPHA register, the TDP
internally counts down the correct number of clock cycles before transmitting training sequences across the Transmit link. The TX_ALPHA register is used to indicate the number of Training sequences to be sent.
When the Transmit status receives excessive errors, the status block sends consecutive '11' patterns to the TDP.
According to the SPI4 specification, the TDP will begin sending training patterns across the SPI4 link until the status error is remedied.
50
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Transmit Data Output (TDO) Logic Block
The Transmit Data Output (TDO) block contains the high-speed serializer, which uses an x8 clock, synthesized by
an internal PLL, to generate the high-speed data from the low-speed 128-bit data. Data is transmitted off-chip
using a 16-bit LVDS data bus TDAT[15:0], a LVDS control bit TCTL and a source synchronous clock TDCLK. The
16-bit data bus and control are DDR signals relative to the TDCLK. The LVDS buffers contained within the TDO are
fully compliant with SPI4 electrical specifications.
The TDO uses the internal embedded core transmit reference clock (TREFCLK) to generate an x4 TDCLK. The
TDCLK and TREFCLK are both derived from the user-provided reference clock. The TREFCLK is used as the system clock for the entire Transmit SPI4 interface logic. The TREFCLK is also sent to the FPGA for the customer to
use as a synchronizing signal source if desired.
In order to support 10 Gbits/s throughput, the minimum frequency of TDCLK needs to be 622 Mbits/s (311 MHz
DDR). For applications that require less than 100 - 200 Mbits/s on TDCLK, the PLL in the TDO block can be
bypassed. This allows for operation as low as 100 MHz on the Transmit SPI4 link.
Figure 18. Transmit Calendar and Status Block
k = 32, 64, or 128
To AMA
To
FPGA
I/F
SPI[A,B]_TX_k_PORT_ID
8
SPI[A,B]_TX_k_STAT
2
SPI[A,B]_TX_k_BURST_VAL 4
From
External
I/O
BURST_VAL
AMA_ID
TX CALENDAR PORT_ID
TSP
Control
PORT_STAT
Logic
TLSTAT
TLSCLK
TSI
ATSTAT
ATSCLK
Note: SPIA is identical to SPIB
Transmit Calendar (TCC) Logic Block
The Transmit Calendar Block (TCC) is responsible for maintaining the transmit main and shadow calendars, providing port service information to the AMA, integrating transmit status update information into the servicing of ports
according to the SPI4 specification, and providing port service information to the FPGA for traffic monitoring.
51
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
TO FPGA
Figure 19. Transmit Calendar Control Logic Functional Diagram
SPI[A,B]_TX_PORT_ID
SPI[A,B]_TX_STAT
Transmit Port Seq Addr
SPI[A,B]_TX_BURST_VAL Calendar
Main/ Port Desc Data
TO AMA
Shadow
0
STATUS
UPDATE
LOGIC
Port
Descriptor
Memory
BURST_VAL
AMA_ID
PORT_ID
PORT_STAT
255
CREDIT MB_EN M BURST_VAL PORT_ID AMA STATUS
BANK_ID
PARTITION_ID
The Transmit SPI4 interface contains both main and shadow Calendars enabling a hitless switch over between an
old and new Calendar schedule. Each Calendar is 1023 locations deep, providing a high degree of flexibility and
customizable port service algorithms. The user can configure the Calendar(s) through software configuration registers. (See the transmit memory map register set for identification of individual configuration register addresses).
NOTE, in order to effect a hitless switch at the logical port level, the user must ensure that port data associated with
any Calendar modifications have been terminated correctly before the Calendar switches. For example, if the
Shadow Calendar eliminates Port 3 from the Calendar sequence, the user must ensure there is no data associated
for Port 3 in the FIFO partitions when the Calendar switches. Otherwise, service will be granted for an out-of-service port, causing higher layer protocol exceptions.
The Calendar length is also configurable to indicate the number of valid port entries. Programming the
CALENDAR_LEN register indicates how many entries within the Transmit Calendar are enabled for sequencing.
Since the Calendar is 1023 locations deep, a single port may be serviced more than once per Calendar sequence.
Port Service Information
The TCC sequentially runs through the Calendar sequence retrieving the port number that is to be serviced next.
The field is an 8-bit vector, supporting the entire 256 possible entries of the SPI4 Calendar. The retrieved port number is used to index a Port Descriptor Memory (PDM) to retrieve all pertinent information required for maintaining
proper port servicing.
There are several fields within the PDM that are required to be configured by the user before the Transmit interface
can be enabled. A description of the fields within the descriptor is given below:
• PORT_ID - Port information sent to the FPGA when a port is being serviced. This value is configurable by the
user and can contain either the SPI4 number of the port, or can contain an alias the FPGA uses to map proprietary interface channels to the corresponding SPI4 port (See the 'M'-bit description below). The FPGA logic can
also use the Port_ID for status acquisition, or other link layer flow control functions. After reset this field defaults
to a value of 8'h00.
• BURST_VAL - Port information sent to the FPGA (when a port is being serviced) and AMA. This user-configurable field indicates the maximum number of 16-Byte burst accesses the port is permitted to consecutively
transmit across the SPI4 link, before segmentation must be performed. The FPGA can use this field to indicate
how much data to source for the port being polled to maintain buffering within the DPRAM FIFO partition. After
reset this field defaults to a value of 4'h0.
52
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• AMA - This user configurable field consisting of a DPRAM BANK_ID (left-most two bits) and a DPRAM
PARTITION_ID, indicates to the AMA (AMA_ID) which physical DPRAM partition address to poll for port servicing. After reset, this field defaults to a value of 5'h00.
• M - Indicates whether the programmed Port_ID or the SEQ_PORT_NUM contained within the Calendar
Sequence Table should be broadcast to the FPGA. This is performed on a per port basis, providing a mapping
function between proprietary FPGA port mapping and the SPI4 Transmit Calendar port number. EX: SPI4 Port
Number 138 maps to FPGA interface Device #7, Port #17. When the 'M'- bit is set to a logic one, the programmed Port_ID (i.e. 138) is broadcast to the FPGA for the port being serviced; when set to a logic zero, the
Port number from the Transmit Calendar is sent to the FPGA for that particular port. After reset, this field should
default to a value of 1'b0.
• Credits - Indicates the number of bursts the port is permitted to transmit across the SPI4 link between status
updates, for that particular port. This field is updated with calculated credit values after the port is serviced.
Whenever the receive status from the TSP block presents a port status value of 2'b11, the Credit field for the
indexed port is to be cleared to a value of 10'h000. This disables the port. The user may configure an initial value
for each enable port. After reset, this field is to default to a value of 10'h000. This field should not be altered after
the Transmit Calendar is placed in operation.
• MB_EN - This user-configurable register indicates whether the associated port supports MAX_BURST parameters as defined within the SPI4 specification. The Transmit Calendar supports a single TX_MAX_BURST1 and a
single TX_MAX_BURST2 value. Logic one indicates that the configured port supports MAX_BURST. After reset,
this field is to default to a value of 1'b0. This is configurable on a per-port basis.
• STAT - Contains Transmit FIFO status from the TSP block. Used in conjunction with the MB_EN field to update
the Credit field for the indexed port. Also sent to the FPGA for status monitoring. After reset this field is set to a
value of 2'h3, indicating the port is disabled.
Status Update Logic
Transmit status is received from the TSP block (described later). Both the port number and associated status of the
port is sent to the Status Update Logic. This block ensures that the status for each port, as it is received, is updated
correctly. The status is received according to the programmed far-end Calendar, and will generally be received
asynchronously (relative to port servicing) to the local Transmit Calendar polling.
By providing the BURST_VAL, Stat, and Port_ID value to the FPGA, application logic can maintain the required
data bandwidth it needs to source, in order to keep the respective FIFO partition from over/under-flowing. These
signals can also be used in conjunction with FPGA control logic to oversee the operation of the Memory Controller
for accessing the Transmit SPI4 port data.
Transmit Status Input (TSI) Block
The Transmit Status Input (TSI) block provides the interface to the SPI4 Transmit Status Signals. These signals can
be either LVDS or LVCMOS input buffers. This is selected using the SPI4_STATUS_IO_SEL register setting. The
Status interface supports quarter-rate mode only, as defined within the SPI4 specification. The user has the option
to use the status input signals either in phase with status input clock, or out of phase with the status input clock, by
optionally inverting the input clock signal on-chip. Setting SPI_SATM_A and SPI_SATM_B registers to a “1” will
cause them to be in phase, setting to a “0” will cause them to be out of phase.
The TSI block receives transmit status and provides both the status information and a derived clock to the TSP
block.
Transmit Status Protocol (TSP) Block
The Transmit Status Protocol (TSP) block receives status from the TSI block and uses the user-configured transmit
calendar to associate the current received status with a port. This block performs FIFO status decoding, buffering
and DIP-2 calculations. As defined within the SPI4 specification, if DIP-2 errors occur, it sends an error flag to the
TDP block for processing. The TSP provides port status information to the Transmit Calendar logic along with the
associated port number. The Calendar logic then updates the appropriate Port STAT field. The TSP block also supports Hitless Bandwidth Provisioning as defined within Appendix G of the SPI4 specification.
53
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Transmit Calendar Operation
This section gives a description of how the Transmit Calendar operates, in order to assist users in understanding
how to configure the TX SPI4 programmable Calendar and configuration registers to fit their application. Figure 18
and Figure 19 will be used as reference. The Transmit Calendar logic is synchronous to TREFCLK for it’s internal
operations.
The Transmit Calendar logic uses an indirect addressing scheme to acquire port sequence information. This
enables the user to configure the Calendar easily, while minimizing the amount of information that needs to be programmed within the Calendar table. Indirect addressing also enables users to configure the entire Port Descriptor
Memory at initialization time, without having to actually enable all the entries. The user has access to modify port
information within the PDM at any time, whereas the Calendar(s) can only be updated while it is not in service.
The Transmit Calendar sequentially runs through all the user-enabled port entries within the 1K memory. The Calendar rolls over to the first entry whenever the user-configured maximum Calendar length is reached. The time
between polling the same port is a function of the several factors, including user-configured BURST_VAL per port,
and whether the TX_BURST_TERMINATION is enabled (set to LOGIC “1”).
• The user must configure the TX_CAL_LEN_MAIN to indicate the number of valid entries to sequence through in
the Main Calendar. Not all applications require 1023 locations to be polled.
• If the Shadow Calendar is to be used, the user must configure the TX_CAL_LEN_SHD to indicate the number of
valid entries to sequence in the Shadow Calendar. The Shadow Calendar is independent of the Main Calendar,
and may have a different number of entries.
• The user must either enable TX_BURST_TERMINATION or leave it disabled. By default it is disabled.
When a port is indexed within the Calendar, the indexed vector serves as the address to the Port Descriptor Memory, to fetch all the necessary information to service the selected port. The Port Descriptor Memory (PDM) provides
256 entries; one for each possible SPI4 port. The PDM contains all the port servicing control information. When a
port is indexed via the Calendar, the Calendar pointer is incremented to the next location, serving as a pseudo
prefetch in case TX_BURST_TERMINATION is enabled. Every time a Port is indexed in the PDM, an internal
counter loads BURST_VAL and begins decrementing. Upon nulling out, the next Calendar entry is used to index
the PDM to fetch the next port to be serviced. Again, the Calendar advances to the next enabled location. As
defined within the SPI4 specification, BURST_VAL indicates the number of 16-Byte cycles a port may be serviced
before segmentation must occur. Using BURST_VAL, the Transmit Calendar can maintain constant Port servicing
from the Dual Port memories.
• The user must configure a BURST_VAL value for each enabled SPI4 port. The PDM contains 256 locations, i.e.
one for each possible SPI4 port.
The Transmit Calendar broadcasts the AMA_ID and BURST_VAL vectors, fetched from the PDM, to the AMA
block. The AMA will use the ID value to address the physical entry of the port that is to be serviced. Note the
AMA_ID value is the physical address of the DPRAM and is made up of two user-configurable fields, the
PARTITION_ID and BANK_ID.
• The DPRAMs consist of 4 banks, and each may be partitioned into a maximum of 8 virtual FIFOs each. The user
must configure both the PARTITION_ID[2:0] and BANK_ID[1:0] fields for each enabled port within the PDM. The
PARTITION_ID vector is identical to the SPIA_TX32_ADDR_0[2:0]. The user configures the same partition
address for a particular port that is used as the address on transmit DPRAM write interface. The BANK_ID vector
is simply derived from the physical interface used at the FPGA/embedded core interface, as shown below.
– 32-bit mode → [00,01,10,11], providing up to 4 interfaces
– 64-bit mode → [00, 01], providing up to 2 interfaces
– 128-bit mode → [00], providing a single interface
For all combinations of aggregation, the values given above apply.
• More than one port can be mapped to the same partition. Simply program the same PARTITION_ID and
BANK_ID values in all the PDM port entries that share the same partition.
54
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The Transmit Calendar also broadcasts the BURST_VAL, current status and either the transmit Calendar entry
vector or a user-configurable port value to the FPGA. Selection between the Calendar vector and the configured
value is decided with the 'M'-bit. When logic '0', the Calendar Port vector is broadcast to the FPGA. Otherwise, the
user-configurable PORT_ID field is sent. The optional PORT_ID is provided in order to assist the FPGA in mapping
it's proprietary channel/port numbers to the SPI4 Calendar port value. By configuring the PORT_ID value and setting the 'M'-bit for particular ports, the FPGA will receive the programmed value instead of the SPI4 port number.
This feature is very useful when the user is sharing a particular FIFO partition within the DPRAM between multiple
ports. Providing these fields to the FPGA enables users to updated statistics of port servicing for external data
schedulers and the external Memory Controller.
• If the user desires to have proprietary channel/port values broadcast to the FPGA, the 'M'-bit must be set to a
logical “1”, and the associated PORT_ID field must be configured to the desired value.
• This is done on a per port basis, so some ports may be mapped, while others use the Transmit Calendar index
vector.
• If the user maps more than one port to the same FIFO partition, the user is free to choose which Port ID field is
sent to the FPGA.
As ports are serviced, their Credit fields are updated according to the requirements as defined within the SPI4
specification. Although not commonly used, the Transmit SPI4 Calendar logic allows the user to configure the
Credit field with an initial value at configuration time. This is useful for some applications as well as providing diagnostic and test capabilities of the Calendar update logic. The Transmit Calendar also supports single Maxburst1 &
Maxburst2 values, as defined within SPI4. The MB_EN field is enabled on a per-port basis and indicates whether
the associated port differentiates between the defined Hungry and Starving states. When the MB_EN bit is set to a
logical “1”, that particular port uses both the Maxburst1 and Maxburst2 fields: otherwise only the Maxburst1 field is
associated with the Port’s Credit field update algorithm.
• In order to use the Maxburst1 and Maxburst2 fields, the user must program both fields to the required values. By
default the value for these registers is “0”.
• The user must either configure the MB_EN field for each port to a logical “1” if the port have it’s Credit field
updated using the Maxburst2 field. By default the Maxburst2 values are not used in the Credit update calculation.
• The user can optionally configure the Credit field to a particular value if desired, although it is not necessary for
most applications.
During normal operation, Transmit status is received on a per port basis. The status field for each port is updated
independent of where the Transmit Calendar polling exists. Internal logic prevents updates to be performed on a
port while it is in use. Although uncommon, the SPI4 Transmit Calendar allows the user to configure the STAT field
to some value, but only during initialization. This is intended to be used for diagnostics or for some other proprietary
applications. Under normal operation, the user can ignore this function.
• The user can program the STAT[1:0] field for as many ports as desired within the PDM.
When a HUNGRY status indication is received, transfers up to Maxburst2 16-byte blocks or the remainder of what
was previously granted (whichever is greater) may be sent to the corresponding port prior to the next status update.
A STARVING status indication indicates that buffer underflow is imminent in the corresponding PHY port. When
STARVING is received, transfers for up to Maxburst1 16-byte blocks may be sent to the corresponding port prior to
the next status update. Internal to ORSPI4, the “16-byte blocks” term is also called BURST_VAL. Even though the
Maxburst1 and Maxburst2 are global parameters for all the ports, each port has its own BURST_VAL parameter
attached to it that the user must program in the Transmit Port Descriptor Memory (TXPDM). Every time the TX status is updated for a port, Maxburst1 or Maxburst2 values are loaded into the credits field for that particular port.
From that point on until a new TX status update takes place, data is sent according to the following flow-chart.
55
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 20. Port Credit Field Update Flow Chart
START
Tx
STATUS
UPDATE
NO
HUNGRY
Data Sent =
| (Credits - BURST_VAL) | * 128 Bits
SATISFIED
STATUS
NO
MB_EN
Credits = | (Credits - BURST_VAL) |
YES
YES
STARVING
Credits = Maxburst1
Credits = Maxburst2
Data Sent =
BURST_VAL * 128 Bits
Table 9 below shows the SPI4 Status update definitions.
Table 9. SPI4 Status Field Definition
MSB
LSB
1
1
Reserved for framing or indicate a disabled status link.
Description:
1
0
SATISFIED Indicates the corresponding port's FIFO is almost full. When SATISFIED is
received, only transfers using the remaining previously granted 16-byte blocks (if any) may
be sent to corresponding port until the next status update. No additional transfers to that
port are permitted while SATISFIED is indicated.
0
1
HUNGRY When HUNGRY is received, transfers for up to MAXBURST2 16-byte blocks or
the remainder of what was previously granted (whichever is greater), may be sent to the
corresponding port until the next status update.
0
0
STARVING Indicates that buffer underflow is imminent in the corresponding PHY port.
When STARVING is received, transfers for up to MAXBURST1 16-byte blocks may be
sent to the corresponding port until the next status update.
When transmitting across the SPI4 link, typically for clock speeds in excess of 350 MHz, dynamic alignment is
required to maintain a coherent data link. In conjunction with dynamic alignment, SPI4 outlines a Training protocol
that is periodically used to maintain receive data integrity. The SPI4 Transmit core supports data training through
the use of a 32-bit variable named TX_DATA_MAX_T. This 32-bit variable indicates the number of clock cycles that
will occur between training sequences. SPI4 also defines an TX_ALPHA variable indicating the number of times
the training pattern is to be repeated during a training session. The TDP supports both these variables allowing the
user to tailor both of these parameters to fit their particular environment and dynamic traffic requirements.
• The user must configure the 32-bit TX_DATA_MAX_T variable to indicate the number of clock cycles that should
lapse between training sequence. A value of 0x00000000 disables training. By default training is disabled.
56
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• If training is to be used, the user must also configure the 16-bit TX_ALPHA variable to indicate the number of
times the training pattern is to be repeated. By default the value is 0x0000 which disables the training pattern.
If the number of Bytes within the training sequences do not fill entire SPI4 Burst Cycle, the unused Byte fields will
be padded with Idle data in order to keep the training sequences aligned on 16 Byte boundaries.
Calendar Programming
On a SPI4 link, FIFO status information is received periodically over the status link (TSTAT bus on the SPI4 interface) from the device that sources data. Calendar is a means by which the SPI4 link conveys information to the TX
data source about the availability of buffer space in the RX FIFOs that receive data from that data source. A calendar is a sequence of status messages that:
• Provides information on the buffer space for a port or traffic flow.
• Allows user to allocate bandwidth for a port or flow depending on the overall traffic characteristics.
The SPI4 status channel operates at 1/8th the SPI4 data rate, which is reasonable because data is always sent in
16-byte bursts. Thus, the fastest status update can be expected once in every 8 data clock cycles. For a given port,
the frequency with which its status is reported to the far-end transmitter source depends on the allocated bandwidth for the port. It is imperative that the transmitter and receiver devices are programmed with identical calendar
sequences. The following examples illustrate this:
Suppose a channelized STS-48 has three STS-12 ports and four STS-3 ports (channels), each STS-12 port
should have four times the bandwidth of an STS-3 port and 12 times the bandwidth of an STS-1 port within a single
calendar cycle. The first step is to map each port to an 8-bit Port ID (address) as shown in Table 23
Table 10. Port ID Mapping
Port
Bandwidth
8-Bit Port ID
(Port Address)
A1
STS-12
0x00
A2
STS-12
0x01
A3
STS-12
0x02
B1
STS-3
0x03
B2
STS-3
0x04
B3
STS-3
0x05
B4
STS-3
0x06
The calendar sequence is as follows:
A1, A2, A3, B1, A1, A2, A3, B2, A1, A2, A3, B3, A1, A2, A3, B4
The number of calendar entries is thus 16. This calendar sequence is programmed in the transmit calendar memory as follows:
• This example uses the main calendar. The calendar memory is selected by setting the TX_CAL_MEM_SEL bit
(address 30917 in SPIA and address 30A17 in SPIB) to ‘1’.
• Writes are done to addresses 0x31000 - 0x3100F. This will correspond to entries 0x00 - 0x0F in the calendar
memory. This is shown in Table 11. Note that the main calendar memory has 1023 locations and can be programmed through addresses 0x31000 - 0x313FE. The shadow calendar memory also has 1023 locations and
can be programmed through addresses 0x31400 - 0x317FE.
• After programming the calendar memory, the TX_CAL_MEM_SEL bit is set to ‘0’.
• The calendar length register TX_CAL_LEN_MAIN is set to 16 (address 30922 and 30923 in SPIA, 30A22 and
30A23 in SPIB).
57
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• TX_CAL_M_MAIN (address 30921 in SPIA and 30A21 in SPIB) is set to the number of times the calendar
sequence needs to be repeated between framing patterns.
• The shadow calendar can be programmed in the same identical fashion as the main calendar using the steps
described above.
To enable hitless switching between main and shadow calendar memories, the TX_CAL_SW_EN bit (address
30916 in SPIA and 30A16 in SPIB) should be set to ‘1’. This will cause the transmit status logic to detect the calendar select word after the framing pattern. A “01” detected on the calendar select word selects the main calendar. A
“10” on the calendar select word selects the shadow calendar. It is important to enable this feature in the receive
device on the other end of the SPI4 link. If the receive device is a Lattice ORSPI4 device, this is done by setting
RX_CAL_SW_EN bit (address 30916 in SPIA and 30A16 in SPIB) to ‘1’. This will cause the far-end receive status
logic to insert the calendar select word after the framing pattern.
Table 11. Transmit Calendar Memory Contents
TX Calendar Memory
Address
TX Calendar Memory
Contents (Port ID)
Port Number
0x00
0x00
A1
0x01
0x01
A2
0x02
0x02
A3
0x03
0x03
B1
0x04
0x00
A1
0x05
0x01
A2
0x06
0x02
A3
0x07
0x04
B2
0x08
0x00
A1
0x09
0x01
A2
0x0a
0x02
A3
0x0b
0x05
B3
0x0c
0x00
A1
0x0d
0x01
A2
0x0e
0x02
A3
0x0f
0x06
B4
MIN_BURST_MODE
The number of transmitted data bytes in a given port’s SPI-4 data segment can be programmed by setting the
BURST_VAL for a given port in the Port Descriptor Memory. In general, setting a port’s BURST_VAL will result in
transmitted data segments of length (16 * BURST_VAL) bytes. However, data segments shorter than (16 *
BURST_VAL) bytes will occur about 15% of the time. There are three reasons for shorter data segments:
1. End-of-packet (EOP) causes segment to terminate
2. Insufficient data is written into a port’s transmit FIFO to support a full data burst.
3. ORSPI4 core logic causes occasional short segments.
Reason 1 will always naturally occur with any SPI4 link and so can never be completely eliminated. However, the
following steps which take advantage of the MIN_BURST_MODE will eliminate short data segments caused by
reasons 2 and 3:
1. Set MIN_BURST_MODE (address 30916, bit 3 for SPIA and 30A16, bit 3 for SPIB) to 1.
58
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
2. It is recommended that BURST_VAL for all ports be set to the same value equal to (data_burst_value/16). For
example, for a data burst requirement of 64 bytes, all port BURST_VAL should be set to 4. For a data burst requirement of 128 bytes, all port BURST_VAL should be set to 8. A maximum BURST_VAL of 15 will support a data burst
of 240 bytes. Having a common BURST_VAL for all ports simplifies design of the sequencer needed to keep all
transmit ports filled sufficiently at all times for data bursts. With all port BURST_VAL the same, relative port bandwidth can be set by loading the Transmit Calendar appropriately.
3. Set TX_FIFO_THRESHOLD_L (address 30945, bits [0:2] for SPIA, address 30A45, bits [0:2] for SPIB) to [integer(BURST_VAL/4) + 1]. For example, if BURST_VAL = 10, TX_FIFO_THRESHOLD_L should be set to 3.
4. Set MAXBURST1 and MAXBURST2 to integer multiples of BURST_VAL that are at least 2 times BURST_VAL.
For example, if BURST_VAL = 4, then MAXBURST1 could be set to 12 and MAXBURST2 could be set to 8. To
optimize a port for minimum bursts it is best to set MAXBURST1 and MAXBURST2 to as high a value as possible.
The reason for this is as follows.
Whenever the transmitter detects a SATIFIED status condition when polling a port, that port’s credit field (stored in
the Port Descriptor Memory) is automatically decremented by BURST_VAL. If the credit field ever drops below
BURST_VAL, the port poll will terminate, reducing the available time to fill the transmit FIFOs for data bursts.
Therefore, it is recommended that the SPI[A,B]_k_STAT signal from the core be monitored and writing be suspended to any port whose receive FIFO is SATISFIED. Writing to that port can commence once HUNGRY or
STARVING appears at the SPI[A,B]_k_STAT because this will guarantee that the credit field for the port has been
updated to a value greater than BURST_VAL. Maximizing the values of MAXBURST1 and MAXBURST2 gives the
greatest time between credit update and potential decrement below BURST_VAL (which will eventually happen if
enough SATISFIED status conditions occur). This in turn simplifies the design of a transmit FIFO data write state
machine.
5. In order to ensure that a full BURST_VAL block of data is always available when a port is serviced, it is necessary to synchronize the writing of data to each port’s transmit FIFO to the transmitter’s FIFO read sequence. This
can be done by monitoring the PORT_ID of the currently serviced SPI4 port (SPI[A,B]_k_PORT_ID). Figure 21,
Figure 22, and Figure 23 show write sequencing that would result in sufficiently full transmit FIFOs for full data
bursts at all times (except for end-of-packet) for 32-bit, 64-bit, and 128-bit aggregation modes respectively. The figures illustrate the most stringent polling sequencing that would still allow consistently full data bursts. For example,
the minimum required gap between polls of the same port is determined by the aggregation mode chosen. Longer
gaps between epeated port polling will result in more flexibility in timing the transmit FIFO writes. The examples in
Figure 21, Figure 22, and Figure 23 illustrate a BURST_VAL of 4, but are extendable to BURST_VAL values from 2
to 15. Note that BURST_VAL for each port is available on SPI[A,B]_k_BURST_VAL. This may be useful in cases
where BURST_VAL has not been set to the same value for each port.
59
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 21. Write Synchronization Sequence for 32-Bit Mode
Transmit Calendar
Minimum Port Gap
for 32-bit Mode
.
.
Minimum separation between repeating
port numbers in Transmit Calendar = 4 for
32-bit mode to allow time to load Transmit
FIFOs for data bursts of any length
Port 0
Set equal
BURST_VAL
for all ports
Port 1
Port 2
Each port in a minimum separation must
be located in a different bank
Port 3
Port 0
.
.
32-bit Mode (BURST_VAL = 4 example)
SPI[A,B]_k_CLK_j
SPI[A,B]_k_PORT_ID
...
...
Port 0
Port 1
Port 2
Port 3
1 port duration =
BURST_VAL
clock cycles
Port 0, write 1
Port 0
...
End of data
burst read for
Port 0
Port 0, write 2
Port 0, write 3
Port 0, write 4
Range for Transmit FIFO writes
Start 1 st write no sooner than 6
clock cycles before beginning of
initial port cycle*
* Rules valid for any value of
BURST_VAL in 32-bit mode
Conditions for writing to transmit FIFO:
1. If BURST_VAL worth of data is ready to be transmitted
and
2. Port status is not SATISFIED
and
3. Within valid time to load portís transmit FIFO as shown above
then
OK to load transmit FIFO with BURST_VAL of data for that port
60
End last write no later
than 2 clock cycles before
end of port cycle*
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 22. Write Synchronization Sequence for 64-Bit Mode
Transmit Calendar
Minimum Port Gap
for 64-bit Mode
.
.
Set equal
BURST_VAL
for all ports
Minimum separation between repeating
port numbers in Transmit Calendar = 2 for
64-bit mode to allow time to load Transmit
FIFOs for data bursts of any length
Port 0
Port 1
Both ports in a minimum separation must
be located in a different bank
Port 0
.
.
64-bit Mode (BURST_VAL = 4 example)
SPI[A,B]_k_CLK_j
SPI[A,B]_k_PORT_ID
...
...
Port 0
Port 1
Port 0
1 port duration =
BURST_VAL
clock cycles
Port 0,
write 1
...
End of data
burst read for
Port 0
Port 0,
write 2
Port 0,
write 3
Port 0,
write 4
Range for Transmit FIFO writes
Start 1 st write no sooner than 4
clock cycles before beginning of
initial port cycle*
End last write no later
than 2 clock cycles before
end of port cycle*
* Rules valid for any value of
BURST_VAL in 64-bit mode
Conditions for writing to transmit FIFO:
1. If BURST_VAL worth of data is ready to be transmitted
and
2. Port status is not SATISFIED
and
3. Within valid time to load portís transmit FIFO as shown above
then
OK to load transmit FIFO with BURST_VAL of data for that port
61
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 23. Write Synchronization Sequence for 128-Bit Mode
Transmit Calendar
Minimum Port Gap
for 128-bit Mode
.
.
Port 0
128-bit mode allows for consecutive port
polling for any value of BURST_VAL
Port 0
.
.
128-bit Mode (BURST_VAL = 4 example)
SPI[A,B]_k_CLK_j
...
...
Port 0
...
Port 0
1 port duration =
BURST_VAL
clock cycles
End of data
burst read for
Port 0
Port 0,
w rite 1
Port 0,
w rite 2
Port 0,
w rite 3
Port 0,
w rite 4
SPI[A,B]_k_PORT_ID
Range for Transmit FIFO writes
Start 1 st write no sooner than 3
clock cycles before beginning of
initial port cycle*
End last write no later
than 2 clock cycles before
end of port cycle*
* Rules valid for any value of
BURST_VAL in 128-bit mode
Conditions for writing to transmit FIFO:
1. If BURST_VAL worth of data is ready to be transmitted
and
2. Port status is not SATISFIED
and
3. Within valid time to load portís transmit FIFO as shown above
then
OK to load transmit FIFO with BURST_VAL of data for that port
62
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
6. In order to avoid straddling packets during a data burst, it is necessary to track the location of an end-ofpacket(EOP) within a data burst to insert a dummy word whenever the EOP does not occur within the final 128-bit
(16-byte) word of a data burst. If an EOP does not occur during the final 128-bit word of a data burst, then the user
must insert a dummy word with the packet error indicator (SPI[A,B]_k_ERR_j) set to 1 and the end of packet indicator (SPI[A,B]_k_EOP_j) set to 0. During the dummy write, all byte enables (SPI[A,B]_k_BE_j) should be set to 1
and input data can be set to anything (don’t care). Examples of the placement of the dummy write in relation to the
EOP are shown in Figure 24, Figure 25, and Figure 26.
Figure 24. Dummy Write Requirement for MIN_BURST_MODE (128-Bit Mode)
128-bit
1
2
.
.
.
n-3
EOP
BURST_VAL = n
If EOP occurs in any write EXCEPT
last write for a given BURST_VAL,
must include 1 dummy write before
terminating writes for the port
Dummy Write:
n-2
SPI[A,B]_TX128_ERR = 1
SPI[A,B]_TX128_EOP = 0
SPI[A,B]_TX128_BE[15:0] = 0xFFFF
SPI[A,B]_TX128_DATA = Donít Care
DUMMY WRITE
n-1
n
If EOP occurs in last write as defined
by the BURST_VAL, then no dummy
write is required
EOP OK
63
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 25. Dummy Write Requirement for MIN_BURST_MODE (64-Bit Mode)
64-bit
64-bit
1
2
If EOP occurs in any write EXCEPT last
two writes for a given BURST_VAL, must
include 1 dummy write before terminating
writes for the port
.
.
BURST_VAL = n
n-2
EOP
.
Dummy Write:
DUMMY WRITE
SPI[A,B]_TX64_ERR_j = 1
SPI[A,B]_TX64_EOP_j = 0
SPI[A,B]_TX64_BE_j(7:0) = 0xFF
SPI[A,B]_TX64_DATA = Donít Care
n-1
n
EOP OK
EOP OK
64
If EOP occurs in last two writes as
defined by the BURST_VAL, then no
dummy write is required
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 26. Dummy Write Requirement for MIN_BURST_MODE (32-Bit Mode)
32-bit
32-bit
32-bit
32-bit
1
2
If EOP occurs in any write EXCEPT last
four writes for a given BURST_VAL,
must include 1 dummy write before
terminating writes for the port
.
.
.
BURST_VAL = n
EOP
Dummy Write:
n-2
SPI[A,B]_TX32_ERR_j = 1
SPI[A,B]_TX32_EOP_j = 0
SPI[A,B]_TX32_BE_j(3:0) = 0xF
SPI[A,B]_TX32_DATA = Donít Care
DUMMY
WRITE
n-1
n
EOP
OK
EOP
OK
EOP
OK
EOP
OK
If EOP occurs in last four writes as
defined by the BURST_VAL, then no
dummy write is required
SPI4 FPGA/Embedded Core Timing Delays
When designing application logic within the FPGA to interface with the embedded core, it is important to consider
the input setup and hold time requirements of the embedded core logic. There are two directions for signaling information between the FPGA and the embedded core. The first is where the FPGA sources transmit data and associated control signals into the embedded core. Data in this direction is always synchronous to the clock source within
the FPGA. The other data path direction is used to convey Calendar port and status information from the embedded core to the FPGA. All signals in this category are synchronous to the buffered reference clock within the
embedded core. All timing is handled in the ispLEVER software using frequency preferences on the associated
clocks.
65
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
FPGA Sourced Data and Control
In this mode, the FPGA sends data into the embedded core relative to the rising edge of it’s own clock as well as
providing the clock for the embedded core. The embedded core uses the FPGA clock to register all input data and
control signals. Figure 27 shows the Worst Case Slow and Worst Case Fast propagation delays for the FPGA input
data and control signals as well as the clock signal.
For guaranteed performance it is important that all input signals from the FPGA be registered before being sent
into the embedded core.
Clocking Schemes and Timing Diagrams - Transmit DPRAM Interface
Figure 27. Data: SPI[A,B]_DATA/SOP/EOP/BE/ERR/PORT/WE/ADDR/SPI[A,B]_TXk_WD_CNT_RST
/LINK_DIS
Clock: SPI[A,B]_k_CLK_[3:0]; k=32, 64,128
4.81 / 1.18 ns
3.5/0.5 ns
Buffer
Delay
D
Q
Delay
D1
1.5/0.5 ns
C
Delay
Setup = 2.6 ns
Hold = - 0.32 ns
1.36/ 0.47 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
Embedded Core Sourced Status
The embedded core sources port and status information relative to a buffered version of the externally provided reference clock (TREFCLK). The FPGA receives both the status information and clock, and can use the provided
clock to synchronize all status information for it’s own use. Figure 28 shows the Worst Case Slow and Worst Case
Fast propagation delays for the embedded core output status signals as well as the clock signal.
With the given timing delays the FPGA logic can either immediately register the provided status information or, if
required, implement some combinatorial logic function before registering the information.
66
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 28. Data: ATX_PORTID[7:0], BTX_PORTID[7:0], ATX_STAT[1:0], BTX_STAT[1:0], ABURST_VAL[3:0],
BBURST_VAL[3:0]
Clock: ATREFCLK, BTREFCLK
5.4 / 2.1 ns
(includes ck to Q)
Buffer
3.5/0.5 ns Delay
D
Delay
D
Q
D
Clock Insertion
Delay = 6.8 / 2.4 ns
ATREFCK_F
Clock Buffer Delay
4.0/1.0 ns Relative to Data
C
TREFCLK
(from off-chip)
BTREFCLK_F
1.36/ 0.47 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
SPI4 Transmit Software Interface
The SPI4 transmit interface is configurable through a System Bus interface incorporated within the embedded core.
The user can gain access to the System Bus either through the integrated MPI interface, or through FPGA
resources using the System Bus Master/Slave interface. Please refer to the appropriate Lattice Semiconductor
data sheets and application notes for more information regarding these interfaces.
The Transmit SPI4 interface logic incorporates many configurable control registers, as well as interrupt and status
registers to monitor SPI4 performance. Table 47 provides a memory map and description of each register within
the Transmit portion of the SPI4 embedded core.
Special Operating Modes
Quarter-Rate Mode
The ORSPI4 SPI4 TX interface is designed to operate at data rates much lower than 622 Mbps. Even though the
OIF standard specifies a minimum data rate of 622 Mbits/s, the lower data rates are provided for users who wish to
use the SPI4 link for applications supporting <10 Gbits/s aggregate bandwidth (STS-48, STS-3, Gb Ethernet, etc.).
To enable this low speed mode, user should set the software register bit SPI4_QUARTER_RATE (Address 30915
in SPIA and 30A15 in SPIB) to ‘1’. This supports data rates in the range of 100 - 200 Mbps. Note that the normal
operating modes 32-bit, 64-bit and 128-bit are independent of the quarter-rate mode. In quarter-rate mode, the
transmit PLL is held in reset by setting the MRESET hardware pin to ‘1’. The PLL bypass mode is enabled by setting the BYPASS pin to ‘1’ which causes the SPI[A,B]_TREFCLK_X8 clock from the FPGA to be used as the transmit reference clock. It must be two- times the desired Transmit SPI4 line clock rate. When not operating the
Transmit SPI4 core in quarter-rate mode, this signal should be tied off. Ex: For a 100 MHz Transmit SPI4 line clock,
SPIA_TREFCLK_X8 from the FPGA must be 200 MHz.
67
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 SPI4 Receive Path Functional Description
This section describes the receive section of the SPI4 interface. Although there will be two SPI4 compliant interfaces within the FPSC, this section describes a single interface. The other interface is a duplicate and therefore
needs no additional technical description.
ORSPI4 Receive Features
The Receive SPI4 interface supports the following features:
• 10 Gbits/s data throughput.
• Four dual-port memory banks supporting buffering for up to 32 ports. If support for more than 32 ports is needed,
then the dual-port memories can be used for clock domain crossing purposes and data can be buffered in an
external memory.
• Port Status Sequencer (PSS), including Receive Calendar (main and shadow), will support up to 256 ports, the
maximum number of ports supported by the SPI4 standard.
• 32, 64 and 128-bit data width aggregation modes at the user (core/FPGA) interface.
• Programmable main and shadow calendar table. All calendar configuration parameters specified in the SPI4
standard such as CALENDAR_LEN, CALENDAR_M are supported.
• Optional dynamic alignment of receive data at the high-speed SPI4 interface. Dynamic alignment is required at
rates > 700 Mbits/s (350 MHz).
The SPI4 receive logic enables users to read incoming port data using a variety of interfaces and associated clock
domain options. It uses Dual Port RAMs (DPRAM) for temporary storage and clock domain crossing. Data is
received in SPI4 format as LVDS signals at the receive interface. The data is written into DPRAM as received and
read from the DPRAMs as requested by the FPGA logic. FIFO status is transmitted from the Receive Status interface according to a pre-configured polling sequence contained within the Receive Calendar. Data is formatted into
the SPI4 Receive Status format and sent to the physical links as either LVDS or LVTTL signals.
There are also several other features incorporated into the embedded core such as parallel loopback and far end
loopback to assist in debugging and statistic gathering. These features, and the SPI4 data formats and initialization
procedures are documented in separate sections since they involve both the transmit and receive paths.
The major blocks associated with the ORSPI4 receiver are:
• SPI4 Receive Logic - Data
– SPI4 Receive Data Input (RDI) block
– SPI4 Receive Data Protocol (RDP) logic
• Data Formatter
• Address Map
• DPRAM Banks
• Port Status Sequencer Logic (PSS)
• SPI4 Receive Logic - Status
– SPI4 Receive Status Protocol (RSP) logic
– SPI4 Receive Status Output (RSO) block
68
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
These blocks will be described in detail in the following sections. The ORSPI4 Receive functional block diagram is
shown in Figure 29.
Figure 29. ORSPI4 Receive Functional Block Diagram
k = 32, 64 or 128
j= 0, 1, 2 or 3
SPI[A,B]_k_DATA_j, BE_j
FPGA Interface
SPI[A,B]_k_ CTL_j (32 and 64 only)
data
SPI[A,B]_k_SOPj, EOPj, ERRj
3
16
control
[A,B]STOP_ON_EOPj
RX
DPRAM
SPI[A,B]_k_RD_j
RDP
[A,B]RCTL
RDI
control
SPI[A,B]_k_CLK_j
SPI[A,B]_k_ADDR_j
data
[A,B]RDAT
[A,B]RDCLK
3
SPI[A,B]_k_FIFO_EMPTY_j
control
Address
Mapper
[A,B]RLSCLK_F
SPI[A,B]_k_STAT
2
SPI[A,B]_k_PORT_ID
8
SPI[A,B]_k_EXT_STAT_EN
RLSTAT
PSS
RSP
RLSCLK
2
2
RSO
[A,B]RSTAT
[A,B]RSCLK
SPI[A,B]_k_PSS_WE
SPI[A,B]_k_PSS_CLK
ORSPI4 Receive Functional Block Overview
The ORSPI4 high-speed receive logic receives high-speed data on 16 LVDS pairs (RDAT[15:0]), control on one
LVDS pair (RCTL) and clock on one LVDS pair (RDCLK) at the SPI4 interface. This is an OIF-SPI-4 02.0 compliant
interface that supports data rates in the range of 622-900 Mbps. Additionally lower-speed data in the range of 100200 Mbps is also supported. The high-speed receive interface logic supports both static and dynamic alignment as
specified by the OIF-SPI-4 02.0 specification. Dynamic alignment allows for +/- one bit period of skew. During
dynamic alignment, training patterns are detected and deskew performed. Data is then deserialized into 128-bit
data and 8-bit control bus. The SPI4 receive data protocol logic then extracts the control information such as
PORT_ID, SOP, EOP and ERR into a separate sideband bus while still preserving wire-speed throughput. Data
and control signals are then written into one of four dual-port RAMs (DPRAMs). Per-port buffering is supported for
a maximum of 32 ports. The DPRAMs are built as multiple virtual FIFOs where each FIFO can be allocated for a
port by the user through software. At the FPGA fabric, the user reads data for the desired ports from the FIFOs
69
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
based on the empty status signals presented from the FIFOs. The user can select a 32-bit, 64-bit or 128-bit wide
FIFO interface depending on the FPGA design requirements.
There are two SPI4 cores in the ORSPI4 device. They are referenced in the document as SPIA and SPIB respectively.
ORSPI4 Receive Embedded Core/FPGA Interface Description
ORSPI4 Receive I/O Modes
The FPGA interface I/Os to the ORSPI4 logic block vary depending on the operating modes. There are three main
user operating modes:
• 32-bit operating mode: Each of the four DPRAMs can be configured with a 32-bit user data plus controls across
the FPGA interface. This mode is particularly useful if the user is aggregating multiple 32-bit interfaces into a single SPI4 interface.
• 64-bit operating mode: A DPRAM pair can be configured with 64-bit user data bus plus controls across the FPGA
interface. Two such DPRAM pairs are available. More flexibility is provided by configuring one pair of DPRAM
banks in 64-bit mode and the remaining two banks in 32-bit mode.
• 128-bit operating mode: All four DPRAM banks are aggregated into a single FIFO with a 128-bit user data interface.
Several other features are:
• Ability to pause for two clock cycles when an EOP is detected using the ASTOP_ON_EOP (SPIA) or
BSTOP_ON_EOP (SPIB) control signal. Please refer to the timing diagrams for detailed information.
Table 12 lists I/Os for SPIA core only. They are identical in the SPIB core as well.
Table 12. SPIA Core Receive FPGA Interface in 32-Bit Mode
DPRAM
0
FPGA Interface I/Os
Direction
From/To
Description
SPIA_RX32_ADDR_0[2:0]
FPGA → Core FIFO read address.
SPIA_RX32_DATA_0[31:0]
Core →FPGA FIFO read data.
SPIA_RX32_BE_0[3:0]
Core →FPGA Byte enables
Bit 3 - Byte enable for SPIA_RX32_DATA_0[31:24]
Bit 2 - Byte enable for SPIA_RX32_DATA_0[23:16]
Bit 1 - Byte enable for SPIA_RX32_DATA_0[15:8]
Bit 0 - Byte enable for SPIA_RX32_DATA_0[7:0]
SPIA_RX32_CTL_0
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX32_DATA_0 bus contains
the port ID.
SPIA_RX32_SOP_0
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX32_EOP_0
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX32_ERR_0
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX32_FIFO_EMPTY_0 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[0]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full 1.
ASTOP_ON_EOP0
FPGA → Core Timing control for handling end of packet.
SPIA_RX32_CLK_0
FPGA → Core FIFO read clock.
SPIA_RX32_RD_0
FPGA → Core FIFO read enable.
Note: For SPIB replace A with B
70
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 12. SPIA Core Receive FPGA Interface in 32-Bit Mode (Continued)
DPRAM
1
FPGA Interface I/Os
Direction
From/To
Description
SPIA_RX32_ADDR_1[2:0]
FPGA → Core FIFO read address.
SPIA_RX32_DATA_1[31:0]
Core →FPGA FIFO read data.
SPIA_RX32_BE_1[3:0]
Core →FPGA Byte enables
Bit 3 - Byte enable for SPIA_RX32_DATA_1[31:24]
Bit 2 - Byte enable for SPIA_RX32_DATA_1[23:16]
Bit 1 - Byte enable for SPIA_RX32_DATA_1[15:8]
Bit 0 - Byte enable for SPIA_RX32_DATA_1[7:0]
SPIA_RX32_CTL_1
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX32_DATA_1 bus contains
the port ID.
SPIA_RX32_SOP_1
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX32_EOP_1
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX32_ERR_1
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX32_FIFO_EMPTY_1 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[1]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
2
ASTOP_ON_EOP1
FPGA → Core Timing control for handling end of packet.
SPIA_RX32_CLK_1
FPGA → Core FIFO read clock.
SPIA_RX32_RD_1
FPGA → Core FIFO read enable.
SPIA_RX32_ADDR_2[2:0]
FPGA → Core FIFO read address.
SPIA_RX32_DATA_2[31:0]
Core →FPGA FIFO read data.
SPIA_RX32_BE_2[3:0]
Core →FPGA Byte enables
Bit 3 - Byte enable for SPIA_RX32_DATA_2[31:24]
Bit 2 - Byte enable for SPIA_RX32_DATA_2[23:16]
Bit 1 - Byte enable for SPIA_RX32_DATA_2[15:8]
Bit 0 - Byte enable for SPIA_RX32_DATA_2[7:0]
SPIA_RX32_CTL_2
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX32_DATA_2 bus contains
the port ID.
SPIA_RX32_SOP_2
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX32_EOP_2
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX32_ERR_2
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX32_FIFO_EMPTY_2 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[2]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
ASTOP_ON_EOP2
FPGA → Core Timing control for handling end of packet.
SPIA_RX32_CLK_2
FPGA → Core FIFO read clock.
SPIA_RX32_RD_2
FPGA → Core FIFO read enable.
Note: For SPIB replace A with B
71
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 12. SPIA Core Receive FPGA Interface in 32-Bit Mode (Continued)
DPRAM
3
FPGA Interface I/Os
Direction
From/To
Description
SPIA_RX32_ADDR_3[2:0]
FPGA → Core FIFO read address.
SPIA_RX32_DATA_3[31:0]
Core →FPGA FIFO read data.
SPIA_RX32_BE_3[3:0]
Core →FPGA Byte enables
Bit 3 - Byte enable for SPIA_RX32_DATA_3[31:24]
Bit 2 - Byte enable for SPIA_RX32_DATA_3[23:16]
Bit 1 - Byte enable for SPIA_RX32_DATA_3[15:8]
Bit 0 - Byte enable for SPIA_RX32_DATA_3[7:0]
SPIA_RX32_CTL_3
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX32_DATA_3 bus contains
the port ID.
SPIA_RX32_SOP_3
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX32_EOP_3
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX32_ERR_3
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX32_FIFO_EMPTY_3 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[3]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
ASTOP_ON_EOP3
FPGA → Core Timing control for handling end of packet.
SPIA_RX32_CLK_3
FPGA → Core FIFO read clock.
SPIA_RX32_RD_3
FPGA → Core FIFO read enable.
SPIA_RX32_PORT_ID[7:0]
FPGA → Core Port ID used by the core as write address into the status RAM.
SPIA_RX32_STAT[1:0]
Status SPIA_RX32_EXT_STAT_EN
I/Os
SPIA_RX32_PSS_WE
Misc.
I/Os
FPGA → Core Port Status corresponding to SPIA_RX32_PORT_ID
FPGA → Core When set to ‘1’, the status from SPIA_RX32_STAT will be sent on the SPI4
status i/f.
FPGA → Core Write enable to the internal Status RAM.
SPIA_RX32_PSS_CLK
FPGA → Core Write clock to the internal Status RAM.
SPI_DATM_A
FPGA → Core Valid only during static data capture. Should be set to ‘0’ in dynamic alignment mode.
‘0’ - Bypass delay line circuit on the clock (ARDCLK) path.
‘1’ - Enables delay line circuit on the ARDCLK path.
SPI_DLYTAP_A[2:0]
FPGA → Core These bits control the effective delay of the delay line circuit on the ARDCLK path. Valid values are from 0-6.
ARLSCLK_F
Core →FPGA Internal clock (ARDCLK/4) used to clock all receive status logic.
Note: For SPIB replace A with B
72
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 13. SPIA Core Receive FPGA Interface in 64-Bit Mode
DPRAM
FPGA Interface I/Os
SPIA_RX64_ADDR_0[2:0]
0
Direction
From/To
Description
FPGA → Core FIFO read address.
SPIA_RX64_DATA_0[63:0]
Core →FPGA FIFO read data.
SPIA_RX64_BE_0[7:0]
Core →FPGA Byte enables
Bit 7 - Byte enable for SPIA_RX64_DATA_0[63:56]
Bit 6 - Byte enable for SPIA_RX64_DATA_0[55:48]
Bit 5 - Byte enable for SPIA_RX64_DATA_0[47:40]
Bit 4 - Byte enable for SPIA_RX64_DATA_0[39:32]
Bit 3 - Byte enable for SPIA_RX64_DATA_0[31:24]
Bit 2 - Byte enable for SPIA_RX64_DATA_0[23:16]
Bit 1 - Byte enable for SPIA_RX64_DATA_0[15:8]
Bit 0 - Byte enable for SPIA_RX64_DATA_0[7:0]
SPIA_RX64_CTL_0
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX64_DATA_0 bus contains
the port ID.
SPIA_RX64_SOP_0
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX64_EOP_0
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX64_ERR_0
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX64_FIFO_EMPTY_0 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[0]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
1
ASTOP_ON_EOP0
FPGA → Core Timing control for handling end of packet.
SPIA_RX64_CLK_0
FPGA → Core FIFO read clock.
SPIA_RX64_RD_0
FPGA → Core FIFO read enable.
SPIA_RX64_ADDR_1[2:0]
FPGA → Core FIFO read address.
SPIA_RX64_DATA_1[63:0]
Core →FPGA FIFO read data.
SPIA_RX64_BE_1[7:0]
Core →FPGA Byte enables
Bit 7 - Byte enable for SPIA_RX64_DATA_1[63:56]
Bit 6 - Byte enable for SPIA_RX64_DATA_1[55:48]
Bit 5 - Byte enable for SPIA_RX64_DATA_1[47:40]
Bit 4 - Byte enable for SPIA_RX64_DATA_1[39:32]
Bit 3 - Byte enable for SPIA_RX64_DATA_1[31:24]
Bit 2 - Byte enable for SPIA_RX64_DATA_1[23:16]
Bit 1 - Byte enable for SPIA_RX64_DATA_1[15:8]
Bit 0 - Byte enable for SPIA_RX64_DATA_1[7:0]
SPIA_RX64_CTL_1
Core →FPGA Port ID indicator. A ‘1’ indicates that the SPIA_RX64_DATA_1 bus contains
the port ID.
SPIA_RX64_SOP_1
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX64_EOP_1
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX64_ERR_1
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX64_FIFO_EMPTY_1 Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[0]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
ASTOP_ON_EOP1
FPGA → Core Timing control for handling end of packet.
SPIA_RX64_CLK_1
FPGA → Core FIFO read clock.
SPIA_RX64_RD_1
FPGA → Core FIFO read enable.
Note: For SPIB replace A with B
73
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 13. SPIA Core Receive FPGA Interface in 64-Bit Mode (Continued)
DPRAM
FPGA Interface I/Os
Description
SPIA_RX64_PORT_ID[7:0]
FPGA → Core Port ID used by the core as write address into the status RAM.
SPIA_RX64_STAT[1:0]
FPGA → Core Port Status corresponding to SPIA_RX64_PORT_ID
Status SPIA_RX64_EXT_STAT_EN
I/Os
Misc.
I/Os
Direction
From/To
FPGA → Core When set to ‘1’, the status from SPIA_RX64_STAT will be sent on the SPI4
status i/f.
SPIA_RX64_PSS_WE
FPGA → Core Write enable to the internal Status RAM.
SPIA_RX64_PSS_CLK
FPGA → Core Write clock to the internal Status RAM.
SPI_DATM_A
FPGA → Core Valid only during static data capture. Should be set to ‘0’ in dynamic alignment mode.
‘0’ - Bypass delay line circuit on the clock (ARDCLK) path.
‘1’ - Enables delay line circuit on the ARDCLK path.
SPI_DLYTAP_A[2:0]
FPGA → Core These bits control the effective delay of the delay line circuit on the ARDCLK path. Valid values are from 0-6.
ARLSCLK_F
Core →FPGA Internal clock (ARDCLK/4) used to clock all receive status logic.
Note: For SPIB replace A with B
74
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 14. SPIA Core Receive FPGA Interface in 128-Bit Mode
DPRAM
FPGA Interface I/Os
SPIA_RX128_ADDR[2:0]
0
Direction
From/To
Description
FPGA → Core FIFO read address.
SPIA_RX128_DATA[127:0]
Core →FPGA FIFO read data.
SPIA_RX128_BE[15:0]
Core →FPGA Byte enables
Bit 15- Byte enable for SPIA_RX128_DATA[127:120]
Bit 14- Byte enable for SPIA_RX128_DATA[119:112]
Bit 13- Byte enable for SPIA_RX128_DATA[111:104]
Bit 12- Byte enable for SPIA_RX128_DATA[103:96]
Bit 11- Byte enable for SPIA_RX128_DATA[95:88]
Bit 10- Byte enable for SPIA_RX128_DATA[87:80]
Bit 9- Byte enable for SPIA_RX128_DATA[79:72]
Bit 8- Byte enable for SPIA_RX128_DATA[71:64]
Bit 7 - Byte enable for SPIA_RX128_DATA[63:56]
Bit 6 - Byte enable for SPIA_RX128_DATA[55:48]
Bit 5 - Byte enable for SPIA_RX128_DATA[47:40]
Bit 4 - Byte enable for SPIA_RX128_DATA[39:32]
Bit 3 - Byte enable for SPIA_RX128_DATA[31:24]
Bit 2 - Byte enable for SPIA_RX128_DATA[23:16]
Bit 1 - Byte enable for SPIA_RX128_DATA[15:8]
Bit 0 - Byte enable for SPIA_RX128_DATA[7:0]
SPIA_RX128_PORTID[7:0]
Core →FPGA Port ID for the current data.
SPIA_RX128_SOP
Core →FPGA Start of Packet Indicator. A ‘1’ indicates start of packet.
SPIA_RX128_EOP
Core →FPGA End of Packet Indicator. A ‘1’ indicates end of packet.
SPIA_RX128_ERR
Core →FPGA Error. A ‘1’ indicates an error in the current word.
SPIA_RX128_FIFO_EMPTY
Core →FPGA FIFO Empty flag. Depends on the RX_DPRAM_EMPTY_TYPE_SELA[0]
software register bit in address 0x30920. When this bit is set to ‘0’, (default)
the empty flag indicates truly empty.
When this bit is set to ‘1’, the empty flag indicates that the FIFO is 1/4 full -1.
ASTOP_ON_EOP
FPGA → Core Timing control for handling end of packet.
SPIA_RX128_CLK
FPGA → Core FIFO read clock.
SPIA_RX128_RD
FPGA → Core FIFO read enable.
SPIA_RX128_PORT_ID[7:0]
FPGA → Core Port ID used by the core as write address into the status RAM.
SPIA_RX128_STAT[1:0]
FPGA → Core Port Status corresponding to SPIA_RX128_PORT_ID
SPIA_RX128_EXT_STAT_EN FPGA → Core When set to ‘1’, the status from SPIA_RX128_STAT will be sent on the
SPI4 status i/f.
SPIA_RX128_PSS_WE
Misc.
I/Os
FPGA → Core Write enable to the internal Status RAM.
SPIA_RX128_PSS_CLK
FPGA → Core Write clock to the internal Status RAM.
SPI_DATM_A
FPGA → Core Valid only during static data capture. Should be set to ‘0’ in dynamic alignment mode.
‘0’ - Bypass delay line circuit on the clock (ARDCLK) path.
‘1’ - Enables delay line circuit on the ARDCLK path.
SPI_DLYTAP_A[2:0]
FPGA → Core These bits control the effective delay of the delay line circuit on the ARDCLK path. Valid values are from 0-6.
ARLSCLK_F
Core →FPGA Internal clock (ARDCLK/4) used to clock all receive status logic.
Note: For SPIB replace A with B
SPI4 Receive Logic Blocks - Detailed Description
RDI Block
The SPI4 high-speed Receive Data Input (RDI) block contains the high-speed receive logic for the SPI4 block.
Incoming LVDS signals, in SPI4 format, include the 16-bit data bus (RDAT[15:0]), a control bit (RCTL) and a source
75
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
synchronous DDR clock (RDCLK). The 16-bit data bus and control signal are DDR with respect to RDCLK. The
incoming data is deserialized to a 128-bit format and the control information is converted to an 8-bit format. Deserialized data, control signals and a low-speed clock, derived from the high-speed RDCLK, are forwarded to the protocol (RDP) block.
The RDI block alignment logic detects training patterns and perform dynamic alignment of the incoming data. For
low speed incoming data at rates up to 700 Mbits/s, static alignment can be chosen through a programmable control bit. The low speed mode is described in a later section. At speeds above 700 Mb/s (350 MHz), however, it
becomes necessary to use dynamic alignment. Skews of up to ± one clock period can be compensated for by the
dynamic alignment logic, which chooses the best phase of the receive clock, out of 16 possibilities, to center each
data bit for the best possible setup/hold margin. The receive dynamic alignment logic periodically samples the data
to verify that data can be transferred reliably as temperature and voltage levels in the system vary. It then makes
appropriate adjustments as needed.
The output from the RDI block is the low speed 128-bit data bus and 8-bit control bus along with a low speed clock
which is 1/4th the rate of the SPI4 receive clock RDCLK.
The ORSPI4 receive high-speed interface also supports static data capture as shown in Figure 30. As shown in the
figure, the key difference that exists between the clock and data paths is the delay line in the clock path. The highspeed loopback works in both static and dynamic alignment modes. The delay line circuit is a series of buffers with
programmable stages that are controlled through two signals from the FPGA - SPI_DATM_A (SPIA) or
SPI_DATM_B (SPIB) and SPI_DLYTAP_A[2:0] (SPIA) or SPI_DLYTAP_B[2:0] (SPIB). The object of having programmable delay stages is to delay RDCLK appropriately so that both its rising and falling edges hit the data eye
with sufficient setup and hold margin for data capture. Various delay settings allow the data to be centered vs. the
clock for the best setup and hold margin. For details on programming the ORSPI4 receiver in static and dynamic
capture modes, refer to the section “Static Capture Operating Mode”.
Figure 30. Static Data Capture
[A,B]RDAT[15:0]
LVDS
Buffers
0
data
1
Dynamic
clock
SPI4_LOOPBK_HS
[A,B]RDCLK
LVDS
Buffers
0
data
Delay
Line
1
clock
Static
SPI_DLYTAP_[A,B][2:0]
From Transmit Blocks
SPI_DATM_[A,B]
(Controls from
FPGA)
RDP Block
The SPI4 Receive Data Protocol (RDP) block receives data from RDI block and is responsible for decoding the inband control information while preserving wire-speed throughput. It passes both data and control information, such
as link address, SOP, EOP and error, to the Receive DPRAMs.
The RDP block also parses the control words embedded within the incoming data. Using this control information, it
performs the following functions:
• Checks DIP-4 parity
76
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• Monitors for continuous alignment (if more than a programmable number of DIP-4 parity errors exist, there may
be an alignment problem). In the event of DIP-4 parity errors, instructs the status block to send status framing
pattern “11” on the receive SPI4 status bus.
• Removes idle/training words.
• Extracts link address and SOP, EOP and valid packet (no error) signals.
Receive DPRAMs
There are four DPRAMs referred to as banks 0, 1, 2 and 3. Each bank has a 32-bit data interface to the FPGA.
Each DPRAM has its own individual read enable and read clock allowing it to be read by the FPGA application
independently.
Every DPRAM bank is configured by software to operate in one of 32-bit, 64-bit or 128-bit mode. Every DPRAM
bank is also configured to contain 1, 2, 4 or 8 virtual FIFOs. The user determines the number of FIFOs depending
on the number of ports and buffer requirements for the ports as required by a given application. The programming
of a DPRAM bank in 32-bit, 64-bit or 128-bit mode and programming of the number of virtual FIFOs within a
DPRAM bank is done through software as shown in Table 18. Note that in 64-bit mode, DPRAMs 0 and 1 have to
be configured identically. The combined DPRAM pair is referred to as DPRAM “0”. Similarly DPRAM pairs 2 and 3
have to be configured identically. This combined DPRAM pair is referred to as DPRAM “2”. In 128-bit mode, all
DPRAMs have to be configured identically. The combined DPRAM banks are collectively referred to as DPRAM “0”.
The aggregation modes can be used in five possible combinations as shown in Table 16. The size of the embedded
data and control FIFOs for each mode is shown in Table 17. The user accesses a virtual FIFO using the 3-bit FIFO
read address (refer to Table 12, Table 13, and Table 14) from the FPGA. Table 15 shows the indexed partition
based upon the configured DPRAM partitioning and aggregation mode.
In 32-bit operating mode, the user always reads data as four 32-bit word bursts (plus one additional clock cycle to
read the port ID) unless an EOP is received. If an EOP occurs and the ASTOP_ON_EOPj (j=0,1,2,3) or
BSTOP_ON_EOPj is ‘0’, the core will cease transmission of the remaining words in the burst and start transferring
the next set of data. For example, if the EOP happens in the second word of a 4-word burst, the core will not provide the remaining two words. Instead, it will start bursting the next set of data. The exception is when the
ASTOP_ON_EOPj (j=0,1,2,3) or BSTOP_ON_EOPj is asserted. When this signal is ‘1’, the core will pause for 2
clock cycles after an EOP. The byte enables (SPIA_RX32_BE_j) are set to ‘0’ indicating that the read data is not
valid.
Table 15. FIFO Address Based on Programmed Virtual FIFOs
FIFO Address
(from FPGA)
Description
XXX
Ignored when a DPRAM is configured to support only one virtual FIFO
000
Selects FIFO 0 when DPRAM is configured to support 2, 4 or 8 virtual FIFOs
001
Selects FIFO 1 when DPRAM is configured to support 2, 4 or 8 virtual FIFOs
010
Selects FIFO 2 when DPRAM is configured to support 4 or 8 virtual FIFOs
011
Selects FIFO 3 when DPRAM is configured to support 4 or 8 virtual FIFOs
100
Selects FIFO 4 when DPRAM is configured to support 8 virtual FIFOs
101
Selects FIFO 5 when DPRAM is configured to support 8 virtual FIFOs
110
Selects FIFO 6 when DPRAM is configured to support 8 virtual FIFOs
111
Selects FIFO 7 when DPRAM is configured to support 8 virtual FIFOs
77
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 16. Possible Combinations of Aggregation Modes
Mode
Valid
Banks 0 to 3 in 32-bit aggregation mode
Yes
Banks 0, 1 in 64-bit aggregation mode,
Banks 2,3 in 64-bit mode
Yes
Banks 0,1 in 64-bit mode,
Banks 2 & 3 in 32-bit mode
Yes
Banks 0,1 in 32-bit mode,
Banks 2 & 3 in 64-bit mode
Yes
All banks in 128-bit
Yes
Bank 0 in 32-bit mode,
Bank 1 in 64-bit mode or vice-versa
No
Bank 2 in 32-bit mode,
Bank 3 in 64-bit mode or vice-versa
No
Table 17. Memory Size for Each Aggregation Mode and Partitioning
Operating Mode
32-bit
64-bit
128-bit
Number of
Configured
Virtual FIFO
Partitions
DATA FIFO Depth
(in Bytes)
Control FIFO Depth
(in Bytes)
1
2K
512
2
1K
256
4
512
128
8
256
64
1
4K
1K
2
2K
512
4
1K
256
8
512
128
1
8K
2K
2
4K
1K
4
2K
512
8
1K
256
78
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 18. Register Bit Settings for Aggregation Mode and Partition Size
DPRAM Aggregation
Mode
Address 30907 (SPIA),
30A07 (SPIB)
DPRAM 0
(Register Bits 0:1) = 00
01
10
DPRAM 1
(Register Bits 2:3) = 00
01
10
DPRAM 2
(Register Bits 4:5) = 00
01
Virtual FIFO Partition Size
Address 30906 (SPIA),
30A06 (SPIB)
Configuration
Register Bits 0:1 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Register Bits 2:3 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Register Bits 4:5 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
79
Lattice Semiconductor
DPRAM Aggregation
Mode
Address 30907 (SPIA),
30A07 (SPIB)
10
DPRAM 3
(Register Bits 6:7) = 00
01
10
ORCA ORSPI4 Data Sheet
Virtual FIFO Partition Size
Address 30906 (SPIA),
30A06 (SPIB)
Configuration
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Register Bits 6:7 = 00
32-bit data width, partition size 1
01
32-bit data width, partition size 2
10
32-bit data width, partition size 4
11
32-bit data width, partition size 8
00
64-bit data width, partition size 1
01
64-bit data width, partition size 2
10
64-bit data width, partition size 4
11
64-bit data width, partition size 8
00
128-bit data width, partition size 1
01
128-bit data width, partition size 2
10
128-bit data width, partition size 4
11
128-bit data width, partition size 8
Receive Address Mapper
This control block decodes the port address received from the SPI4 RX interface to determine the physical memory
address (to access the DPRAM memories) for that port address. Each port address must be mapped to one of the
virtual FIFOs in the DPRAMs. Each virtual FIFO can be used to buffer data for a single port. Since there is a total
of four DPRAMs, eight virtual FIFOs in each DPRAM provides 32 per-port buffers. The number of per-port buffers
varies according to the operating mode. For example, in 32-bit mode, a total of 32 per-port buffers is possible. In
64-bit mode, a total of 16 per-port buffers is provided. In 128-bit mode, a total of eight per-port buffers is provided.
To decode the physical memory information, this block accesses a user-configured Port Descriptor Memory (PDM)
which is simply a look-up-table. The PDM is an embedded memory within the ORSPI4 core. There is one each for
SPIA and SPIB cores. Since 256 ports can be supported by the device, the PDM has 256 locations. The user
indexes this memory using the 8-bit SPI4 Port ID as the software write address into the embedded memory space
31000 - 310FF. For example, a software write into address 31000 configures the PDM for port ID 0. The software
procedure to configure the PDM is described below:
• User has to select the PDM by writing a ‘1’ into bit 3 of address 30917 (SPIA) or 30A17 (SPIB).
• Subsequent writes to addresses 31000-310FF correspond to entries 0x00-0xFF in the PDM. These may be written in any order.
• Upon completion of the PDM configuration, the PDM select bit (bit 3 of address 30917 or 30A17) must be set to
‘0’.
• The contents of the PDM may also be read back. This is done by first selecting the PDM memory by writing a ‘1’
to bit 3 of address 30917 or 30A17. Reads are then done from addresses 31000-310FF. Upon completion of the
reads, the PDM select bit is set to ‘0’.
To allocate a buffer space to a port, the user has to choose one of the four DPRAM banks (BANK_ID field in the
PDM) and a virtual FIFO (PARTITION_ID) within the chosen DPRAM bank. Each location in the PDM contains the
fields described below for each port address.
80
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Partition Address (PA): This is the least significant 3-bit field [2:0] within a PDM location. This field provides the
virtual FIFO partition address for each port. Each partition is of equal size. There can be a total of 8 virtual FIFO
partitions within each DPRAM bank.
BANK_ID: This occupies bits 4:3 within a PDM location. This 2-bit field is used to select one of the four DPRAM
banks to store the received data. The user initially assigns this information by programming the BANK_ID. Legal
values for the BANK_ID depend on the operating mode. In 32-bit mode, the legal values are 0,1,2 and 3. In 64-bit
mode, the legal values are 0 and 2. In 64-bit mode, the legal value is only 0.
While programming the PDM allocates a buffer for every port (or multiple ports), the buffer sizes themselves are
configured by the user through software register settings for
• DPRAM aggregation mode (Address 30907 for SPIA and 30A07 for SPIB. Refer to Table 18)
• Number of virtual FIFOs in a DPRAM (Address 30906 for SPIA and 30A06 for SPIB. Refer to Table 17).
Figure 31 shows a block diagram of the Port Description Memory.
Figure 31. Receive Address Mapper Block Diagram
Software Write
Port Descriptor
Memory
0
255
BANK_ID
PA
PDM Fields
Virtual Receive Memory FIFOs (Partitions) and Port Mapping
As was the case for the transmit logic, there are up to 32 virtual receive FIFO partitioning, 256 port numbers and
the receive calendar can contain up to 1023 entries. The user must set up the mapping between the FIFO partitions and the port number for each active port. The user must also set up the calendar sequence for polling the
active ports.
The simplest mapping of the read DPRAM partitions, which support a maximum of 32 ports, is to have a 1:1 mapping between the FIFO partition and the port address. The 1023 depth of the calendar allows for uneven bandwidth
allocation across ports where high bandwidth ports can have multiple entries within the calendar table.
The read scheduling logic, however, is designed to support up to 256 ports. Each port (up to 32 ports) can have its
unique buffer. A single port or multiple ports can be assigned to a buffer by configuring the PDM. The user must,
using FPGA logic, assure that data is read from the virtual FIFO using the same port sequencing that is expected
81
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
by the calendar. This ensures that the bandwidth allocated for a given port is maintained and the port’s FIFO is
emptied at the same rate that it is being filled up at the far-end transmitter. For example, if the calendar assumes
that the buffer for port 2 is filled more frequently than the buffer for port 4, then the FPGA logic must read the buffer
(virtual FIFO) for port 2 more frequently than port 4 to ensure that bandwidth requested for port 2 is maintained
across the SPI4 link. The user also has a choice to not use the per-port buffers and treat the DPRAMs as pure
clock-domain crossing FIFOs. This is done by simply configuring each DPRAM in 128-bit mode and setting up the
number of virtual FIFO partitions to “1”.
If the user application supports more than 32 ports, multiple ports need to share a buffer or external memory can
be used. The ORSPI4 core provides a QDR-II SRAM Memory Controller for additional buffering. The QDR-II SRAM
memory was chosen owing to the wire-speed throughput that can be realized through dedicated write and read
ports. In this case, the user must implement control logic to sequence external memory reads from the selected virtual FIFOs and the FIFOs are used only for crossing between clock domains. In many cases a second QDR-II
memory interface is needed, thus a soft IP version of the core is available.
Suppose there are 6 ports, and each port is mapped to a single buffer or virtual FIFO:
• The first step is to decide the aggregation mode and FIFO size depending on the bandwidth needed by the
port(s). This is shown in Table 19.
• The second step is to configure the DPRAMs through software register settings shown in Table 20. Note that
DPRAM banks 2 and 3 are configured identically since they are configured to be a 64-bit interface.
• The last step is to configure the PDM using the procedure described in the Address Mapper section. The contents of the PDM are shown in Table 21.
Table 19. DPRAM Configuration Example
DPRAM bank
Aggregation
Mode
Number of
Virtual FIFOs
Virtual FIFO
Size (bytes)
0
32-bit
2
1K
1
32-bit
2
1K
2,3
64-bit
2
2K
Table 20. DPRAM Software Register Settings Example
DPRAM Bank
Aggregation Mode
Number of Virtual FIFOs
0
RX_DPRAM_0_AGGR_MODE = 00
RX_DPRAM_0_NUMFIFO = 01
1
RX_DPRAM_1_AGGR_MODE = 00
RX_DPRAM_0_NUMFIFO = 01
2
RX_DPRAM_2_AGGR_MODE = 01
RX_DPRAM_0_NUMFIFO = 01
3
RX_DPRAM_3_AGGR_MODE = 01
RX_DPRAM_0_NUMFIFO = 01
Table 21. PDM Contents Example
Port ID
Bank ID
Partition Address
0x00
00
000
0x01
0x02
001
000
01
0x03
0x04
001
000
10
0x05
001
82
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Port Status Sequencer (PSS) Logic
In addition to formatting received data and sending it to the FPGA logic, the receive block also sends status information to the SPI4 status interface. The Port Status Sequencer (PSS) block is responsible for providing port status
to the SPI4 Receive Status Protocol block (RSP) according to a pre-configured calendar sequence. Status is
derived from the fill-levels of the DPRAM FIFOs and/or from the FPGA status interface.
When status is provided by FPGA logic, the FPGA application writes status information to a 256 word PSS memory
in a random fashion. The PSS memory is addressed by an 8-bit port ID (SPIA_RX[32, 64 or 128]_PORT_ID[7:0]).
The data written to the memory is the SPIA_RX[32, 64 or 128]_STAT and an external status enable (SPIA_RX[32,
64 or 128]_EXT_STAT_EN) for the selected port. A write is initiated by the FPGA by asserting SPIA_RX[32, 64 or
128]_PSS_WE high and providing a clock on SPIA_RX[32, 64 or 128]_PSS_CLK.
The PSS block contains a main and shadow calendar table. Only one of these calendars is in use at a given time.
Once a calendar is provisioned with a certain sequence, it is not desirable to change the sequence in that calendar
during active device operation. To enable hitless switching of calendars, a shadow calendar is provided. The
RX_CAL_SEL control bit (Address 30916 for SPIA and 30A16 for SPIB) in the memory map controls the choice.
The choice to select a shadow calendar enables hitless bandwidth reprovisioning on the SPI4 link. While one calendar is being used (e.g. main), the other calendar (shadow) can be configured independently with the desired
sequence. For more details, refer to the section on calendar programming.
The Port Status Sequencer (PSS) block polls for port status. It uses the calendar address to decide which port
should be polled for status. The status received from the polled port is then formatted into one of the SPI4 specified
status encodings (STARVING, HUNGRY, SATISFIED). For every port, the status is polled either from the internal
DPRAM FIFO flags or the user-provided status bits depending on the external status enable bit. When the external
status enable bit for a given port is set to ‘1’, it indicates that the status encoding for that port on the SPI4 bus is
decided by the external user. When set to ‘0’, the SPI4 status encoding is dictated by the status flags from the internal DPRAM banks.
The status bits sent to RSP from the PSS block is determined according to the truth table shown in Table 22. The
first four columns are the bits of information looked up for the current port ID, and the last column is the status that
is sent for that selected port to the RSP.
Table 22. Port Status Encoding
Virtual FIFO
fill ≥ 3 ⁄ 4
Virtual FIFO
fill ≥ 1 ⁄ 2
SPI[A,B]_k_EX SPI[A,B]_k_ST
T_STAT_EN
AT[1:0]
SPI4 Status
Encoding
1
x
x
x
SATISFIED
0
x
1
“00”
STARVING
0
x
1
“01”
HUNGRY
0
x
1
“10”
SATISFIED
0
0
0
x
STARVING
0
1
0
x
HUNGRY
0
x
1
“11”
Disabled link
k = RX32 or RX64 or RX128
SPI4 Status Logic Blocks (RSP, RSO)
The SPI4 Receive Status Protocol (RSP) is responsible for FIFO status encoding, calendar management, status
pattern encoding (sync bits “11”), DIP-2 calculation and optional calendar selection word encoding (as proposed in
Appendix G of SPI4-02.0 specification).
The RSP block performs the following functions:
• Status frame creation
83
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• Decrements CALENDAR_M and CALENDAR_LEN counters
• DIP-2 calculation
The core of the RSP block is the state machine shown in Figure 32. The state machine is in the DISABLE state
upon reset. Setting the register bit RX_STATUS_DIS to ‘1’ or misalignment on the SPI4 RX data interface will
cause the state machine to reset to DISABLE state and start sending “11” on the SPI4 status bus. When the
received data is aligned and none of the other conditions apply, the state machine transfers to the SYNC state. The
SYNC state exists for only one clock cycle. In this state the calendar management counters are initialized with the
configured values from CALENDAR_LEN_RX and CALENDAR_M_RX. The next state is the CAL state if
CALENDAR_SW_EN bit is set to ‘0’ or the SWITCH state if CALENDAR_SW_EN bit is set to ‘1’. In the CAL state,
the counter for CALENDAR_LEN_RX is decremented on each cycle and the counter for CALENDAR_M_RX is
decremented at the end of each calendar sequence. If the CALENDAR_M_RX counter has not reached zero, the
CALENDAR_LEN_RX counter is reset. On each clock cycle, the status is sent out on the RLSTAT bus. The DIP-2
code is calculated in each clock cycle using the method (diagonal XOR) described in the OIF-SPI4-02.0 standard.
Once both calendar management counters have expired, the calendar management is complete and moves to the
DIP-2 state. The current DIP-2 value coming out of the CAL state is XOR’ed with “11”, the final 2-bit DIP-2 word is
sent out on the RLSTAT bus and the SYNC state is entered. If the RX_CAL_SW_EN bit is enabled (set to ‘1’) then
the RSP will insert an extra word into the FIFO status frame
Figure 32. RSP State Machine
DESKEWED
RESET
RX_CALENDAR_SW_EN = ‘1’
DISABLE
SYNC
RESET
RX_CALENDAR_SW_EN= “0”
RESET
SWITCH
RESET
CAL
DIP-2
RX_CAL_LEN_MAIN/SHD,
RX_CAL_M_MAIN/SHD
CAL_DONE
The SPI4 Receive Status Output (RSO) block contains the low speed LVTTL buffers and LVDS output buffers necessary for the output stage of receive status logic. The option to choose between LVTTL or LVDS outputs is
selected by the software register bit SPI4_STATUS_IO_SEL.
Calendar Programming
On a SPI4 link, FIFO status information is sent periodically over the status link (RSTAT bus on the SPI4 interface)
from the device that receives data. The calendar is a means by which the SPI4 link conveys information to a data
source about the availability of buffer space in the FIFOs that receive data from that data source. A calendar is a
sequence of status messages that
• Provides information on the buffer space for a port or traffic flow
• Allows user to allocate bandwidth for a port or flow depending on the overall traffic characteristics.
84
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The SPI4 status channel operates at 1/8th the SPI4 data rate which is reasonable because data is always sent in
16-byte bursts. Thus the fastest status update can be expected once in every 8 data clock cycles. For a given port,
the frequency with which its status is reported to the far-end transmitter source depends on the allocated bandwidth for the port. It is imperative that the transmitter and receiver devices are programmed with identical calendar
sequences. The following examples illustrate this:
Suppose a channelized STS-48 has three STS-12 ports and four STS-3 ports (channels), each STS-12 port
should have four times the bandwidth of an STS-3 port and 12 times the bandwidth of an STS-1 port within a single
calendar cycle. The first step is to map each port to an 8-bit port ID (address) as shown in Table 23
Table 23. Port ID Mapping
Port
Bandwidth
8-Bit Port ID
(Port Address)
A1
STS-12
0x00
A2
STS-12
0x01
A3
STS-12
0x02
B1
STS-3
0x03
B2
STS-3
0x04
B3
STS-3
0x05
B4
STS-3
0x06
The calendar sequence is as follows:
A1, A2, A3, B1, A1, A2, A3, B2, A1, A2, A3, B3, A1, A2, A3, B4
The number of calendar entries is thus 16. This calendar sequence is programmed in the receive calendar memory
as follows:
• This example uses the main calendar. The calendar memory is selected by setting the RX_CAL_MEM_SEL bit
(address 30917 in SPIA and address 30A17 in SPIB) to ‘1’.
• Writes are done to addresses 0x31000 - 0x3100F. This will correspond to entries 0x00 - 0x0F in the calendar
memory. This is shown in Table 24. Note that the main calendar memory has 1023 locations and can be programmed through addresses 0x31000 - 0x313FE. The shadow calendar memory also has 1023 locations and
can be programmed through addresses 0x31400 - 0x317FE.
• After programming the calendar memory, the RX_CAL_MEM_SET bit is set to ‘0’.
• The calendar length register RX_CAL_LEN_MAIN is set to 16 (address 30901 and 30902 in SPIA, 30A01 and
30A02 in SPIB).
• RX_CAL_M_MAIN (address 30900 in SPIA and 30A00 in SPIB) is set to the number of times the calendar
sequence needs to be repeated between framing patterns.
• The shadow calendar can be programmed in the same identical fashion as the main calendar using the steps
described above.
To enable hitless switching between main and shadow calendar memories, the RX_CAL_SW_EN bit (address
30916 in SPIA and 30A16 in SPIB) should be set to ‘1’. This will cause the receive status logic to insert the calendar select word after the framing pattern. The RX_CAL_SEL bit then selects main (bit set to ‘0’) or shadow (bit set
to ‘1’) calendar to be sent on the outgoing status frame. It is important to enable this feature in the transmit device
on the other end of the SPI4 link by setting TX_CAL_SW_EN bit (address 30916 in SPIA and 30A16 in SPIB) to ‘1’.
This will cause the far-end transmit status logic to detect the calendar select word after the framing pattern.
85
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 24. Receive Calendar Memory Contents
RX Calendar Memory
Address
RX Calendar Memory
Contents (Port ID)
Port Number
0x00
0x00
A1
0x01
0x01
A2
0x02
0x02
A3
0x03
0x03
B1
0x04
0x00
A1
0x05
0x01
A2
0x06
0x02
A3
0x07
0x04
B2
0x08
0x00
A1
0x09
0x01
A2
0x0a
0x02
A3
0x0b
0x05
B3
0x0c
0x00
A1
0x0d
0x01
A2
0x0e
0x02
A3
0x0f
0x06
B4
SPI4 Receive Software Interface
The SPI4 receive interface is configurable through a System Bus interface incorporated within the embedded core.
The user can gain access to the System Bus either through the integrated MPI interface, or through FPGA
resources using the System Bus Master/Slave interface. Please refer to the appropriate Lattice Semiconductor
data sheets and application notes for more information regarding these interfaces.
The receive SPI4 interface logic incorporates many configurable control registers, as well as interrupt and status
registers to monitor SPI4 performance. Table 47 provides a memory map and description of each register within
the Transmit portion of the SPI4 embedded core.
Timing Diagrams
As described earlier, there are three main modes of operation - 32-bit mode, 64-bit mode and 128-bit mode. The
timing diagrams described below provide a clear picture of each mode of operation.
For clarity, all timing diagrams are shown for SPIA core. They are identical for the SPIB core. The timing diagram for
a 32-bit read access is shown in Figure 33. A 3-bit read address SPIA_RX32_ADDR_j where j=0,1,2,3 (which is
actually the virtual FIFO partition address) is sent from the FPGA during clock T1. This FIFO address should match
the virtual FIFO address that the user configured for a given port in the port descriptor memory (PDM). In other
words, the virtual FIFO addressed by this 3-bit address contains the data for the port that was mapped to this buffer
space in the PDM. The read control logic uses this address to generate the internal physical address.
As shown in Figure 33, the user sends SPIA_RX32_RD_j in clock cycle T1. There is a 2-clock latency from the time
the read enable SPIA_RX32_RD_j is asserted to the time read data is presented to the user. Thus, in clock cycle
T3 following SPIA_RX32_RD_j, the embedded core provides the 32-bit data and control. The byte enables
SPIA_RX32_BE_j[3:0] indicate which bytes within the 32-bit word are valid. If the current port ID is different from
the previous port ID, then the first data read from the virtual FIFO is the port ID as shown in clock cycle T3. The
SPIA_RX32_CTL_j signal is set to ‘1’ during T3 indicating that read data contains the port ID. The byte enables are
set to “0001” indicating that the least significant byte of the 32-bit word contains the port ID. If data is continued to
be read for the same port, then no port ID is presented to the user as this is redundant. The ASTOP_ON_EOPj is
86
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
set to ‘0’ which means that the core will terminate a 4-word burst when EOP occurs and start transmission of the
next set of data. Note that a new FIFO address ‘p’ is provided during the last 4-word burst of address ‘n’. This
absorbs the 2-clock latency from the time a new address is presented to the DPRAM and the time read data is presented to the user.
As shown in Figure 34, when the ASTOP_ON_EOPj is asserted, 2 idle clock cycles are inserted after an EOP
occurs. During these idle cycles, the byte enable bits are set to all ‘0’s indicating that the read data is not valid. After
the idle cycles, the core continues to provide read data. The ASTOP_ON_EOPj signal can be asserted anytime
and held high for any length of time during a read data transfer.
At any time, the user can poll for the status of a FIFO within a DPRAM bank by providing just the read address
SPIA_RX32_ADDR_j without providing the read enable. Note that the timing diagram shown in Figure 33 and Figure 34 indicate a FIFO size of 16 locations. Each location contains four 32-bit data words. Thus when
SPIA_RX32_FIFO_EMPTY_j flag is ‘1’ and RX_DPRAM_EMPTY_TYPE_SELA[j] software register bit in address
30920 is set to ‘1’, it implies that the FIFO has three 4-word data left (1/4 * 16 locations - 1).
As shown in Figure 35, the ERR signal indicates that the corresponding packet is in error. The ERR signal can be
asserted by the ORSPI4 core several clock cycles before EOP and remains asserted until EOP occurs. However,
the user is always required to use the ERR signal in conjunction with the EOP signal. Irrespective of the ERR signal
being asserted, the core always transmits the entire packet. Thus, it is relevant for the user application to sample
the ERR signal simultaneously with EOP. Users should also be aware that this is in asymmetry with the transmit
SPI4 core’s behavior. In the transmit direction, user always asserts ERR signal during an EOP only. Thus, if any
loopback is performed from the receive SPI4 (A or B) to the transmit SPI4 (A or B), the user should ensure that the
received ERR signal is not wired directly to the corresponding transmit ERR signal, but follows the transmit protocol
of providing an ERR signal only in the same clock cycle as an EOP and not earlier.
87
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 33. Read Timing with ASTOP_ON_EOP Deasserted - 32-Bit Mode
J=0-3
FIFO size = 16 locations.
1
2
3
4
5
6
SPIA_RX32_
CLK_j
….
….
FIFO address changes
SPIA_RX32_RD_j
during last
SPIA_RX32_ADDR_j
4-word burst of address n
p
n
SPIA_RX32_FIFO_ EMPTY_j
Empty flag is low for FIFO
address p
Addressed by n,
FIFO has three 4-word
SPIA_RX32_DATA_j[31:0]
2 cycles after read enable
Port ID
na
bursts of data
nb
nc
nd
….
nb
nc
nd
1111
1111
SPIA_RX32_BE_jj[3:0]
0001
1111
1111
1111
1111
….
SPIA_RX32_ERR_j
SPIA_RX32_CTL_j
SPIA_RX32_SOP_j
SPIA_RX32_EOP_j
ASTOP_ON_EOPj
na = word 0 from pointer location in FIFO address n
nb = word 1
nc = word 2
nd = word 3
pa = word 0 from pointer location in address p
88
pa
First word of
address p
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 34. Read Timing with ASTOP_ON_EOP Asserted - 32-Bit Mode
J=0-3
SPIA_RX32_
CLK_j
FIFO size = 16 locations.
1
2
3
4
5
6
….
….
SPIA_RX32_RD_j
SPIA_RX32_ADDR_j
n
SPIA_RX32_FIFO_
EMPTY_j
Idle cycles inserted
2 cycles after read enable
SPIA_RX32_DATA_j[31:0]
Port ID
na
nb
nc
nd
hf
hf
hf
hf
na
nb
SPIA_RX32_CTL_j
SPIA_RX32_SOP_j
SPIA_RX32_EOP_j
SPIA_RX32_ERR_j
ASTOP_ON_EOPj
SPIA_RX32_BE_j[3:0]
h1
na = word 0 from pointer location in FIFO address n
nb = word 1
nc = word 2
nd = word 3
89
h0
h0
hf
hf
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 35. Read Timing with ERR Signal Asserted - 32-Bit Mode
J=0-3
SPIA_RX32_
CLK_j
FIFO size = 16 locations.
1
2
3
4
5
6
….
….
SPIA_RX32_RD_j
SPIA_RX32_ADDR_j
n
SPIA_RX32_FIFO_
EMPTY_j
2 cycles after read enable
SPIA_RX32_DATA_j[31:0]
Port ID
na
nb
nc
nd
h1
hf
hf
hf
hf
na
nb
nc
nd
SPIA_RX32_CTL_j
SPIA_RX32_SOP_j
SPIA_RX32_EOP_j
SPIA_RX32_ERR_j
ASTOP_ON_EOPj
SPIA_RX32_BE_j[3:0]
h8
hf
hf
hf
na = word 0 from pointer location in FIFO address n
nb = word 1
nc = word 2
nd = word 3
In the 64-bit data aggregation mode, DPRAMs 0 and 1 are used as a single memory. Similarly, DPRAMs 2 and 3
are combined into a single memory. The timing diagrams for the 64-bit aggregation mode are shown in Figure 36,
Figure 37 and Figure 38. As shown in the timing diagrams, read data is always presented to the user in 2 clock
cycles of 64-bit data each (plus one additional clock cycle for port ID). The exception is during an EOP. If EOP
occurs during the first of the two-word data burst, the core terminates the burst and starts to present the next set of
data. As shown in Figure 36, there is a two-clock cycle latency between the time read enable is asserted by the
user and the time data is read from a virtual FIFO. In clock cycle T1, the read enable signal SPIA_RX64_RD_j is
asserted along with the virtual FIFO (or buffer) address SPIA_RX64_ADDR_j. In clock cycle T3, port ID is presented followed by two data words in clock cycles T4 and T5. The port ID is always present on the least significant
byte. This is indicated by the byte enable bits set to “00000001”. As shown in Figure 36, FIFO address is changed
to ‘p’ during the last two-word burst from address ‘n’. This is done to absorb the two-clock cycle latency between
read address and data.
As shown in Figure 37, when the ASTOP_ON_EOPj is asserted, two idle clock cycles are inserted after an EOP
occurs. During these idle cycles, the byte enable bits are set to all ‘0’s indicating that the read data is not valid. After
90
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
the idle cycles, the core continues to provide read data. The ASTOP_ON_EOPj signal can be asserted anytime
and held high for any length of time during a read data transfer.
At any time, the user can poll for the status of a FIFO within a DPRAM bank by providing just the read address
SPIA_RX64_ADDR_j without providing the read enable. Note that the timing diagram shown in Figure 36, Figure
37 and Figure 38 indicate a FIFO size of 32 locations. Each location contains two 64-bit data words. Thus when
SPIA_RX64_FIFO_EMPTY_j flag is ‘1’ and RX_DPRAM_EMPTY_TYPE_SELA[j] software register bit in address
30920 is set to ‘1’, it implies that the FIFO has 7 two-word data left (1/4 * 32 locations - 1).
As shown in Figure 38, the ERR signal indicates that the corresponding packet is in error. The ERR signal can be
asserted by the ORSPI4 core several clock cycles before EOP and remains asserted until the clock cycle when
EOP is asserted. However, the user is always required to use the ERR signal in conjunction with the EOP signal.
Irrespective of the ERR signal being asserted, the core always transmits the entire packet. Thus, it is relevant for
the user application to sample the ERR signal simultaneously with EOP. Users should also be aware that this is in
asymmetry with the transmit SPI4 core’s behavior. In the transmit direction, user always asserts ERR signal during
an EOP only. Thus, if any loopback is performed from the receive SPI4 (A or B) to the transmit SPI4 (A or B), the
user should ensure that the received ERR signal is not wired directly to the corresponding transmit ERR signal, but
follows the transmit protocol of providing an ERR signal only in the same clock cycle as an EOP and not earlier.
Figure 36. Read Timing with ASTOP_ON_EOP Deasserted - 64-Bit Mode
j=0,1
FIFO size = 32
SPIA_RX64_CLK_j
1
2
3
4
5
6
….
….
SPIA_RX64_RD_j
Address changed to
partition/FIFO p during
last 2-word burst in
address n
SPIA_RX64_ADDR_j
p
n
FIFO empty
low
for address p
SPIA_RX64_FIFO_EMPTY_j
Indicates FIFO has seven
2-word bursts
SPIA_RX64_DATA_j[63:0]
Port ID
na
….
nb
na
nb
Port ID
SPIA_RX64_BE_j[7:0]
h01
hff
….
hff
SPIA_RX64_CTL_j
SPIA_RX64_SOP_j
SPIA_RX64_EOP_j
SPIA_RX64_ERR_j
ASTOP_ON_EOPj
91
hff
hff
h01
pa
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 37. Read Timing with ASTOP_ON_EOP Asserted - 64-Bit Mode
FIFO size = 32 locations.
j = 0,1
SPIA_RX64_CLK_j
1
2
3
4
5
6
….
….
SPIA_RX64_RD_j
SPIA_RX64_ADDR_j
n
SPIA_RX64_FIFO_EMPTY_j
2 cycles after read
Idle cycles inserted
enable
SPIA_RX64_DATA_j[63:0]
Port ID
na
nb
na
nb
na
nb
SPIA_RX64_CTL_j
SPIA_RX64_SOP_j
SPIA_RX64_EOP_j
SPIA_RX64_ERR_j
ASTOP_ON_EOPj
SPIA_RX64_BE_j[7:0]
h01
hff
hff
hff
na = word 0 from pointer location in FIFO address n
nb = word 1
92
hff
h00
h00
hff
hff
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 38. Read Timing with ERR Asserted - 64-Bit Mode
SPIA_RX64_CLK_j
FIFO size = 32 locations.
j = 0,1
1
2
3
4
5
6
….
….
SPIA_RX64_RD_j
SPIA_RX64_ADDR_j
n
SPIA_RX64_FIFO_EMPTY_j
2 cycles after read
enable
SPIA_RX64_DATA_j[63:0]
Port ID
na
nb
na
nb
na
nb
na
nb
SPIA_RX64_CTL_j
SPIA_RX64_SOP_j
SPIA_RX64_EOP_j
SPIA_RX64_ERR_j
ASTOP_ON_EOPj
SPIA_RX64_BE_j[7:0]
h01
hff
na = word 0 from pointer location in
hff
hff
hff
hff
hff
hff
hff
FIFO address n
nb = word 1
In the 128-bit data aggregation mode, DPRAMs 0,1,2 and 3 are used as a single contiguous memory. All DPRAMs
must be configured identically by software. In 128-bit aggregation mode, a maximum of 8 per-port buffers are possible. One significant difference between the 128-bit mode and the 32-bit and 64-bit modes is that the port ID is
presented to the user on a separate bus (SPIA_RX128_PORTID[7:0]). Thus the SPIA_RX128_CTL signal has no
relevance to the user and can be ignored. Read data is presented as a 128-bit word every clock cycle. As shown in
Figure 39, read enable SPIA_RX128_RD and address SPIA_RX128_ADDR are presented in clock cycle T1. In T3
read data is available to the user after 2 clock cycles of latency. The FIFO address is changed to ‘p’ during the second last word of address ‘n’ such that the 2 clock cycles of latency between address and data can be absorbed.
As shown in Figure 40, when the ASTOP_ON_EOP is asserted, two idle clock cycles are inserted after an EOP
occurs. During these idle cycles, the byte enable bits are set to all ‘0s indicating that the read data is not valid. After
the idle cycles, the core continues to provide read data. The ASTOP_ON_EOP signal can be asserted anytime and
held high for any length of time during a read data transfer.
At any time, the user can poll for the status of a FIFO within a DPRAM bank by providing just the read address
SPIA_RX128_ADDR without providing the read enable. Note that the timing diagram shown in Figure 39, Figure 40
and Figure 41 indicate a FIFO size of 64 locations. Each location contains a 128-bit word. Thus when
93
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPIA_RX128_FIFO_EMPTY flag is ‘1’ and RX_DPRAM_EMPTY_TYPE_SELA[0:3] software register bits in
address 30920 are set to ‘1’, it implies that the FIFO has 15 128-bit words left (1/4 * 64 locations - 1).
As shown in Figure 41, the ERR signal indicates that the corresponding packet is in error. The ERR signal can be
asserted by the ORSPI4 core several clock cycles before EOP and remains asserted until the clock cycle when
EOP is asserted. However, the user is always required to use the ERR signal in conjunction with the EOP signal.
Irrespective of the ERR signal being asserted, the core always transmits the entire packet. Thus, it is relevant for
the user application to sample the ERR signal simultaneously with EOP. Users should also be aware that this is in
asymmetry with the transmit SPI4 core’s behavior. In the transmit direction, user always asserts ERR signal during
an EOP only. Thus, if any loopback is performed from the receive SPI4 (A or B) to the transmit SPI4 (A or B), the
user should ensure that the received ERR signal is not wired directly to the corresponding transmit ERR signal, but
follows the transmit protocol of providing an ERR signal only in the same clock cycle as an EOP and not earlier.
Figure 39. Read Timing with ASTOP_ON_EOP Deasserted - 128-Bit Aggregation Mode
FIFO size = 64
SPIA_RX128_CLK
1
2
3
4
5
6
….
SPIA_RX128_RD
Address changed
when penultimate
word is read from FIFO n
SPIA_RX128_ADDR
p
n
2 cycles after
SPIA_RX128_DATA
FIFO empty
for address p
Indicates
FIFO has 15
words left
SPIA_RX128_EMPTY
Data read 2 cycles after
Address changed to p
read enable
D0
D1
….
D2
D62
D63
P0
SPIA_RX128_PORTID
Port ID
Port ID
SPIA_RX128_BE
hffff
….
hffff
SPIA_RX128_SOP
SPIA_RX128_EOP
SPIA_RX128_ERR
ASTOP_ON_EOP
94
hffff
hffff
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 40. Read Timing with ASTOP_ON_EOP Asserted - 128-Bit Mode
FIFO size = 64 locations.
SPIA_RX128_CLK
1
2
3
4
5
6
….
….
SPIA_RX128_RD
SPIA_RX128_ADDR
n
SPIA_RX128_FIFO_EMPTY
2 cycles after read
Idle cycles inserted
enable
SPIA_RX128_DATA
D0
D1
D2
D3
D4
hffff
hffff
hffff
hffff
hffff
D0
D1
SPIA_RX128_SOP
SPIA_RX128_EOP
SPIA_RX128_ERR
ASTOP_ON_EOP
SPIA_RX128_BE
95
h0000
h0000
hffff
hffff
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 41. Read Timing with ERR Asserted - 128-Bit Mode
FIFO size = 64 locations.
SPIA_RX128_CLK
1
2
3
4
5
6
….
….
SPIA_RX128_RD
SPIA_RX128_ADDR
n
SPIA_RX128_FIFO_EMPTY
2 cycles after read
enable
SPIA_RX128_DATA
D0
D1
D2
D3
D4
D0
hffff
hffff
hffff
hffff
hffff
D1
D2
D3
SPIA_RX128_SOP
SPIA_RX128_EOP
SPIA_RX128_ERR
ASTOP_ON_EOP
SPIA_RX128_BE
hffff
hffff
hffff
hffff
Special Operating Modes
Static Capture Mode
The ORSPI4 receiver supports both dynamic and static capture of data at the high-speed SPI4 interface. All the
operating modes (32-bit, 64-bit and 128-bit) are independent of the type of data capture. They can operate in either
static or dynamic capture mode. The choice of static vs. dynamic alignment depends on the SPI4 data rates. The
static data capture is valid in the frequency range 400-700 Mbps. It also reduces the power dissipation of the
device. The following control signals are relevant to enable static data capture:
SPI4_LOW_SPEED_DATA_SEL: This is a software register control bit (Address 30915 in SPIA and 30A15 in
SPIB). When set to ‘0’, the dynamic alignment circuit is held in a reset state and the static alignment mode is
enabled.
SPI_DATM_A or SPI_DATM_B: This is a control signal from the FPGA. When set to ‘1’, this gives the user the
option to skew the RDCLK with respect to the SPI4 data bus RDAT on the bus by choosing delay taps through the
control bits SPI_DLYTAP_A[2:0] of SPI_DLYTAP_B[2:0]. When set to ‘0’, RDCLK is automatically centered on-chip
to the input data bus RDAT.
Quarter-Rate Mode
96
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The ORSPI4 SPI4 RX interface is also designed to operate at data rates much lower than 622 Mbps. Even though
the OIF standard specifies a minimum data rate of 622 Mbits/s, the lower data rates are provided for users who
wish to use the SPI4 link for applications supporting <10 Gbits/s aggregate bandwidth (STS-48, STS-3, Gb Ethernet, etc.). To enable this low speed mode, user should set the software register bit SPI4_QUARTER_RATE
(Address 30915 in SPIA and 30A15 in SPIB) to ‘1’. This supports data rates in the range of 100 - 200 Mbps. This bit
takes precedence over SPI4_LOW_SPEED_DATA_SEL, since setting this bit to ‘1’ will automatically reset the
dynamic alignment block irrespective of SPI4_LOW_SPEED_DATA_SEL register bit setting.
SPI4 Loopback Modes
There are three forms of loopback supported directly by the ORSPI4 SPI4 blocks.
• High-speed near end loopback: This involves looping back data from the high-speed transmit block TDO serial
output to the high-speed receive block RDI serial input (See Fig. 42). All of the logic excluding the LVDS buffers
is included in the loopback path. The status path is looped from the output of the RSP block to the TSP block.
This mode is enabled by setting the control register bit SPI4_LOOPBK_HS to 1.
• Far end loopback: This involves looping back the 128-bit output data from the RDI block to the 128-bit input of
the TDO block (See Fig. 43). Data is received at the high-speed SPI4 RX interface and transmitted at the SPI4
TX interface. The status path is looped from TSTAT to RSTAT. This mode is enabled by setting control register bit
SPI4_LOOPBK_FE to “1”.
• Low-speed near end loopback which excludes the high-speed blocks from the loopback path: This involves
sourcing data from the FPGA, looping back the output of TDP block into RDP block and observing data at the
core-FPGA boundary (See Fig. 44). The status path is looped from the RSP block to the TSP block. This form of
loopback will require an additional low-speed clock source (TSTCLK) and is enabled by setting control register
bit SPI4_LOOPBK_LS to “1” and enabling SPI4_LOOPBK_HS.
Figure 42. High-Speed Near End Loopback
SPI4 I/F
TX
Embedded Core
TDAT[15:0]
DPRAMs
+ associated
logic
TDP
128-bit
data+ctl
TDO
TCTL
TDCLK
FPGA
TREFCLK
TSTAT[1:0]
Port write
Sequencer
clk
TSP
RX
TSCLK
128-bit
data+ctl
DPRAMs
+ associated
logic
RDP
clk
RDAT[15:0]
RDI
RCTL
RDCLK
RSTAT[1:0]
Port Status
Sequencer
RSP
97
clk
RSCLK
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 43. Far End Loopback
SPI4 I/F
TX
FPGA
128-bit
data+ctl
Embedded Core
DPRAMs
+ associated
logic
TDAT[15:0]
TDO
TDP
TCTL
TDCLK
TREFCLK
TSTAT[1:0]
Port write
Sequencer
TSI
TSP
RX
128-bit
data+ctl
DPRAMs
+ associated
logic
RDP
clk
TSCLK
RDAT[15:0]
RDI
RCTL
RDCLK
RSTAT[1:0]
Port Status
Sequencer
RSP
clk
RSO
RSCLK
Far End Loopback Setup
The following three step procedure will set up the ORSPI4 into far end loopback mode:
1. Set up the external connections to the ORSPI4 such that the RDAT, RDCLK, and RCTL SPI-4 ports are all
receiving signals. (If in quarter rate mode, the FPGA-sourced clock reference signal SPI[A,B]_TREFCLK_X8
must be supplied at twice the rate as the applied [A,B]RDCLK SPI-4 port clock.
2. Configure the appropriate ORSPI4 register as shown in Table 25. Note that either choice of LVTTL or LVDS for
status buffer is acceptable for far end loopback, although the choice will affect the status port timing. Also note
that bits 6 and 7 (TX_FORCE_DIP4_ERR and RX_FORCE_DIP2_ERR) do not affect the operation of far end
loopback.
3. Reset the appropriate SPI4 block with control signal FPGA_RESET_S4[A,B].
98
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 25. Far End Loopback Register Values
Absolute
Address
(Hex)
Bit
[0]
[1]
Description
When set to ‘1’, enables data rates of 100 - 200
SPI4_QUARTER_RATE Mbps. The PLLs in the transmit and receive SPI4
high-speed blocks are bypassed in this mode.
SPI4_LOOPBK_FE
Static Dynamic
Far End Far End
1
0
0
This control enables far-end loopback when it is
set to 1. Far end loopback sends RDAT inputs
back to TDAT outputs, sends RDCLK back to
TDCLK, sends TSTAT back to RSTAT outputs,
and ATSCLK back to RSCLK.
1
1
1
1
1
0
[2]
SPI4_LOW_SPEED_
DATA_SEL
Forces low speed data rates of 400-622 Mbits/s.
The transmit PLL is still used to synthesize the
SPI4 transmit clock TDCLK. However, the
dynamic alignment block in the receive side is
bypassed. No training sequences are used in low
speed mode.
[3]
SPI4_STATUS_IO_SEL
‘0’ - Selects LVTTL I/O for SPI4 status.
‘1’ - Selects LVDS I/Os for SPI4 status (Full-rate
LVDS status I/Os specified by OIF SPI4.0 is not
supported).
0 or 1
0 or 1
0 or 1
[4]
SPI4_LOOPBK_HS
Enables loops from high-speed SPI4 TDAT outputs to RDAT inputs and RSTAT to TSTAT status
inputs just before I/O.
0
0
0
SPI4_LOOPBK_LS
Enables near-end parallel loopback from TDP to
RDP blocks and RSP to TSP blocks bypassing
the high-speed SPI4 interface logic blocks. Must
enable SPI4_LOOPBK_HS for this to work.
0
0
0
[6] TX_FORCE_DIP4_ERR
X
X
X
[7] RX_FORCE_DIP2_ERR
X
X
X
30915
(SPI A)
30A15
(SPI B)
Name
Quarter
Rate Far
End
[5]
99
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 44. Low-Speed Near End Loopback (Excluding High-Speed Blocks)
SPI4 I/F
TX
128-bit
data+ctl
Embedded Core
DPRAMs
+ associated
logic
TDP
TDAT[15:0]
TDO
b
TCTL
TDCLK
FPGA
TREFCLK
TSTAT[1:0]
Port write
Sequencer
TSP
clk
RX
TSCLK
128-bit
data+ctl
DPRAMs
+ associated
logic
RDP
Port Status
Sequencer
RSP
clk
RDAT[15:0]
RDI
RCTL
RDCLK
RSTAT[1:0]
clk
RSCLK
SPI4 Error Insertion Capabilities
The SPI4 blocks support the following error insertion options for testing:
• DIP-4 odd parity is calculated over data and control words on the TX side. Under software control, DIP-4 errors
can be forced by inverting the DIP-4 parity bits. This is done by setting TX_FORCE_DIP4_ERR bit to ‘1’ (Address
30915 in SPIA and 30A15 in SPIB).
• DIP-2 odd parity is calculated over the status frames on the RX side. Under software control, DIP-2 errors can be
forced by inverting the DIP-2 parity bits. This feature can be enabled by setting RX_FORCE_DIP2_ERR to ‘1’
(Address 30915 in SPIA and 30A15 in SPIB).
SPI4 Status Reporting Capabilities
The following status information will be reported through status registers. Most status registers also cause interrupts. The interrupts can be masked by the corresponding interrupt enables.
• DIP-4, DIP-2 errors (These cause interrupts). The associated register status bits are:
– RX_ALGN_OFF_STS, TX_STATUS_LOF_STS, RX_DIP4_ERR_STS, TX_DIP2_ERR_STS
• DIP-4, DIP-2 error counters. These are 8-bit counters. The status registers are:
– RX_DIP4_ERR_CNT, TX_DIP2_ERR_CNT
• Deskew status and error from high-speed RX side. These cause an interrupt. The associated register status bits
are:
– RX_DSKW_DONE_STS, RX_DSKW_ERR_STS
– DPRAM FIFO overruns and underruns (RX and TX DPRAM memories). These can cause an interrupt.
– SPIA or SPIB Receive PLL Loss of lock indicator. The associated register bit is
–RX_PLL_LOL_STS
100
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 SPI4 Clocking
Transmit Clocking
The following descriptions and figures show the SPIA core. The SPIB core is identical.
Figure 45. SPI4 TX Clocking
k= 32, 64, or 128
FPGA
SPIA_TXk_CLK_0
SPIA_TXk_CLK_1
SPIA_TXk_CLK_2
ATREFCLK
SPIA TX Core
(Data)
SPIA_TXk_CLK_3
SPIA_TREFCLK_x8
ATREFCLK_F
ATDCLKP
ATDCLKN
ATSCLKP
SPIA TX Status
ATSCLKN
LVDS Input
TSCLKA
LVTTL Input
ATREFCLK: External Pad. Reference clock for the high-speed SPIA transmit block. Its frequency is 1/4th the SPI4
line clock ATDCLK. The ATREFCLK pad should be tied off during quarter-rate mode.
SPIA_TREFCLK_x8: Reference clock source from the FPGA when SPIA is operating in quarter-rate mode. Its frequency is two times the SPI4 line clock. i.e. if SPI4 line clock is 100 MHz, this clock is 200 MHz. Maximum allowable frequency is 200 MHz.
ATDCLK[P,N]: External output pads. SPI4 transmit data clock. SPI4 transmit data ATDAT and ATCTL are valid on
both edges of this clock.
ATSCLK[P,N]: External input LVDS pads. SPI4 transmit status clock.
TSCLKA: External input 3.3V LVTTL transmit status input.
SPIA_TXk_CLK_j: Write clocks from FPGA to each of the four asynchronous DPRAMs.
(j = 0, 1, 2 or 3) (k = 32, 64 or 128)
ATREFCLK_F: Clock output to the FPGA. Its frequency is the same as ATREFCLK. It is used to clock the status
outputs to the FPGA, namely SPIA_TXk_PORT_ID, SPIA_TXk_STAT and SPIA_TXk_BURST_VAL.
101
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Receive Clocking
The following descriptions and figures show the SPIA core. The SPIB core is identical.
Figure 46. SPI4 RX Clocking
k = 32, 64, or 128
j =0, 1, 2 or 3
FPGA
SPIA_RXk_CLK_0
SPIA_RXk_CLK_1
SPIA_RXk_CLK_2
ARDCLKP
SPIA RX Core
(Data)
ARDCLKN
SPIA_RXk_CLK_3
ARSCLKP
SPIA_RXk_PSS_CLK
ARLSCLK_F
SPIA RX Status
ARSCLKN
LVDS Output
RSCLKA
LVTTL Input
ARDCLK[P,N]: SPI4 line clocks received with data and control. These are external LVDS input pads.
SPIA_RXk_CLK_j: Read clocks to each of the four asynchronous DPRAMs.
ARLSCLK_F: Output clock from receive status logic to FPGA.
SPIA_RXk_PSS_CLK: Write clocks from FPGA to the receive status RAM. The ARLSCLK_F clock can be used to
source this clock as shown by dotted lines in the figure.
ARSCLK[P,N]: LVDS receive status outputs. External pads.
RSCLKA: 3.3 V LVTTL receive status output. External pads.
102
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES Functional Description
The SERDES portion of the ORSPI4 contains four Clock and Data Recovery (CDR) macrocells and Serialize/Deserialize (SERDES) blocks and supports 8b/10b (IEEE 802.3.2002) encoded serial links. It is intended for
high-speed serial backplane data transmission. Figure 47 shows the SERDES top level block diagram and the
basic data flow to and from the SERDES. Boundary scan for the SERDES only includes programmable I/Os and
does not include any of the embedded block I/Os.
Figure 47. SERDES Top Level Block Diagram.
0.6 Gbits/s
TO
3.7 Gbits/s
DATA
STANDARD
FPGA I/Os
ORCA
SERIES 4
FPGA LOGIC
BYTE- SERDES w/
8b/10b
WIDE CLOCK/DATA
DECODER/ENCODER DATA RECOVERY
4:1 MUX/1:4 DEMUX
CML
I/Os
4 FULLDUPLEX
SERIAL
CHANNELS
0.6 Gbits/s
TO
3.7 Gbits/s
DATA
The SERDES serial channels can each operate at up to 3.7 Gbits/s (2.96 Gbits/s data rate) with a full-duplex synchronous interface with built-in clock recovery (CDR). The 8b/10b encoding provides guaranteed ones density for
the CDR, byte alignment, and error detection. The core is also capable of frame synchronization and physical link
monitoring. Overviews of the various blocks in the SERDES are presented in the following paragraphs
ORSPI4 SERDES Functional Block Overview
The SERDES portion of the core contains one transceiver block for serial data transmission at a selectable data
rate of 0.6-3.7 Gbits/s. Each SERDES channel features high-speed 8b/10b parallel I/O interfaces to other core
blocks and high-speed CML interfaces to the serial links.
The SERDES circuitry consists of receiver, transmitter, and auxiliary functional blocks. The receiver accepts highspeed (up to 3.7 Gbits/s) serial data. Based on data transitions, the receiver locks an analog receive PLL for each
channel to retime the data, then de-multiplexes the data down to parallel bytes and an accompanying clock.
The transmitter operates in the reverse direction. Parallel bytes are multiplexed up to 3.7 Gbits/s serial data for offchip communication. The transmitter generates the necessary high-speed clocks for operation from a lower speed
reference clock.
The transceivers are controlled and configured through the system bus in the FPGA logic and through the external
8-bit microprocessor interface of the FPGA. Each channel has associated dedicated registers that are readable
and write-able. There are also global registers for control of common circuitry and functions.
The SERDES performs 8b/10b encoding and decoding for each channel. The 8b/10b transmission code can support either Ethernet or Fibre Channel specifications for serial encoding/decoding, special characters, and error
detection.
The user can disable the 8b/10b decoder to receive raw 10-bit words which will be rate reduced by the SERDES. If
this mode is chosen, the user must bypass the multi-channel alignment FIFOs.
103
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The SERDES block contains its own dedicated PLLs for both transmit and receive clock generation. The user provides a reference clock of the appropriate frequency. The receiver PLLs extract the clock from the serial input data
and retime the data with the recovered clock.
MUX/DEMUX Block
The MUX/DEMUX block converts the data format for the high-speed serial links to a wide, low-speed format for
crossing the CORE/FPGA interface. The intermediate interface to the SERDES macrocell runs at 1/10th the bit
rate of the data lane. The MUX/DEMUX converts the data rate and bus width so the interface to the FPGA core can
run at 1/4th this intermediate frequency, giving a range of 25.0-92.5 MHz for the data rates into and out of the
FPGA logic.
Multi-Channel Alignment FIFOs
The four incoming data channels can be independent of each other, or can be synchronized in several ways. Two
channels within a SERDES block can be aligned together; channels A and B and/or channels C and D. Alternatively, four channels in a SERDES block can be aligned together to form a communication channel with a bandwidth of 10 Gbits/s.
Individual channels within an alignment group can be disabled (i.e., powered down) without disrupting other channels.
XAUI and Fibre Channel Link State Machines
Two separate link state machines are included in the architecture. A XAUI link state machine is included in the
SERDES, modeled after the IEEE 802.3ae standard. A separate state machine for Fibre Channel is also implemented.
FPGA/SERDES Interface
In 8b/10b mode, the FPGA logic will receive/transmit 32-bits of data (up to 92.5 MHz) and four K_CTRL bits from/to
the SERDES. There are eight data streams in each direction plus additional timing, status and control signals.
Data sent to the FPGA can be aligned using comma (/K/) characters or the /A/ character as specified either by
Fibre Channel or by IEEE 802.3ae for XAUI based interfaces. The alignment character is made available to the
FPGA along with the data. The special characters K28.1, K28.5 and K28.7 are treated as valid comma characters
by the SERDES.
If the receive channel alignment FIFOs are bypassed, then each channel will provide its own receive clock in addition to data and comma character detect signals. If the 8b/10b decoders are bypassed, then 40-bit data streams
are passed to the FPGA logic. No channel alignment can be done in 8b/10b bypass mode.
The following table summarizes the interface signals between the FPGA logic and the core. In the table, an input
refers to a signal flowing into the SERDES and an output refers to a signal flowing out of the SERDES.
Table 26. FPGA/SERDES Interface Description
FPGA/Embedded Core Interface Signal Name
(x = [A, ..,D])
Input (I) to or
Output (O)
from Core
Signal Description
Transmit Path Signals
TWDx[31:0]
FPGA → Core Transmit data—channel x.
TCOMMAx[3:0]
FPGA → Core Transmit comma character—channel x.
TBIT9x[3:0]
FPGA → Core Transmit force negative disparity—channel x
TSYS_CLK_x
FPGA → Core Transmit low-speed clock to the FPGA—channel x
TCK78
Core →FPGA
Transmit low-speed clock to the FPGA—SERDES Quad
MRWDx[39:0]
Core →FPGA
Receive data—Channel x (see Table 35).
RWCKx
Core →FPGA
Low-speed receive clock—Channel x.
Receive Path Signals
104
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
RCK78
Core →FPGA
RSYS_CLK_1
FPGA → Core Low-speed receive FIFO clock for channels A, B
RSYS_CLK_2
FPGA → Core Low-speed receive FIFO clock for channels C, D
CV_SELx
FPGA → Core Enable detection of code violations in the incoming data
SYS_RST_N
FPGA → Core Synchronous reset of the channel alignment blocks.
FPGA_RESET_FC
FPGA → Core Disables access to SERDES when high
Receive low-speed clock to FPGA—SERDES Quad.
Backplane Transceiver Core Detailed Description
The following sections describe the various logic blocks in the SERDES portion of the FPSC. For a detailed
description of the programmable logic functions, please see the ORCA Series 4 FPGA Data Sheet and related
application and technical notes.
The major functional blocks in the SERDES include:
• One SERializer-DESerializer (SERDES) block and Clock and Data Recovery (CDR) circuitry
• 8b/10b encoder/decoders
• Transmit pre-emphasis circuitry
• 4-to-1 multiplexers (MUX) and 1-to-4 demultiplexers (DEMUX)
• Fibre channel synchronization state machine
• XAUI link alignment state machine
• Alignment FIFOs
A top level block diagram of the SERDES Logic is shown in Figure 48.
Figure 48. Top Level Block Diagram, SERDES Embedded Core Logic
RCK78
Logic Common to Quad
TCK78
2
REFCLK[P:N]
Receive Channel A
MRWDA[39:0]
2:1 MUX
(x40)
Link State
Machine
CV_SELA
RWCKA
Multi Channel
Alignment
Block
DEMUX
Block
RX SERDES Block
2
HDIN[P:N]_A
Backplane
Serial
Links
TSYS_CLK_A
TWDA[31:0]
TCOMMA[3:0]
FPGA
Logic
.
.
.
Transmit Channel A
Interface and
MUX Block
TX SERDES
Block
Channel B
Channel C
Channel D
105
2
HDOUT[P:N]_A
.
.
.
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES Detailed Description
The SERDES provides transceiver functionality for four serial data channels. Each channel is identified by a channel identifier [A:D].
The data channels can operate independently or they can be combined together (aligned) to achieve higher bit
rates. The mode operation of the core is defined by a set of control registers, which can be written through the system bus interface. Also, the status of the core is stored in a set of status registers, which can be read through the
system bus interface.
The transmitter section for each channel accepts 40 bits (RAW MODE) of data or 32-bits of data and eight control/status bits from the FPGA logic and (optionally) encodes the data using 8b/10b encoding. It also accepts the
low-speed reference clock at the REFCLK input and uses this clock to synthesize the internal high-speed serial bit
clock. The data is then serialized and the serialized data are available at the differential CML output terminated in
86 Ω to drive either an optical transmitter or coaxial media or circuit board/backplane.
The receiver section receives high-speed serial data at its differential CML input port. These data are fed to the
clock recovery section, which generates a recovered clock and retimes the data. The retimed data are also de-serialized and optionally 8b/10b decoded. The receiver also (optionally) recognizes the comma characters or code violations and aligns the bit stream to the proper word boundary. The resulting parallel data is (optionally) passed to
the multi-channel alignment block before it is presented to the FPGA logic.
8b/10b Encoding and Decoding
In 8b/10b mode, the FPGA logic will receive/transmit 32-bits of data and four K_CTRL bits from/to the embedded
core. In the transmit direction, four additional input bits can force a negative disparity present state. The SERDES
logic will encode the data to, or decode the data from, a 10-bit format according to the FC-PH ANSI X3.230:1994
standard (which is also the encoding used by the IEEE 802.3ae Ethernet standard). This encoding/decoding
scheme also allows for the transmission of special characters and supports error detection.
Following the definitions and conventions used in defining the 8b/10b coding rules, each valid coded character has
a name corresponding to its 8-bit binary value:
• Dx.y for data characters
• Kx.y for special characters
• x = the 5-bit input value, base 10, for bits ABCDE
• y = the 3-bit input value, base 10, for bits FGH
An 8b/10b encoder is designed to maintain a neutral average disparity. Disparity is the difference between the
number of “1”s and “0”s in the encoded word. Neutral disparity indicates the number of “1”s and “0”s are equal.
Positive disparity indicates more “1”s than “0”s. Negative disparity indicates more “0”s than “1”s. The average disparity determines the DC component of the signals on the serial line. Running disparity is a record of the cumulative disparity of every encoded word, and is tracked by the encoder.
In order to maintain neutral disparity, two different codings are defined for each data value. The 8b/10b encoder in
the transmit path selects between (+) and (-) encoded word based on calculated disparity of the present data to
maintain neutral disparity.
In the receive path, the clock and data recovery blocks retime the incoming data and 8b/10b decoders generate 8bit data based on the received 10-bit data. A sequence of valid 8b/10b coded characters has a maximum run
length of 5-bits (i.e., five consecutive “1”s or five consecutive “0”s before a mandatory bit transition). This assures
adequate transitions for robust clock recovery.
The recovered data is aligned on a 10-bit boundary by detecting and aligning to special characters in the incoming
data stream. Data is word-aligned using the comma (/K/) character. A comma character is a special character that
contains a unique pattern (0011111 or its complement 1100000) in the 10-bit space that makes it useful for delim-
106
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
iting word boundaries. The special characters K28.1, K28.5 and K28.7 contain this comma sequence and are
treated as valid comma characters by the SERDES.
The following table shows all of the valid special characters. All of the special characters are made available to the
FPGA logic; however only the comma characters are used by the SERDES logic. The different codings that are
possible for each data value are shown as encoded word (+) and encoded word (-). The table also illustrates the
8b/10b bit labeling convention. The bit positions of the 8-bit characters are labeled as H,G,F,E,D,C,B and A and the
bit positions of the 10-bit encoded characters are labeled as a, b, c, d, e, i, f, g, h, and j. The encoded words are
transmitted serially with bit 'a' transmitted first and bit 'j' transmitted last.
Table 27. Valid Special Characters
Encoded Word (–)
Encoded Word (+)
K Control
abcdei fghj
abcdei fghj
000 11100
1
001111 0100
110000 1011
001 11100
1
001111 1001
110000 0110
K28.2
010 11100
1
001111 0101
110000 1010
K28.3 /A/
011 11100
1
001111 0011
110000 1100
K28.4
100 11100
1
001111 0010
110000 1101
K28.5 /comma/
101 11100
1
001111 1010
110000 0101
K28.6
110 11100
1
001111 0110
110000 1001
K28.7 /comma/
111 11100
1
001111 1000
110000 0111
K23.7
111 10111
1
111010 1000
000101 0111
K27.7
111 11011
1
110110 1000
001001 0111
K29.7
111 11101
1
101110 1000
010001 0111
K30.7
111 11110
1
011110 1000
100001 0111
HGF EDCBA
765 43210
K28.0
K28.1 /comma/
K Character
Transmit Path (FPGA to Backplane) Logic
The transmitter section accepts four groups of either 8-bit unencoded data or 10-bit encoded data at the parallel
interface to the FPGA logic. It also uses the reference clock, REFCLK[P:N] to synthesize an internal high-speed
serial bit clock. The serialized transmitted data are available at the differential CML output pins to drive either an
optical transmitter, coaxial media or a circuit board backplane.
As shown in Figure 49, the basic blocks in the transmit path include:
SERDES/FPGA Interface and 4:1 Multiplexer
• Low speed parallel core/FPGA interface
• 4:1 multiplexer
Transmit SERDES
• 8b/10b Encoder
• 10:1 Multiplexer
• CML Output Buffer
Detailed descriptions of the logic blocks are given in following sections. Detailed descriptions of transmit clock distribution, including the transmit PLL are given in later sections of this data sheet.
107
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 49. Basic Logic Blocks, Transmit Path, Single Channel (Typical Reference Clock Frequency)
Note: x= [A, B, ... D]
FPGA
Logic
TWDx[31:0]
Backplane
Serial
Link
32
Interface and MUX Block
TX SERDES Block
STBD_x[7:0] 8
TCOMMAx[3:0]
4
TBIT9x[3:0]
4
8-bit data
8B/10B
Encoder
(with
bypass)
STBD_x[8]
K-control
4:1 MUX
(x9)
FIFO
TSYS_CLK_x
HDOUTP_x
10:1
MUX
STBD_x[9]
Force-ve disparity
÷4
STBC311_x
CML
Buffer
with Preemphasis
HDOUTN_x
PRBS
Gen.
PLL
312.5 MHz
Logic Common to Quad
REFCLKP
78.125 MHz
MUX
{
TCK78
To other 3
channels
From other 3
channels
TCKSEL[0:1]
{
CML
Buffer
REFCLKN
156.25 MHz
From Control
Register
SERDES/FPGA Logic Interface and 4:1 Multiplexer
These blocks provide the data formatting and transmit data and clock signal transfers between the SERDES and
the FPGA Logic. Control and status registers in the FPGA portion of the chip control the transmit logic and record
status. These bits are passed to the core using the FPGA System Bus and are described in later sections of this
data sheet.
The low-speed transmit interface consists of a clock and 4 data bytes, each with an accompanying control bit. The
data bytes are conveyed to the MUX via the TWDx[31:0] ports (where x represents the channel label [A,B,C or D].
The control bits are TCOMMAx[3:0] which define whether the input byte is to be interpreted as data or as a special
character and TBIT9x[3:0] which are used to force a negative disparity present state. The data and control signals
are synchronized to the transmit clock, TSYS_CLK_x. Both the data and control are strobed into the core on the
rising edge of TSYS_CLK_x. Note that each TBIT9x[3:0] controls the disparity of the encoded version of its corresponding data byte. Setting bit TBIT9C[3] to “1”, for instance, will force the 8b/10b encoder to asserts a current negative running disparity state. This will cause it to encode TWDC[31:24] positively (more “1”'s than “0”'s). Setting
TBIT9x to 0 will leave the encoder free to alternate between positive and negative encoding to maintain a zero running disparity.
The MUX is responsible for taking 40 bits of data/control at the low-speed transmit interface and up-converting it to
10 bits of data/control at the SERDES transmit interface. The MUX has two clock domains - one based on the clock
received from the SERDES block and a second that comes from the FPGA at 1/4 the frequency of the SERDES
clock. The time sequence of interleaving data/control values is shown in Figure 50.
108
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 50. TRANSMIT MUX Block Timing - Single Channel. (NOTE: xx = A, B, C, or D)
TWDxx[31:24],
TCOMMAxx[3]
TBIT9xx[3]
p7-0 p8
p9
t7-0
t8
t9
TWDxx[23:16],
TCOMMAxx[2]
TBIT9xx[2]
q7-0 q8
q9
x7-0 x8
x9
TWDxx[15:8],
TCOMMAxx[1]
TBIT9xx[1]
r7-0
r8
r9
y7-0 y8
y9
TWDxx[7:0],
TCOMMAxx[0]
TBIT9xx[0]
s7-0 s8
s9
z7-0 z8
z9
LATENCY = 4 TSYS_CLK_xx CLOCKS
10-bit wide data
p
STBDxx[9:0]
q
r
s
t
x
y
z
TSYS_CLK_xx
SERDES Block
The SERDES block accepts either 8-bit data to be encoded or 10-bit unencoded data at the parallel input port from
the MUX/DEMUX block. It also accepts the reference clock at the REFCLK input and uses this clock to synthesize
the internal high-speed serial bit clock.
The internal STBC311x clock is derived from the reference clock. The frequency of this clock depends on the setting of the half-rate/full-rate control bit setting the mode of the SERDES and the frequency of the REFCLK and/or
that of the high-speed serial data. A falling edge on the STBC311x clock port will cause a new data character to be
transferred into the SERDES block. The latency from the SERDES block input to the high-speed serial output is five
STBC311x clock cycles, as shown in Figure 51.
Figure 51. Transmit Path Timing - Single SERDES Channel (NOTE: xx = A, B, C, or D)
STBDxx[9:0]
p
q
r
s
t
x
y
z
STBC311xx
LATENCY =
5 STBC311x CLOCKS
HDOUT_xx
p p p p p p p p p p
0 1 2 3 4 5 6 7 8 9
Each block also sends a clock to the FPGA logic. This clock, TCK78[A,B], is sourced from one of the four MUX
blocks and has the same frequency as TSYS_CLK_x, but arbitrary phase. Within each MUX block, the low frequency clock output is obtained by dividing by four, the SERDES STBC311x clock, which is used internally to synchronize the transmit data words. TCKSEL control bits select the channel to source TCK78. The internal signals
STBDx[9:0] (where x is represents A, B, C or D) from the MUX block carry unencoded character data and control
bits. The 10th bit (STBDx[9]) of each data lane into the SERDES is used to force a negative disparity present state.
109
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
8b/10b Encoder and 1:10 Multiplexer
The 8b/10b encoder encodes the incoming 8-bit data into a 10-bit format as described previously. The input signals
to the block, STBDx[7:0] are used for the 8-bit unencoded data. STBDx[8] is used as the K_control input to indicate
whether the 8 data bits need to be encoded as special characters (K_control = “1”) or as data characters (K_control
= 0). When STBDx[9:0] = “1”, a negative disparity present state is forced. When the encoder is bypassed
STBDx[9:0] serve as the data bits for the 10-bit unencoded data.
Within the 8b/10b transmission code, the bit positions of the 10-bit encoded transmission characters are labeled as
a, b, c, d, e, i, f, g, h, and j in that order. Bit a corresponds to STBDx[0], bit b to STBDx[1], bit c to STBDx[2], bit d to
STBDx[3], bit e to STBDx[4], bit i to STBDx[5], bit f to STBDx[6], bit g to STBDx[7], bit h to STBDx[8], and bit j to
STBDx[9].
The 10-bit wide parallel data is converted to serial data by the 10:1 Multiplexer. The serial data are then sent to the
CML output buffer and are transmitted serially with STBDx[0] transmitted first and STBDx[9] transmitted last.
CML Output Buffer
The transmitter's CML output buffer is terminated on-chip in 86 ohms to optimize the data eye, as well as to reduce
the number of discrete components required. The differential output swing reaches a maximum of 1.2 V PP in the
normal amplitude mode. A half amplitude mode can be selected via configuration register bit HAMP_x. Half amplitude mode can be used to reduce power dissipation when the transmission medium has minimal attenuation or for
testing of the integrity (loss) of the physical medium.
A programmable preemphasis circuit is provided to boost the high frequencies in the transmit data signal to maximize the data eye opening at the far-end receiver. Preemphasis is particularly useful when the data are transmitted
over backplanes or low-quality coax cables which have a frequency-dependent amplitude loss. For example, for
FR4 material at 2.5 GHz, the attenuation compared to the 1.0 GHz value is about 3 dB. The attenuation is a result
of skin effect loss of the PCB conductor and the dielectric loss of the PCB substrate. This attenuation causes
intersymbol interface which results in the closing of the data eye opening at the receiver. Since this effect is predictable for a given type of PCB material, it is possible to compensate for this effect in two ways - transmitter preemphasis and receiver equalization. Each of these techniques boosts the high frequency components of the signal but
transmit preemphasis is preferred due to the ease of implementation and the better power utilization. It also gives a
better signal-to-noise ratio because receiver equalization amplifies both the signal and the noise at the receiver
Applying too much preemphasis when it is not required, for example when driving a short backplane path, will also
degrade the data eye opening at the receiver. In the ORSPI4 the degree of transmit preemphasis can be programmed with a two-bit control from the microprocessor interface as shown in Table 28. The high-pass transfer
function of the preemphasis circuit is given by the following equation, where the value of “a” is shown in Table 28.
H(z) = (1 – az –1)
(1)
Table 28. Preemphasis Settings
PE1
PE0
0
0
0% (No Preemphasis)
Amount of Preemphasis (a)
0
1
12.5%
1
0
12.5%
1
1
25%
Receive Path (Backplane to FPGA) Logic
The receiver section receives high-speed serial data at the external differential CML input pins. These data are fed
to the clock recovery section which generates a recovered clock and retimes the data. Therefore the receive clocks
are asynchronous between channels. The retimed data are deserialized and presented as an 8-bit decoded or a
10-bit unencoded parallel data on the output port. The receiver also optionally recognizes comma characters,
detects code violations and aligns the bit stream to the proper word boundary.
110
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
As shown in Figure 52, the basic blocks in the receive path include:
Receive SERDES Block
• CML input buffer
• Receive PLL
• 1:10 demultiplexer (DEMUX)
• Clock and Data Recovery (CDR) section
• 10b/8b decoder
• 1:4 demultiplexer and SERDES/FPGA interface
• 1:4 DEMUX
• Low speed parallel SERDES/FPGA logic interface
• Multi-channel alignment logic
Figure 52. Basic Logic Blocks, Receive Path, Single Channel (Typical Reference Clock Frequency)
CV_SELx
Note: x= [A, ..., B]
x# = [1, 2]
RWBIT9x[3:0]
MRWDx[39:0]
RSYS_CLK_#
78.125 MHz
40
2:1
MUX
(x40)
32-bit data 36
4 bits k-ctrl
Synchronization
Status bits
SWDSYNC_x
FIFO
3
10
32
32-bit data
MultiRWBIT8x[3:0]
Channel 4 bits k-control
Alignment RALIGNx[3:0]
4
SRBD_x[0:9]
1:4
DEMUX
(x 10)
4
Multi-Channel
Alignment Block
SCVx
8B/10B
Encoder Byte 1:10 CML
(with Align DEMUX Buffer
bypass)
312.5 MHz
Clocks 2
Align Character Detect
78.125 MHz Clock
RWCKx
Fibre Channel State
Machine
4
RWDx[31:0]
FPGA
Logic
SBYTSYNC_x
CDR
PLL
XAUI
State
Machine
DEMUX
Block
78.125 MHz
PRBS Checker
RX SERDES Block
HDINP_x
HDIN_x
Backplane
Serial
Link
Logic Common to Quad
REFCLKP
78.125 MHz
MUX
{
RCK78
To other 3
channels
From other 3
channels
RCKSEL[0:1]
{
REFCLK
Buffer
REFCLKN
156.25 MHz
From Control
Register
Each channel provides its own received clock, received data and K-character detect signals to the FPGA logic.
Incoming data from multiple channels can be aligned using comma (/K/) characters or /A/ character (as specified
either in Fibre Channel specifications or in IEEE 802.3ae for XAUI based interfaces). If the 8b/10b decoders are
bypassed, then 40-bit data streams are passed to the FPGA logic. No channel alignment can be done in this
8b/10b bypass mode.
111
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Synchronization
The ORSPI4 SERDES RX logic performs four levels of synchronization on the incoming serial data stream. Each
level builds upon the previous, providing first bit, then byte (character), then channel (32-bit word), and finally multichannel alignment.
Bit alignment is the task of the Clock/Data Recovery (CDR) block. This block utilizes a PLL that locks to the transitions in the incoming high-speed serial data stream, and outputs the extracted clock as well as the data. If the PLL
is unable to lock to the serial data stream, it instead locks to REFCLK to stabilize the Voltage-Controlled Oscillator
(VCO), and periodically switches back to the serial data stream to again attempt synchronization. This process
continues until a valid input data stream is detected and lock is achieved. The CDR can maintain lock on data as
long as the input data stream contains an adequate data “eye” (i.e., jitter is within specification) and the maximum
data stream run length is not exceeded.
Byte alignment occurs once valid bit alignment is achieved. The byte aligner looks for a particular 7-bit sequence
(either 0011111 or its complement, 1100000) that, has been 8b/10b encoded per Fibre Channel or IEEE
802.3.2002 specifications, only occurs in the comma (/K/) characters K28.1, K28.5 and K28.7. Byte alignment only
occurs when the ENBYSYNC_x signal for that channel is active high, and re-alignment occurs on each 7-bit
sequence encountered. However, if ENBYSYNC_x is asserted active high and no comma character is encountered, and then is brought inactive low, the channel will still perform one byte alignment operation on the next
comma character. Byte alignment occurs immediately when an alignment sequence is detected, so the lock time is
only one clock period.
Word (32-bit) alignment can occur after the Fibre Channel (XAUI_MODE_x = “0”) or XAUI (XAUI_MODE_x = “1”)
state machine has reached the in-synchronization state. In Fibre Channel mode, synchronization (WDSYNC_x =
“1”) will occur after three ordered sets of data have been received in the absence of any code violations. After this,
the next ordered set will cause the output data to be aligned such that the comma character is in the most significant byte. Thus, 32-bit word alignment has been achieved when four ordered sets have been detected. The time
required is directly dependent on comma-character density.
Once word alignment is accomplished, no further alignment occurs unless and until WDSYNC_x goes to zero and
back to one again. Comma characters that are not located in the most significant byte position will not trigger further re-alignment while WDSYNC_x is active. This behavior is as defined by the Fibre Channel specification. However, it means that, if the channel experiences an abrupt delay change (as could occur if an external mux performs
protection switch between two links) and if the delay change is close enough to a full character or characters that
not enough code violations are generated to cause loss of WDSYNC_x, the channel could become misaligned and
remain that way indefinitely. As mentioned above, this behavior is that defined by the Fibre Channel specification.
In XAUI mode, as the state diagram later in this data sheet indicates, three error-free code-groups containing commas must be detected before synchronization is declared.
Multi (2 or 4) channel alignment (Lane alignment in XAUI mode) can be performed after 32-bit word alignment is
complete. Multi-channel alignment is described in later sections of this data sheet.
Receive CML Input Buffer and SERDES
The receiver section receives high-speed serial data at its differential CML input port. The receive input is an AC
coupled input. The received data is sent to the clock recovery section which generates a recovered clock and
retimes the data. Valid data will be received after the receive PLL has locked to the input data frequency and phase.
The received serial data is converted to a 10-bit wide parallel data by the 1:10 demultiplexer. Clock recovery is performed by the SERDES block for each of the eight receive channels. This recovered data is then aligned to a 10-bit
word boundary by detecting and aligning to a comma special character. Word alignment is done for either polarity
of the comma character. The 10-bit code word is passed to the 8b/10b decoder, which provides an 8-bit byte of
data, a special character indicator bit and a SBYTSYNC_x signal (where again x is a placeholder for A,...,D). Data
from a SERDES channel is sent to the DEMUX block in 10-bit raw form or 8-bit decoded form. Accompanying this
data are the comma-character indicator (SBYTSYNC_x), link-state indicator (SWDSYNC_x), clocks (SRBC0_x,
and SRBC1_x), and code-violation indicator (SCVx). The two internal clocks operated at twice the reference clock
112
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
frequency. With the 8b10bR_x control bit of the SERDES channel set to “1”, the data presented at SRBD_x[9:0] will
be decoded characters. Bit 8 will indicate whether SRBDx[7:0] represents an ordinary data character (bit 8 = 0), or
whether SRBD_x[7:0] represents a special character, like a comma. Bit 9 may be either a code violation indicator
or one of seven out of synchronization state indicators, as described later.
Figure 53. Receive Path Timing for a Single SERDES Channel. (NOTE: xx = A, B, C, or D)
EMBEDDED CORE
1-bit
HDINx
p p p p p p p p p p q
0 1 2 3 4 5 6 7 8 9 0
.....
r
2
r
3
r
4
r
5
r
6
r
7
r
8
r
9
s s s s s
0 1 2 3 4
.....
LATENCY =
APPROX 23 CLOCKS
.....
SRBDX[9:0]
P
10-bit
SRBDX[9:0]
.....
P
Q
R
S
T
X
SRBC0X
SRBC1X
SBYTSYNCX,
SVCX
Y
Z
.....
.....
.....
.....
.....
SWDSYNCX
When 8b10bR is set to “0”, the data at SRBD_x[9:0] will not be decoded. The XAUI link-state machine should not
be used in this mode of operation. When in XAUI mode, the MUX/DEMUX looks for /A/ (as defined in IEEE 802.3ae
v.2.1) characters for channel alignment and requires the characters to be in decoded form for this to work
1:4 Demultiplexer (DEMUX)
The 1:4 DEMUX has to accumulate four sets of characters presented to it at the SERDES receive interface and put
these out at one time at the low-speed receive interface.
Another task of the 1:4 DEMUX is to recognize the synchronizing event and adjust the 4-byte boundary so that the
synchronizing character leads off a new 4-byte word. In Fibre Channel mode, this synchronizing character is a
comma. This feature will be referred to as DEMUX word alignment in other areas of this document. DEMUX word
alignment will only occur when the communication channel is synchronized. When there is no synchronization of
the link, the 1:4 DEMUX will continue to output 4-byte words at some arbitrary, but constant, boundary. There are 2
control register bits available for each channel for word alignment. They are DOWDALGN_x and NOWDALGN_x.
The DOWDALGN_x bit is positive edge triggered. Writing a 0 followed by a “1” to this register bit will cause the corresponding DEMUX to look for a new comma character and align the 32-bit word such that the comma is in the
most significant byte position. It is important that the comma is in the most significant byte position since the multichannel aligner looks for comma in the most significant byte only.
Typically, it is not necessary to set the DOWDALGN_x bit. When the link state machine loses synchronization
(DEMUXWAS_x register bit is 0), the DEMUX block automatically looks for a new comma character irrespective of
whether the DOWDALGN_x bit is set or not. However, as discussed earlier, the comma character may become
misaligned without the Fibre Channel link state machine indicating a loss of synchronization. In such cases, the
DOWDALGN_x bit must be toggled to force resynchronization.
113
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The NOWDALGN_x bit is a level-sensitive bit. If it is a “1”, then the DEMUX does not dynamically alter the word
boundary based on comma and SWDSYNC_x output of the SERDES. This might be useful if a channel were configured to bypass the multi-channel alignment FIFO and raw 40-bits of data are directed from SERDES to FPGA.
In Fibre Channel mode, the default setting (NOWDALGN_x = 0) causes the word boundary to be set as soon as
the SERDES SWDSYNC_x output is a “1” and a comma character has been detected. The character that is the
comma becomes the most-significant portion of the demultiplexed word. When the SERDES loses link synchronization it will drop SWDSYNC_x low. The DEMUX will begin search for word alignment as soon as SWDSYNC_x
goes to “1” again.
The DEMUX passes on to the channel alignment FIFO block a set of control signals that indicate the location of the
synchronizing event. RALIGN_x[3:0] are these indicators. If there is no link synchronization, all of the
RALIGN_x[[3:0] bits will be zeros independent of synchronizing events that come in. When the link is synchronized,
then the bit that corresponds to the time of the synchronization event will be set to a “1”. The relationship between
a time sequence of values input at SRBDx[7:0] to the values output at RWD_x[39:0] is shown in Figure 54. A parallel relationship exists between SRBDx[8] and RWBIT8_x[3:0] as well as between SRBD_x[9] and RWBIT9_x[3:0].
Figure 54. Receive DEMUX Block for a Single SERDES Channel. (NOTE: xx = A, B, C, or D)
10-bit
SRBDxx[9:0]
p
p
p
p
p
p
p
p
LATENCY = 4 RSYS_CLK [A1,...,B2] CLOCKS
40-bit
RWD_XX[31:24]
RWBIT8_XX[3]
RWBIT9_XX[3]
p
7-0
p p
8 9
t
t t
7-0 8 9
q q
8 9
x
x x
7-0 8 9
RWD_XX[23:16]
RWBIT8_XX[2]
RWBIT9_XX[2]
q
RWD_XX[15:8]
RWBIT8_XX[1]
RWBIT9_XX[1]
r
r r
7-0 8 9
y
y y
7-0 8 9
RWD_XX[7:0]
RWBIT8_XX[0]
RWBIT9_XX[0]
s
s s
7-0 8 9
z
z z
7-0 8 9
7-0
One clock per block of two or four channels, called RCK78, is sent to the FPGA. The control bits RCKSEL[A,B] are
used to select the channel that is the source for these clocks.
Link State Machines
Two link state machines are included in each SERDES channel; one for XAUI applications and a second for Fibre
Channel applications.
The Fibre Channel link state machine is responsible for establishing a valid link between the transmitter and the
receiver and for maintaining link synchronization. The machine is initially in the loss of synchronization (LOS) state
upon power-on reset. This is indicated by WDSYNC_x = 0. While in this state, the machine looks for a particular
number of consecutive idle ordered sets without any invalid data transmission in between before declaring synchronization achieved. Achievement of synchronization is indicated by asserting WDSYNC_x = “1”. Specifically, the
machine looks for three continuous idle ordered sets without any misaligned comma character or any running disparity based code violation in between. In the event of any such code violation, the machine would reset itself to the
114
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ground state and start its search for the idle ordered sets again. A typical valid sequence for achieving link synchronization would be K28.5 D21.4 D21.5 D21.5 repeated three times.
In the synchronization achieved state, the machine constantly monitors the received data and looks for any kind of
code violation that might result due to running disparity errors. If it were to receive four such consecutive invalid
words, the link machine loses its synchronization and once again enters the loss of synchronization state (LOS). A
pair of valid words received by the machine overcomes the effect of a previously encountered code violation. LOS
is indicated by the status of WDSYNC_x output which now transitions from “1” to “0”. LOS is also indicated by
DEMUXWAS_x status register bit. This bit is set to “0” during loss of synchronization. At this point the machine
attempts to establish the link yet again. Figure 55 shows the state diagram for the Fibre Channel link state
machine.
Figure 55. Fibre Channel Link State Machine State Diagram
LINK SYNCHRONIZATION ACHIEVED (WDSYNC = 1)
1VW
VW
b
2 VW
CV
CV
CV
a
1VW
1VW
d
c
2 VW
2 VW
OS
CV
h
LOSS OF SYNCHRONIZATION (WDSYNC_X = 0)
CV
OS
CV
g
OS
LOS = 1
e
f
RST
LSM_ENABLE
+
POWERUP_RESET
OS
LAST ORDERED SET RECEIVED:
OS: IDLE ORDERED SET (A 4 CHARACTER BASED WORD HAVING COMMA AS THE 1ST CHARACTER)
VW: VALID WORD (A 4 CHARACTER BASED WORD HAVING NO CODE VIOLATION) WITH AT LEAST
TWO PRECEEDING VALID WORDS
CV: CODE VIOLATION (RUNNING DISPARITY BASED ON ILLEGAL COMMA POSITION)
1VW: FIRST VALID WORD AFTER A CODE VIOLATION
2VW: SECOND VALID WORD AFTER A CODE VIOLATION
XAUI Link Synchronization Function
For each lane, the receive section of the XAUI link state machine incorporates a synchronization state machine that
monitors the status of the 10-bit alignment. A 10-bit alignment is done in the SERDES based on a comma character such as K28.5. A comma (0011111 or its complement 1100000) is a unique pattern in the 10-bit space that cannot appear across the boundary between any two valid 10-bit code-groups. This property makes the comma useful
for delimiting code-groups in a serial stream. This mechanism incorporates a hysteresis to prevent false synchronization and loss of synchronization due to infrequent bit errors. For each lane, the sync_complete signal is disabled
until the lane achieves synchronization. The synchronization state diagram is shown in Figure 56. The XAUI state
machine does not have any control over the SERDES byte aligner. It is the user’s responsibility to control the byte
aligner through software access of register map address 30800.
115
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
This state machine is modeled after draft IEEE 802.3ae, version 2.1 but will also operate properly with version 4.1
implementations. Table 29 and Table 30 describe the state variables used in Figure 56.
Note that it takes four idle ordered sets (ex: k28.5, Dx.y, Dx.y, Dx.y) to bring the state machine from a loss-of-sync
to a sync_acq’d_1 state. Instead, when back-to-back commas are used, it takes a total of five commas to achieve
the same result as with idle ordered sets.
Table 29. XAUI Link Synchronization State Diagram Notation—Variables
Variable
Description
sync_status
FAIL: Lane is not synchronized (correct 10-bit alignment has not been established).
OK: Lane is synchronized.
OK_NOC: Lane is synchronized but a comma character has not been detected in the past 200 code-groups.
enable_CDET
TRUE: Align subsequent 10-bit words to the boundary indicated by the next received comma.
FALSE: Maintain current 10-bit alignment.
gd_cg
Current number of consecutive cg_good indications.
Table 30. XAUI Link Synchronization State Diagram—Functions
Function
sync_complete
Description
Indication that alignment code-group alignment has been established at the boundary indicated by the
most recently received comma.
cg_comma
Indication that a valid code-group, with correct running disparity, containing a comma has been received.
cg_good
Indication that a valid code-group with the correct running disparity has been received.
cg_bad
Indication that an invalid code-group has been received.
no_comma
Indication that comma timer has expired. The timer is initialized upon receipt of a comma.
116
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 56. XAUI Link Synchronization State Diagram
reset
Loss_of_Sync
sync_status <=FAIL
enable_CDET <= TRUE
sync_complete
Comma_Detect_1
enable_CDET <= FALSE
cg_bad
cg_comma
Comma_Detect_2
cg_bad
cg_comma
Comma_Detect_3
cg_bad
cg_comma
Sync_Aqc’d_1a
Sync_Aqc’d_1
sync_status <= OK
sync_status <= OK_NOC
no_comma and cg_bad
cg_bad
cg_comma
no_comma and cg_bad
Sync_Aqc’d_2a
Sync_Aqc’d_2
gd_cg <= 0
gd_cg <= gd_cg + 1 cg_good x
(gd_cg ! = 3)
cg_good
cg_bad
cg_bad
cg_good x (gd_cg = 3)
Sync_Aqc’d_3a
Sync_Aqc’d_3
gd_cg <= 0
cg_good
cg_good*(gd_cg=3)
gd_cg <=gd_cg + 1
cg_good x
(gd_cg ! = 3)
cg_bad
cg_bad
Sync_Aqc’d_4a
Sync_Aqc’d_4
gd_cg <= 0
gd_cg <=gd_cg + 1
cg_good
cg_good x (gd_cg = 3)
cg_good x
(gd_cg ! = 3)
cg_bad
cg_bad
Reference Clock Requirements
There is one pair of SERDES reference clock inputs on the ORSPI4. The differential reference clock is distributed
to all channels in the block. Each channel has a differential buffer to isolate the clock from the other channels. The
input clock is preferably a differential signal; however, the device can operate with a single-ended input. The input
reference clock directly impacts the transmit data eye, so the clock should have low jitter. In particular, jitter compo117
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
nents in the DC to 5 MHz range should be minimized. The required electrical characteristics for the reference clock
are given in Table 71.
Note: In sections of this data sheet, the differential clocks are simply referred to as the reference clock as REFCLK.
Synthesized and Recovered Clocks
The SERDES block contains its own dedicated PLLs for transmit and receive clock generation. The user provides a
reference clock of the appropriate frequency, as described in the previous section. The transmitter PLL uses the
REFCLK inputs to synthesize the internal high-speed serial bit clocks. The receiver PLLs extract the clock from the
serial input data and retime the data with the recovered clock. The receive PLL for each channel has two modes of
operation - lock to reference and lock to data with retiming.
When no data or invalid data is present on the HDINP_x and HDINN_x pins, the receive VCO will not lock to data
and its frequency can drift outside of the nominal ±350 ppm range. Under this condition, the receive PLL will lock to
REFCLK for a fixed time interval and then will attempt to lock to receive data. The process of attempting to lock to
data, then locking to clock will repeat until valid input data exists. There is also a control register bit per channel to
force the receive PLL to always lock to the reference clock.
The high-speed transmit and receive serial data links can run at 0.6 to 3.7 Gbits/s, depending on the frequency of
the reference clock and the state of the control bits from the internal transmit control register. The interface to the
serializer/deserializer block runs at 1/10th the bit rate of the data lane. Additionally, the MUX/DEMUX logic converts
the data rate and bit-width so the FPGA core can run at 1/4th this frequency, which gives a range of 15 to 92.5 MHz
for the data in and out of the FPGA.
Internal Clock Signals at the FPGA/Core SERDES Interface
There are several clock signals defined at the FPGA/SERDES interface in addition to the external reference clock.
All of the SERDES clock signals are shown in Figure 57 and are described following the paragraphs.
Figure 57. SERDES Clock Signals (High-Speed Serial I/O Also Shown)
RCK78
TCK78
Common Logic
RWCKA
RSYS_CLK_1
Channel A
2
TSYS_CLK_A
RWCKB
2
2
Channel B
TSYS_CLK_B
RWCKC
2
2
Channel C
TSYS_CLK_C
RWCKD
RSYS_CLK_2
TSYS_CLK_D
2
Channel D
2
2
2
REFCLK[P:N]
HDIN[P:N]
HDOUT[P:N]
HDIN[P:N]
HDOUT[P:N]
HDIN[P:N]
HDOUT[P:N]
HDIN[P:N]
HDOUT[P:N]
REFCLKP, REFCLKN:
These are the differential reference clocks provided to the ORSPI4 device as described earlier. They are used as
the reference clock for both TX and RX paths. For operation of the serial links at 3.125 Gbits/s, the reference clocks
will be at a frequency of 156.25 MHz.
RWCK[A:D]:
These are the low-speed receive clocks from the SERDES to the FPGA across the core-FPGA interface.
118
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
These are derived from the recovered low-speed complementary clocks from the SERDES blocks. RWCK_A
belongs to Channel A, RWCK_B belongs to channel B and so on. With a reference clock input of 156.25 MHz,
these clocks operate at 78.125 MHz.
RCK78:
These are muxed outputs of RWCKA[A:D] and RWCKB[B:D] respectively. With a reference clock input of 156.25
MHz, these clocks operate at 78.125 MHz.
RSYS_CLK_[1:2]
These clocks are inputs to the SERDES. These are used by each channel as the read clock to read received data
from the alignment FIFO within the SERDES. To guarantee that there is no overflow in the alignment FIFO, it is an
absolute requirement that the write and read clocks be frequency locked to 0 ppm. Examples of how to achieve this
are shown in the section on recommended board-level clocking.
TCK78:
This is a muxed output from the core to the FPGA across the core-FPGA interface of one of the four transmit SERDES clocks operating at up to 92.5 MHz in the SERDES.
TSYS_CLK[A:D]:
These clocks are inputs to the SERDES from the FPGA. These are used by each channel to control the timing of
the Transmit Data Path. To guarantee correct transmit operation, these clocks must be frequency locked within 0
ppm to TCK78.
List of Operating Modes SERDES
Transmit and Receive Clock Rates
Table 31 shows typical relationship between the data rates, the reference clock, the transmit TCK78 clock and the
receive RCK78 clock. The selection of full-rate or half-rate for a given reference clock speed is set by bits in the
transmit and receive control registers, and can be set on a per-channel basis.
Table 31. Transmit Data and Clock Rates
Reference Clock
TCK78[A: B] and
RCK78[A:B] Clocks
Rate of Channel
Selected as Clock
Source
0.6 Gbits/s
60 MHz
15 MHz
Half
1.0 Gbits/s
100 MHz
25 MHz
Half
1.25 Gbits/s
125 MHz
31.25 MHz
Half
2.0 Gbits/s
100 MHz
50 MHz
Full
Data Rate
2.5 Gbits/s
125 MHz
62.5 MHz
Full
3.125 Gbits/s
156 MHz
78 MHz
Full
3.7 Gbits/s
185 MHz
92.5 MHz
Full
Mixing Half-rate, Full-rate Modes
When channel alignment is enabled, all receive channels within an alignment group should be configured at the
same rate. For example, channels A and B, can be configured for twin alignment and full-rate mode, while channels
C and D can be configured for half-rate mode. In quad alignment mode, all four channels must be configured in
either half or full-rate mode. Register settings for multi-channel alignment are described in a later section.
Besides taking in a TSYS_CLK_x from the FPGA logic for each channel, the transmit path logic sends back a clock
of the same frequency, but arbitrary phase. This clock, TCK78, is derived from the MUX block of one of the 2 channels in its SERDES block. The MUX blocks provide the potential source for TCK78 by a divide-by-4 of the SERDES
STBC311xs clock used in synchronizing the transmit data words in the STBC311x clock domain. The STBC311x
clocks are internal to the core and are not brought across the core/FPGA interface
119
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The receiver section receives high-speed serial data at its differential CML input port and sends it in to the Clock
and Data Recovery (CDR) block. The CDR block then generates a recovered clock (RWCKx) and retimes the data.
Thus, the recovered receive clocks are asynchronous between channels.
Transmit Clock Source Selection
The TCKSEL[A:B] bit select the source channel of TCK78. The selection of the source for TCK78 is controlled by
this bit as shown in Table 32.
Table 32. TCK78 Source Selection
TCKSEL0
TCKSEL1
Clock Source
0
0
Channel A
1
0
Channel B
0
1
Channel C
1
1
Channel C
Recommended Transmit Clock Distribution for the ORSPI4
As an example of the recommended clock distribution approach, TSYS_CLK_[A:D] can be sourced by TCK78 as
shown in Figure 58 if the transmit line rate are common for all four channels in a quad.
Figure 58. Transmit Clocking for a Single Block
TCK78
Common Logic
2
REFCLK[P:N]
156.25 MHz
FPGA
Logic
TSYS_CLK_A
Channel A
TSYS_CLK_B
Channel B
TSYS_CLK_C
Channel C
TSYS_CLK_D
Channel D
Four Channels of
3.125 Gbits/s
Outgoing Serial Data
All Clocks at
78.125 MHz
If the transmit line rate is mixed between half and full rate among the channels, then the scheme shown in Figure
59 can be used. The figure shows TSYS_CLK_A and TSYS_CLK_B being sourced by TCK78 and TSYS_CLK_C
and TSYS_CLK_D being sourced by TCK78/2 (the division is done in FPGA logic). Similar clocking would be used
for Quad B.
120
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 59. Mixed Rate Transmit Clocking for a Single Block
50 MHz
TCK78
Channel A Selected as
Clock Source
2
Common Logic
REFCLK[P:N]
100 MHz
TSYS_CLK_A
FPGA
Logic
Channel A
TSYS_CLK_B
Channel B
TSYS_CLK_C
Channel C
Two Channels of
2.0 Gbits/s (Full-Rate)
Outgoing Serial Data
÷2
TSYS_CLK_D
Two Channels of
1.0 Gbits/s (Half-Rate)
Outgoing Serial Data
Channel D
25 MHz
Receive Clock Source Selection and Recommended Clock Distribution
In the receive path, one clock per bank of four channels, called RCK78, is sent to the FPGA logic. The control register bits RCKSEL[0:1] are used to select the clock source for these clocks. The selection of the source for RCK78
is controlled by these bits as shown in Table 33.
Table 33. RCK78 Source Selection
RCKSEL0
RCKSEL1
0
0
Channel A
Clock Source
1
0
Channel B
0
1
Channel C
1
1
Channel C
In the receive channel alignment bypass mode, the data and recovered clocks for the four channels are independent. The data for each channel are synchronized to the recovered clock from that channel.
121
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 60. Receive Clocking for a Single Quad
78.125 MHz
RCK78
Common Logic
2
REFCLK[P:N]
156.25 MHz
RWCKA
FPGA
Logic
Channel A
RSYS_CLK_1
RWCKB
Channel B
All Recovered
Clocks at
78.125 MHZ
RWCKC
Four Channels of
3.125 Gbits/s
Incoming Serial Data
Channel C
RWCKD
Channel D
RSYS_CLK_2
Figure 61. Receive Clocking for Mixed Line Rates
25 MHz
or 50 MHz
RCK78
Common Logic
Channel A
RSYS_CLK_1
RWCKB
Channel B
FPGA
Logic
RWCKC
Recovered
Clocks at
25 MHZ
REFCLK[P:N]
100 MHz
RWCKA
Recovered
Clocks at
50 MHZ
2
Channel C
RWCKD
Channel D
Two Channels of
2.0 Gbits/s (Full-Rate)
Incoming Serial Data
Two Channels of
1.0 Gbits/s (Half-Rate)
Incoming Serial Data
RSYS_CLK_2
Multichannel Alignment
The alignment FIFO allows the transfer of all data to the system clock. The Multi-Channel Alignment block (Figure
52) allows the system to be configured to allow the frame alignment of multiple, slightly varying, data streams. This
optional alignment ensures that matching SERDES streams will arrive at the FPGA in perfect data synchronization.
Each channel is provided with a 24 word x 36-bit FIFO. The FIFO can perform two tasks: (1) to change the clock
domain from receive clock to a clock on the FPGA side, and (2) to align the receive data over 2, 4, or 8 channels.
This FIFO allows a timing budget of +/- 230.4 ns that can be allocated to skew between the data lanes and for
transfer to the system clock. The input to the FIFO consists of 36-bits of demultiplexed data, RALIGN_x[3:0],
RWD_x[31:0], and RWBIT8_x[3:0].
The four RALIGN_x bits are control signals, and can be the alignment character detect signals, indicating the presence of a comma character in Fibre Channel mode and the /A/ character in XAUI mode. The other 32 RWD_x bits
are the 8-bit data bytes from the 8b/10b decoder. The alignment character, if present, is the MSB of the data. The
122
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
RWBIT8_x indicates the presence of a Km.n control character in the receive data byte. Only RWBIT8_x and
RWD_x inputs are stored in the FIFO. During alignment process, RALIGN[3]_x is used to synchronize multiple
channels.
If a channel is not in any alignment group, it will set the FIFO-write-address to the beginning of the FIFO, and will
set the FIFO-read-address to the middle of the FIFO, at the first assertion of RALIGN[3]_x after reset or after the
resync command.
The ORSPI4 has a total of four SERDES channels. The incoming data of these channels can be synchronized in
several ways or can be independent of one another. Two SERDES channels can be aligned together. Channel A
and B and/or channel C and D can form a pair as shown in Figure 62. Alternately, all four SERDES channels can
be aligned together to form a communication channel with a bandwidth of 10 Gbits/s as shown in Figure 63. Individual channels within an alignment group can be disabled (i.e., powered down) without disrupting other channels.
Figure 62. Twin Channel Alignment
Channel A
Channel A
Channel B
Channel B
Channel C
Channel C
Channel D
Channel D
Twin alignment of channels A and B
t1
t0
Twin alignment of channels C and D
Figure 63. Alignment of SERDES Quad (4-Channels)
Channel A
Channel A
Channel B
Channel B
Channel C
Channel C
Channel D
Channel D
Quad alignment of channels A. B, C and D
t0
For every alignment group, there are both an OVFL and an OOS status register bit. The OVFL bit is set when alignment FIFO overflow occurs. The OOS bit is flagged when the down counter in the synchronization algorithm has
reached a value of 0 and alignment characters from all channels within an alignment group have not been received.
XAUI Lane Alignment Function (Lane Deskew)
In XAUI mode, the receive section in each lane uses the /A/ code group to compensate for lane-to-lane skew. The
mechanism restores the timing relationship between the four lanes by lining up the /A/ characters into a column.
Figure 64 shows the alignment of four lanes based on /A/ character. A minimum spacing of 16 code-groups implies
that at least ± 80 bits of skew compensation capability should be provided, which the ORSPI4 significantly
exceeds.
123
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 64. Deskew Lanes by Aligning /A/ Columns
LANE 0
K
R
R
K
LANE 1
LANE 2
K
R
K
R
R
K
R
K
R
R
R
K
LANE 3
LANE 0
A
K
R
K
K
R
R
K
R
R
K
K
A
R
K
K
A
R
K
A
R
R
K
R
R
K
K
K
K
K
R
K
R
A
K
R
R
K
R
R
K
K
R
K
K
R
R
K
R
R
K
K
R
R
K
R
R
K
K
LANE 1
K
R
R
K
R
K
A
R
K
K
R
K
R
R
K
LANE 2
K
R
R
K
R
K
A
R
K
K
R
K
R
R
K
LANE 3
K
R
R
K
R
K
A
R
K
K
R
K
R
R
K
SERDES/FPGA Interface
This block provides the data formatting and receive data and clock signal transfers between the SERDES and the
FPGA Logic. There are also control and status registers in the FPGA portion of the chip, which contain bits to control the receive logic and to record status. These are described in later sections of this Data Sheet and communicate with the core using the System Bus.
The demultiplexed, receive word outputs to the FPGA are shown in Figure 52. These are each 40 bits wide. There
are four of these interfaces, one for each SERDES channel. Each consist of four groups of 10-bit data or four
groups of decoded information depending on setting of 8b10bR_x control register bits.
Each 10-bit group of decoded information includes 8 bits of data and a one-bit K_CTRL indicator derived from the
received data, and a tenth bit of status information. The function of the tenth bit varies from group to group and
includes code violation, out of synchronization (OOS) indicators and the CH248_SYNC_x status bit.
CH248_SYNC_x indicates the status of multi-channel alignment of channel x and is high when the count for the
multi-channel alignment block reaches zero, regardless of whether or not multi-channel alignment is successful.
The mapping of the 10-bit groups to the MRWD_x[39:0] bits output to the FPGA logic is summarized in Table 34
and Table 35. The various functions of the bits that vary from channel to channel, i.e., bits 29 and 19, are also
described in Table 35.
Table 34. Definition of Bits of MRWDx[39:0]
8b10bR=0
8b10bR=1
Bit Index
NOCHALGN[A:B]=1
CV_SELx=0
NOCHALGN[A:B]=1
CV_SELx=1
39
bit 9 of 10-bit data 3
CV_A3, code violation, byte 3
CH24_SYNCx
38
bit 8 of 10-bit data 3
K_CTRL for byte 3
K_CTRL for byte 3
37
bit 7 of 10-bit data 3
bit 7 of byte3
bit 7 of byte3
36
bit 6 of 10-bit data 3
bit 6 of byte 3
bit 6 of byte 3
35
bit 5 of 10-bit data 3
bit 5 of byte 3
bit 5 of byte 3
34
bit 4 of 10-bit data 3
bit 4 of byte 3
bit 4 of byte 3
33
bit 3 of 10-bit data 3
bit 3 of byte 3
bit 3 of byte 3
32
bit 2 of 10-bit data 3
bit 2 of byte 3
bit 2 of byte 3
31
bit 1 of 10-bit data 3
bit 1 of byte 3
bit 1 of byte 3
30
bit 0 of 10-bit data 3
bit 0 of byte 3
bit 0 of byte 3
29
bit 9 of 10-bit data 2
CV_A2, code violation, byte 2
See Table 35
28
bit 8 of 10-bit data 2
K_CTRL for byte 2
K_CTRL for byte 2
27
bit 7 of 10-bit data 2
bit 7 of byte 2
bit 7 of byte 2
26
bit 6 of 10-bit data 2
bit 6 of byte 2
bit 6 of byte 2
124
NOCHALGN[A:B]=0
CV_SELx=1
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
8b10bR=0
8b10bR=1
Bit Index
NOCHALGN[A:B]=1
CV_SELx=0
NOCHALGN[A:B]=1
CV_SELx=1
NOCHALGN[A:B]=0
CV_SELx=1
25
bit 5 of 10-bit data 2
bit 5 of byte 2
bit 5 of byte 2
24
bit 4 of 10-bit data 2
bit 4 of byte 2
bit 4 of byte 2
23
bit 3 of 10-bit data 2
bit 3 of byte 2
bit 3 of byte 2
22
bit 2 of 10-bit data 2
bit 2 of byte 2
bit 2 of byte 2
21
bit 1of 10-bit data 2
bit 1 of byte 2
bit 1 of byte 2
20
bit 0 of 10-bit data 2
bit 0 of byte 2
bit 0 of byte 2
19
bit 9 of 10-bit data 1
CV_A1, code violation, byte 1
See Table 35
18
bit 8 of 10-bit data 1
K_CTRL for byte 1
K_CTRL for byte 1
17
bit 7 of 10-bit data 1
bit 7 of byte 1
bit 7 of byte 1
16
bit 6 of 10-bit data 1
bit 6 of byte 1
bit 6 of byte 1
15
bit 5 of 10-bit data 1
bit 5 of byte 1
bit 5 of byte 1
14
bit 4 of 10-bit data 1
bit 4 of byte 1
bit 4 of byte 1
13
bit 3 of 10-bit data 1
bit 3 of byte 1
bit 3 of byte 1
12
bit 2 of 10-bit data 1
bit 2 of byte 1
bit 2 of byte 1
11
bit 1 of 10-bit data 1
bit 1 of byte 1
bit 1 of byte 1
10
bit 0 of 10-bit data 1
bit 0 of byte 1
bit 0 of byte 1
09
bit 9 of 10-bit data 0
CV_A0, code violation, byte 1
VL (connected to ground)
08
bit 8 of 10-bit data 0
K_CTRL for byte 0
K_CTRL for byte 0
07
bit 7 of 10-bit data 0
bit 7 of byte 0
bit 7 of byte 0
06
bit 6 of 10-bit data 0
bit 6 of byte 0
bit 6 of byte 0
05
bit 5 of 10-bit data 0
bit 5 of byte 0
bit 5 of byte 0
04
bit 4 of 10-bit data 0
bit 4 of byte 0
bit 4 of byte 0
03
bit 3 of 10-bit data 0
bit 3 of byte 0
bit 3 of byte 0
02
bit 2 of 10-bit data 0
bit 2 of byte 0
bit 2 of byte 0
01
bit 1 of 10-bit data 0
bit 1 of byte 0
bit 1 of byte 0
00
bit 0 of 10-bit data 0
bit 0 of byte 0
bit 0 of byte 0
Table 35. Definition of the Status Bits of MRWDx that Vary for Different Channels
Channel
Index
Bit Index
Name
all
39
CH24_SYNCx
A
29
CV_A_OR
A
19
SYNC2_1_OOS
B
29
CV_B_OR
B
19
SYNC4_OOS
C
29
CV_C_OR
C
19
SYNC2_2_OOS
D
29
CV_AD_OR
Description
Multi-channel alignment attempt complete if 1
Code violation in one or more of the received 10-bit groups for channel A
Dual channel synchronization of channels A and B not successful if 1
Code violation in one or more of the received 10-bit groups for channel B
Quad channel synchronization of SERDES not successful if 1
Code violation in one or more of the received 10-bit groups for channel C
Dual channel synchronization of channels C and D not successful if 1
Code violation in one or more of the received 10-bit groups for channel D
The code violation signals will only be valid if the corresponding CV_SELx = “1”. (If 8b10bR=0, CV_SEL should
also be zero. The CV_x_OR signals are obtained by ORing four code violation signals from the 1:4 DEMUX block.
These are primarily indicators of received signal quality, since a single code violation will not force a loss of sync
125
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
(LOS) state in the word alignment state machines. Since these signals come from the DEMUX block, if multi-channel alignment is enabled, the code violation signals correspond to data that must still be multi-channel aligned.
Hence these signals provide advance notification of detected violations in data that will appear at the core/FPGA
interface several clock cycles later. The exact number of clock cycles that the data is delayed depends on the skew
between the incoming data for the different channels.
Multi-Channel Alignment Clocking Strategies for the ORSPI4
The data on the four channels SERDES can be independent of each other or can be synchronized in several ways.
For example, two channels within the SERDES can be aligned together; channel A and B and/or channel C and D.
Alternatively, all four channels in a SERDES quad can be aligned together to form a communication channel with a
bandwidth of 10 Gbits/s. Individual channels within an alignment group can be disabled (i.e., powered down) without disrupting other channels. Clocking strategies for these various modes are described in the following paragraphs.
For dual alignment, both twins within a quad can be sourced by clocks that are different from the other channels,
however each pair of SERDES must have the same clock. The channel pair A and B is driven on the low-speed
side by RSYS_CLK_1 and the channel pair C and D are driven on the low-speed side by RSYS_CLK_2. Either
RWCKA or RWCAB can be connected to RSYS_CLK_1, and either RWCKC or RWCKD can be connected to
RSYS_CLK_2. A clocking example for dual alignment is shown in Figure 65.
Figure 65. Receive Clocking for a Dual Alignment in a Single Quad
FPGA
Logic
RCK78
TCK78
Common Logic
RWCKA
RSYS_CLK_1
TSYS_CLK_A
Channel A
2
REFCLK[P:N]
156.25 MHz
RWCKB
Channel B
Two Bidirectional Channels
of 3.125 Gbits/s
Serial Data
TSYS_CLK_B
RWCKC
Channel C
TSYS_CLK_C
RWCKD
RSYS_CLK_2
Channel D
TSYS_CLK_D
All Clocks at
78.125 MHZ
126
Two Bidirectional Channels
of 3.125 Gbits/s
Serial Data
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
For receive quad alignment, RSYS_CLK_1 and RSYS_CLK_2 can be tied together as shown in Figure 66.
Figure 66. Clocking for a Quad Receive Clocking for a Dual Alignment in a Single Quad
FPGA
Logic
RCK78
TCK78
Common Logic
RWCKA
RSYS_CLK_1
TSYS_CLK_A
Channel A
2
REFCLK[P:N]
156.25 MHz
RWCKB
Channel B
Four Bidirectional Channels
of 3.125 Gbits/s
Serial Data
TSYS_CLK_B
RWCKC
Channel C
TSYS_CLK_C
RWCKD
RSYS_CLK_2
Channel D
TSYS_CLK_D
All Clocks at
78.125 MHZ
Multi-channel Alignment Configuration
Register settings for multi-channel alignment are shown in Table 36.
Table 36. Multi-Channel Alignment Modes
Register Bits
FMPU_SYNCMODE_xx[0:1]
Mode
00
No multi-channel alignment
10
Twin channel alignment
01
Quad channel alignment
To align all 4 channels:
• FMPU_SYNMODE_[A:D] = 01
• FMPU_SYNMODE_B[A:D] = 11
To align two channels:
• FMPU_SYNMODE_[A:B] = 10 for channel A and B
• FMPU_SYNMODE_[C:D] = 10 for channel C and D
To enable/disable synchronization signal of individual channel within a multi-channel alignment group:
• FMPU_STR_EN_x = “1” enabled
• FMPU_STR_EN_x = “0” disabled where x is one of [A:D].
To resynchronize a multi-channel alignment group set the following bit to zero, and then set it to one:
• FMPU_RESYNC4 for quad [A:D]
• FMPU_RESYNC2_1 for twin channel [A:B]
127
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• FMPU_RESYNC2_2 for twin channel [C:D]
To resynchronize an independent channel (resetting the write and the read pointer of the FIFO) set the following
bit to zero, and then set it to one:
• FMPU_RESYNC1_x
SERDES Multi-Channel Alignment Sequence
1. Follow steps 1 and 2 in the start up sequence described in a later section.
2. Initiate a SERDES software reset by setting the SWRST bit to “1” and then to “0”. Note that, any changes to the
SERDES configuration bits should be followed by a software reset.
3. Wait for 3 ms. REFCLK should be toggling by this time. During this time, configure the following registers.
Set the following bit in register 30820
– XAUI_MODE_x - set to “1” for XAUI mode or keep the default value of 0 if the Fibre Channel state machine
was selected.
– Enable channel alignment by setting FMPU_SYNMODE bits in registers 30811
– FMPU_SYNMODE_x. Set to appropriate values for 2, or 4 alignment based on Table 36.
– Set RCLKSEL and TCKSEL bits in registers 30821.
– RCKSEL - Choose clock source for 78 MHz RCK78 (Table 33).
– TCKSEL - Choose clock source for 78 MHz TCK78 (Table 32). Send data on serial links.
Monitor the following status/alarm bits:
– Monitor the following alarm bits in registers 30000, 30010, 30020, 30030,.
– LKI-PLL_x lock indicator. A “1” indicates that PLL has achieved lock.
Monitor the following status bits in registers 30804:
– XAUISTAT_x - In XAUI mode, they should be 10.
– Monitor the following status bits in registers 30805
– DEMUXWAS_x - They should be “1” indicating word alignment is achieved.
– CH248_SYNCx - They should be “1” indicating channel alignment. This is cleared by resync.
4. Write a “1” to the appropriate resync register 30820. Note that this assumes that the previous value of the
resync bits are “0”. The resync operation requires a rising edge. Two writes are required to the resync bits: write
a “0” and then write a “1”. It is highly recommended to precede a resync with a word alignment, especially in situations where a disturbance in the receive SERDES path can cause misalignment of data and OOS indications without bringing the FC/XAUI state machine to a loss of sync state. A word alignment is achieved by
writing a “0” and then a “1” to the appropriate DOWDALIGNx bits in registers 30810.
128
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Clocking Schemes and Timing Diagrams- SERDES
Figure 67 shows a timing diagram for the transmit section of the SERDES interface. Setup and Hold numbers at
the interface are also show.
Similar timing diagrams are also shown for the receive SERDES interface section in both channel alignment mode
(Figure 68), and channel bypass mode (Figure 69).
SERDES Align Mode Interface
Figure 67. Data: TBIT9[A:D][3:0], TCOMMA[A:D][3:0], TWD[A:D][31:0]
Clock: TSYS_CLK[A:D]
2.5 / 1.3 ns
3.5/0.5 ns
D
Q
1.5/0.5 ns
D
Delay
Clock Buffer Delay
Relative to Data
C
Delay
1.1/ 0.18 ns
FPGA
Clock
Tree
Setup = 1.5 ns
Hold = - 0.8 ns
3.0ns
TCK78
FPGA
÷4
78 MHz
SERDES_CLK
311 MHZ
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
129
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES Receive Interface in Channel Alignment Mode
Figure 68. Data: MRWD[A:D][39:0]
Clock: RSYS_CLK_1, RSYS_CLK_2
Total prop = 3.6 / 0.75 ns
2.2 / 0.51ns
(includes ck to Q)
Q
3.5/0.5 ns
D
D
Delay
Clock Buffer Delay
Relative to Data
1.5/0.5 ns
C
Delay
1.41/ 0.20 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
130
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES Receive Interface in Channel Bypass Mode
Figure 69. Data: MRWD[A:D][39:0]
Clock: RWCK[A:D]
Total prop = 3.4 / 0.85 ns
2.5 / 0.7 ns
Q
D
Delay
RECOVERED
_SERDES_CLK
1.4/ 0.4 ns
311MHz
Delay
÷4
C RWCK[A:D]
RCK78[A:D]
FPGA
Delay
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
Test Modes
In addition to the operational logic described in the preceding sections, the SERDES contains logic to support various test modes - both for device validation and evaluation and for operating system level tests. The following sections discuss two of the test support logic blocks, supporting various loopback modes, in addition to SERDES
characterization pins.
Loopback Testing
Loopback testing is performed by looping back (either internal to the SERDES, by configuring the FPGA logic or by
external connections) transmitted data to the corresponding receiver inputs, or received data to the transmitter output. The loopback path may be either serial or parallel.
In general, loopback tests can be classified as “near end” or “far end”. In “near end” loopback (Figure 70(a)), data is
generated and checked locally, i.e. by logic on, or connection of, test equipment to the same card as the FPSC. In
“far end” loopback (Figure 70(b)), the generating and checking functions are performed remotely, either by test
equipment or a remote system card.
131
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 70. “Near End” vs. “Far End” Loopback. (NOTE: xx = A, B, C, or D)
Device Under Test (DUT)
Embedded Core
FPGA Logic
Data
Checking
m
40
MRWDxx[39:0]
Test Equipment
or Logic on Local
System Card
CML
Buffer
HDIN[P:N]_xx
2
Non-Functional
Receive
Data
Generation
n
32
TWDxx[31:0]
TCOMMAxx[3:0]
TBIT9xx[3:0]
CML
Buffer
4
4
Transmit
(a) “Near End” Loopback
High Speed
Serial Loopback
Connection
HDOUT[P:N]_xx
2
Active
(to Eye Diagram
Measurement or
remote System
Card)
Device Under Test (DUT)
Embedded Core
FPGA Logic
m
Active
(to Logic on
Local System
Card)
DE
MUX
TWDxx[31:0]
TCOMMAxx[3:0]
TBIT9xx[3:0]
32
HDIN[P:N]_xx
2
8B/10B SERDES CML
Buffer
Receive
n
Non-Functional
40
MRWDxx[39:0]
SERDES Block
Data
Generation
HDOUT[P:N]_xx
8B/10B
4
SERDES
CML
Buffer
2
Test Equipment
or Logic Remote
System Card
Data
Checking
4
Transmit
Parallel
Loopback
Connection
(b) “Far End” Loopback
The loopback mode can also be characterized by the physical location of the loopback connection. There are two
possible loopback modes supported by the SERDES logic:
• High-speed serial loopback at the CML buffer interface (near end)
• Parallel loopback at the SERDES boundary (far end)
These two loopback modes are described in more detail in the following sections. As noted earlier, other specialized loopback modes can be obtained by configuration of the FPGA logic or by connections external to the FPSC.
High-Speed Serial Loopback at the CML Buffer Interface
The high-speed serial loopback mode has the serial transmit signals looped back internally to the serial receive circuitry. The internal loopback path is from the input connection to the transmit CML buffer to the output connection
from the receive CML buffer. The data are sourced on the TWDx[31:0], TCOMMAx[3:0] and TBIT9x[3:0] signal lines
and received on the MRWDx[39:0] signal lines. The serial loopback path does not include the high-speed input and
output buffers. If TESTEN_x is set, the HDOUTP_x and HDOUTN_x outputs are active in this mode while the CML
input buffers are powered down. The device is otherwise in its normal mode of operation. This mode is normally
used for tests where the data source and destination are on the same card and is the basic loopback path shown in
Table 37.
The data rate selection bits, TXHR and RXHR, in the channel configuration registers must be configured to carry
the same value. Table 37 summarize the settings of the control interface register configuration bits for high-speed
serial loopback.
132
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 37. High-Speed Serial Loopback Configuration Bit Definitions for the SERDES
Register
Address
30002, 30012,
30022, 30032
30801
Bit Value
Bit Name
Comments
Bit 0 = 0 or 1
TXHR
Set to “0” or “1”.
TXHR and RXHR bits must be set to the same value.
Bit 7 = 0 or 1
8B10BT
Set to “0” or “1”. If set to “0”, the 8b/10b encoder is excluded from
the loopback path. The 8b/10b encoder and decoder selection control bits must both be set to the same value.
Bit 0 = 1 (Channel A)
Bit 1 = 1 (Channel B)
Bit 2 = 1 (Channel C)
Bit 3 = 1 (Channel D)
LOOPENB_xx Set any of the bits 0-3 to “1” to do serial loopback on the corresponding channel.* The high-speed serial outputs will not be active.
*This test mode can also be set using TESTEN_xx in place of LOOPENB_xx. In that case, Test Mode must be set to 00000.
Parallel Loopback at the SERDES Boundary
In this parallel loopback, differential data are received at the HDINP_x and HDINN_x pins and are retransmitted at
the HDOUTP_x and HDOUTN_x pins. The loopback path is at the interface between the SERDES blocks and the
MUX and DEMUX blocks and uses the parallel 10-bit buses at these interfaces (see Figure 70b). The loopback
connection is made such that the input signals to the TX SERDES block is the same as the output signals from the
RX SERDES block. In this parallel loopback mode, the MRWDx[39:0] signal lines remain active and the
TWDx[31:0], TCOMMAx[3:0] and TBIT9x[3:0] signal lines are not used. This mode is normally used for tests where
serial test data is received from and transmitted to either test equipment or via a serial backplane to a remote card
and is the basic loopback path shown earlier in Figure 70(b). The data rate selection bits TXHR and RXHR in the
channel configuration registers must be configured to carry the same value. Also, the 8b/10b encoder and decoder
are excluded from the loopback path by setting the 8b10bT and 8b10bR configuration bits to “0”. Table 38 illustrates the control interface register configuration for the parallel loopback.
Table 38. Parallel Loopback at the SERDES Boundary Configuration Bit Definitions for the SERDES
Register
Address (Hex)
30002, 30012,
30022, 30032
Bit Value
Bit Name
Comments
Bit 0 = 0 or 1
TXHR
Set to “0” or “1”. TXHR and RXHR bits must be set to the same
value.
Bit 7 = 0
8b10bT
Set to “0” The 8b/10b encoder is excluded from the loopback path.
The 8b/10b encoder and decoder selection control bits must both be
set to “0”.
Bit 0 = 0 or 1
RXHR
Set to “0” or “1”. TXHR and RXHR bits must be set to the same
value.
Bit 3 = 0
8b10bR
Set to “0”. The 8b/10b decoder is excluded from the loopback path.
The 8b/10b encoder and decoder selection control bits must both be
set to “0”.
30005
Bit 7 = 1
GTESTEN
SET to “1” if the loopback is done globally on all four channels.
30006, 30016,
30026, 30036
Bits[4:0]
Testmode
Set to 00001
30003, 30013,
30023, 30033
SERDES Characterization Test Mode
The SERDES characterization mode is a test mode that allows for direct control and observation of the transmit
and receive SERDES interfaces at chip ports. With these modes the SERDES logic and I/O can be tested one
channel at a time in either the receive or transmit modes.
The SERDES test mode requires that the SERDES block be selected instead of the SPIB block during the Module
Generation phase of the ORSPI4 in ispLEVER. In addition, the TESTMD[1:0]N signals need to be set to “0” during
SERDES characterization.
133
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The SERDES characterization test mode is configured by setting bits in the control registers via the system bus.
The transmit characterization test mode is entered when SCHAR_ENA= “1” (address 30830, bit 4) and
SCHAR_TXSEL= “1” (address 30830, bit 5). Entering this mode will cause chip port inputs to directly control the
SERDES low-speed transmit ports of one of the channels as shown in Table 39.
Table 39. SERDES Transmit Characterization Mode
Required Inputs
Inputs Used During Mode
TESTMD[1:0]N=00,
SCHAR_EN=1,
SCHAR_TXSEL=1
TBCx (transmit) ← PMIA15
LDIN9x ← PMIA14
LDIN8x ← PMIA13
LDIN7x ← PMIA11
LDIN6x ← PMIA9
LDIN5x ← PMAI8
LDIN4x ← PMIA7
LDIN3x ← PMIA6
LDIN2x ← PMIA5
LDIN1x ← PMIA4
LDIN0x ← PMIA2
The x in the table represents a single channel in the SERDES QUAD, selected by the SCHAR_CHAN control bits
(address 30830, bits 6 and 7). The decoding of SCHAR_CHAN is shown in Table 40.
Table 40. Decoding of SCHAR_CHAN
SCHAR_CHAN0
SCHAR_CHAN1
Channel
0
0
A
1
0
B
0
1
C
1
1
D
The receive characterization test mode is entered as long as TESTMD[1:0]N = 00. In this mode, one of the channels of SERDES outputs is observed at chip ports as shown in Table 41. The channel that is observed is also
based on the decoding of SCHAR_CHAN as shown in Table 40. The receive characterization pins can be observed
independently, whether the transmit characterization pins are enabled or not.
Table 41. SERDES Receive Characterization Mode
Required Inputs
Outputs Used During Mode
TESTMD[1:0]N=00
TBC311 → PMID20
CV → PMID21
BYTSYNC→ PMID22
WDSYNC → PMID23
RBCO → PMID24
RBC1 → PMID25
LDOUT9 → PMID26
LDOUT8 → PMID 27
LDOUT7 → PMID28
LDOUT6 → PMID29
LDOUT5 → PMID30
LDOUT4 → PMID31
LDOUT3 → PMID32
LDOUT2 → PMID33
LDOUT1 → PMID34
LDOUT0 → PMID35
134
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Memory Controller Functional Description
The ORSPI4 device includes a Memory Controller interface to an external second generation Quad Data Rate
(QDRII) memory. This is provided for additional data buffering beyond the embedded DPRAMs. In this case, the
embedded DPRAMs are used as clock-crossing domain FIFOs. The key requirement for this memory interface is
the support of a throughput of greater than 20 Gbits/s so that all the data received on the SPI4 interface at 10
Gbits/s can be buffered. A QDRII SRAM supports this throughput with 32 unidirectional data lines. A 36-bit interface is provided to allow for parity or control bits to be added.
The controller block provides the ability to access an external QDRII SRAM through the FPGA. A set of 72 input
data and 72 output data signals are available across the core-FPGA interface. Of the 72 signals, eight can be used
either for parity or for data. The core passes the data transparently to and from the QDRII SRAM in two-word or
four-word bursts. The data interfaces to memory are 36 bits wide and the address bus is 18 bits wide. This supports
the interfaces required for a 512K x 36 bit (18 Mbit) QDRII SRAM.
The basic blocks of the Memory Controller are:
• FIFOs for Write Data and Instructions
• FIFOs for Read Data and Instructions
• Read and Write Controllers (including FIFO and memory interface state machines)
• Address Multiplexer (MUX)
• Write Data DEMUX and Read Data Capture/MUX Blocks
A logical block diagram of the Memory Controller is shown in Figure 71. Details of the individual blocks are outlined
in the following sections. The blocks are described in sequence for a write from the FPGA and a subsequent read
to the FPGA.
Figure 71. ORSPI4 QDRII Memory Controller Block Diagram.
ORSPI4
Device
FPGA
Logic
External
Memory
ORSPI4 QDR II Core
MCREFCLK
ATREFCLK
BTREFCLK
F_MC_REFCLK
QDRII
SDRAM
PLL
Clock
Select
#1
Clock Select
#2
COUT = CIN * N/M
PMIK
K
COUT = CIN / 2
MC_SYSCLK
F_MC_WD
74
74
Full
MC_WDFIFO_FULL
WE
F_MC_WDFIFO_WE
Write Data
FIFO
72
2
Empty
RE
Write Data
Demux
Enable
RST
F_MC_WI
MC_WIFIFO_FULL
32
Full
WE
F_MC_WIFIFO_WE
Write Instruction
FIFO
Empty
RE
Write
Controller
32
32
Full
MC_RIFIFO_FULL
F_MC_RIFIFO_WE
WE
Read Instruction
FIFO
MC_RD
MC_RDFIFO_EMPTY
32
Empty
RE
Read Clock
F_MC_RDFIFO_RE
72
Empty
RE
Read Data
FIFO
Write Enable
PMIWN
W#
Enable
RST
RST
F_MC_RCLK
D
18
RST
F_MC_RI
36
RST
Write Clock
F_MC_WCLK
PMID
Address
Mux
PMIA
18
SA
18
Read
Controller
Full
WE
RST
72
RST
RST
Read Enable
PMIRN
Read Data
Mux/
Capture
RST
FPGA_RESET_MC
135
PMIQ
PMIC
R#
36
Q
CQ
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
FPGA/Memory Controller Core Interface Description
Table 42 lists the signals at the FPGA/Core interface for the Memory Controller block.
Table 42. FPGA/Embedded Core Signals
Signal
Direction
From /To
Description
QDRII SRAM Read/Write Control
F_MC_WD[73:0]
FPGA → Core Write data to Memory Controller Write Data FIFO
F_MC_WI[31:0]
FPGA → Core Write instruction to Memory Controller Read Instruction FIFO
MC_RD[71:0]
Core → FPGA Read data from Memory Controller Read Data FIFO
F_MC_RI[31:0]
FPGA → Core Read instruction to Memory Controller Write Instruction FIFO
MC_WDFIFO_FULL
Core → FPGA
Full flag from MC Write data FIFO. Full threshold is set by the
MC_FULL_THRESHOLD register bits.
MC_WIFIFO_FULL
Core → FPGA
Full flag from MC Write instruction FIFO. MC_WIFIFO_FULL high indicates
that only one more instruction can be written to the instruction FIFO.
MC_RDFIFO_EMPTY
Core → FPGA
Empty flag from MC Read data FIFO. Empty threshold is set by the
MC_EMPTY_THRESHOLD register bits.
MC_RIFIFO_FULL
Core → FPGA
Full flag from MC Read instruction FIFO. MC_RDFIFO_FULL HIGH indicates
that only one more instruction can be written to the instruction FIFO.
F_FMC_WDFIFO_WE
FPGA → Core Write enable to Write Data FIFO
F_FMC_WIFIFO_WE
FPGA → Core Write enable to Write Instruction FIFO
F_FMC_RDFIFO_RE
FPGA → Core Read enable to Read data FIFO
F_FMC_RIFIFO_WE
FPGA → Core Write enable to Read Instruction FIFO
F_MC_WCLK
FPGA → Core Memory Controller Write clock
F_MC_RCLK
FPGA → Core Memory Controller Read clock
MC_SYSCLK
Core → FPGA Internal system clock for the Memory Controller i/f
F_MC_REFCLK
FPGA → Core Memory Controller Reference clock
FPGA_RESET_MC
FPGA → Core Memory Controller Asynchronous Soft Reset
Memory Controller - Detailed Description
Write Data and Instruction FIFOs
The Write Data FIFO (WDFIFO) stores data written into it by logic in the FPGA. The configuration is 64 by 74 bits.
Read/write pointers and fill-level logic is included. The FIFOs also function as an asynchronous clock domain
boundary between the FPGA generated write clock and the Memory Controller (MC) system clock (MC_SYSCLK).
Writes from the FPGA that are asynchronous to the memory clock (K, K#) are allowed. It is also possible to run the
FIFO in synchronous mode by looping back the 1x clock via the FPGA to the FIFO write clock (MC_WCLK).
A set of 72 data signals is available across the core-FPGA interface. Of the 72, eight signals can be either used for
parity or data. The core, however, passes the data transparently to the QDRII SRAM. Data length is specified in
terms of FIFO lines. If data length is > 64 FIFO lines, then the user must segment the data.
The Write Instruction FIFO (WIFIFO) is configured 4 by 32 bits respectively, in order to store up to 4 instructions
that are written to the MC by logic in the FPGA. The instruction fields are ID (data/address coherency), data length
(number of cache lines) and address (for QDR memory). Write instruction and data word formats are shown in Figure 72.
136
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 72. Write Data and Instruction Word Formats
Write Instruction Word
31
30
Reserved
29
28
ID bits
27
24 23
Reserved
18
17
Data length
0
Address
Write Data Word
73
72
71
ID bits
0
Write Data
The user starts a write cycle by writing data to the WDFIFO. The maximum data length is 63 lines deep and the
minimum is one 72-bit data word (or one line). The user provides the instruction word associated with a data string
during the write period for the last word of the data. This sequence can continue to repeat as long as the
MC_WxFIFO_FULL flags from the embedded core remain inactive. Once the MC_WIFIFO_FULL flag is asserted,
the user may send data words to the WDFIFO locations (assuming the MC_WDFIFO_FULL flag has not been
asserted) and write one last instruction word to the instruction FIFO as the last data word is written into the data
FIFO.
The timing diagram for the write interface for a typical write sequence is shown in Figure 73. The write sequence in
this case consists of writing 32 words to location A0 followed by one word each to locations A1, A2, A3 and A4. The
MC_WIFIFO_FULL is asserted after the instruction for location A2 has been written, indicating that only one more
instruction may be written to the instruction FIFO. The write to location A4 cannot occur until the
MC_WIFIFO_FULL flag is deasserted. The MC_WDFIFO_FULL flag remains low in this case since the full threshold for the data FIFO has not been reached
Figure 73. ORSPI4 Memory Controller Interface to FPGA — Write Timing Diagram
F_MC_WCLK
F_MC_WDFIFO_WE
00
01
10
11
00
D0-31
D1-0
D2-0
D3-0
D4-0
F_MC_WI(25:24)
00
01
10
11
00
F_MC_WI(23:18)
D*32
D*1
D*1
D*1
D*1
F_MC_WI(17:0)
A0
A1
A2
A3
A4
F_MC_WD(73:72)
F_MC_WD(71:0)
D0-0
...
F_MC_WIFIFO_WE
MC_WIFIFO_FULL
In the first clock cycle, the first word of the data burst is written along with the ID bit value of 00. The instruction
word is updated on the last word of a data burst and contains the ID bit value, address and length of the data burst.
The maximum burst length is set by the depth of the data FIFO, which is 64 FIFO lines. The data length in the
137
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
instruction word is provided in terms of FIFO lines. Data length for data associated with A0 is shown to be 32 lines.
The maximum burst length is set by the depth of the data FIFO which is 64 FIFO lines.
Data is presented as 9 bytes in every MC_WCLK cycle. A new data word always begins at bit position 71 and has
a unique 2-bit ID. The transition from one ID value to another indicates the start of a new data burst as shown in
Figure 72. For each burst, the values of the ID fields in the data word and the instruction word are compared.
The write controller first waits for the empty flag from the instruction FIFO to be deasserted and processes the first
pending instruction. The core reads the instruction word first. Based on the data length, the core starts to read the
appropriate amount of data from the data FIFO. The address and data length are passed to the write controller
state machine. After the last data word has been read from the data FIFO, the core increments the instruction FIFO
address to the next pending instruction.
The 2-bit ID field in each data word is compared to the 2-bit ID field in the processed instruction to maintain
data/instruction coherency. If the ID fields in the data and instruction words do not match, an error is sent to a software register bit. It is the responsibility of the FPGA to provide the exact amount of data specified in the data length
field of the instruction word.
A programmable FIFO full flag (MC_WDFIFO_FULL) is available to the FPGA for the data FIFO. The FIFO flag
threshold is set by the 4-bit software register field MC_FULL_THRESHOLD. If the MC_WDFIFO_FULL flag is programmed to indicate a truly full condition, the FPGA logic must assure that the FIFO does not overrun and that an
instruction word is written in parallel with the final data word of a sequence.
Address Multiplexer (MUX)
Address information to the QDRII SRAM is multiplexed between the write port and the read port. This is possible
since data is always transferred in two-word or four-word bursts (word is 36-bits). Logic in the SRAM supplies the
address least significant bits for the two-word burst case and the lower two LSbs in the case of four-word bursts. It
is however, necessary to make sure read and write addresses do not contend for the address bus. This function is
performed by the Address MUX logic based on signals from the Memory Read Controller (MRC) and Memory
Write Controller (MWC).
Figure 74 and Figure 75 show the timing of signals at the QDRII SRAM interface for two-word and four-word reads
and writes. The burst size is selectable through the field MC_BURST_MODE in the configuration registers
30B03[0]. Write data is sent on the first rising edge of the positive clock signal (K), after the write address is provided. Read data is returned on the second rising edge of K, after the read address is provided. If a sequence of
read and write addresses is sent, both read data and write data are available simultaneously. It is this feature that
gives the QDRII SRAM its high throughput.
Note: Except for one address signal, there is no requirement that PMIA address signals be connected to a particular address input on the QDRII SRAM, since writes and reads share the one and only address bus. The only exception is PMIA17, which is only used in 2-word mode, and thus must be connected to the corresponding QDRII
SRAM address input that is only present on the 2-word device (if 2-word/4-word compatibility is to be maintained).
Flexibility in assigning these signals can be useful in optimizing the layout of this bus.
138
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 74. .ORSPI4 Memory Controller Interface to QDRII: 4-Word Burst Mode
K
K#
R#
R1
R2
W1
W#
R1
SA
W2
W1
R2
W2
D
W1a
W1b
W1c
W1d
W2a
W2b
W2c
W2d
Q
R1a
R1b
R1c
R1d
R2a
R2b
R2c
R2d
Figure 75 shows the timing of signals at the QDRII SRAM interface for two-word reads and writes. In this case,
address data is sent on both the rising and falling edges of the positive clock signal. Write data is sent on the first
rising edge of K before the write address and second data word are provided on the falling edge. As in the fourword case, read data is returned on the second rising edge of K after the read address is provided (on a rising
edge of the positive clock).
Figure 75. ORSPI4 Memory Controller Interface to QDRII: 2-Word Burst Mode
K
K#
R#
R1
R2
R3
R4
W#
W1
W2
W3
W4
SA
D
Q
R1
W1
R2
W2
R3
W3
R4
W4
W1a
W1b
W2a
W2b
W3a
W3b
W4a
W4b
R1a
R1b
R2a
R2b
139
R3a
R3b
R4a
R4b
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Write Controller and Write Data DEMUX
The write timing shown in Figure 74 and Figure 75 is generated by the Memory Write Controller (MWC) logic based
on instruction and status signals from the write FIFOs and synchronization information from the Memory Read
Controller (MRC). The MWC has two functions. First it will read the instruction words from the instruction FIFO and
separate the bit fields into address, ID and Data length. Then it will generate write cycle timing based on the type of
memory configured (2 or 4 word burst).
The MWC will also do data/instruction data coherency (ID) checking and generate an error (output
MC_ID_STATUS) if the test fails. The write controllers run at 2x the clock rate (MCLCKx2) in order to generate the
QDRII SRAM data and address timing correctly in relation to the differential memory clock (K, K#). The MWC must
also arbitrate with the MRC to ensure that there is no contention between SRAM read and write cycles, as discussed in the previous section.
The MWC generates enables to initiate burst writes. Separate read and write address counters are required and
are loaded by the controllers with the content of the address field in the instruction word. In order to support 512k x
36 RAM in 2-word burst mode, 18 active address lines are required, whereas in 4-word burst mode, 17 are
required. Data to the QDRII SRAM must also be demultiplexed (DEMUX) by the Write Data DEMUX block in order
to convert from the MC internal format of 72 bit buses to the 36-bit DDR format for the QDR SRAM.
Read Data Capture, MUX and Read Controller
The read timing shown in Figure 74 and Figure 75 is generated by the Memory Read Controller (MRC) logic, based
on information from the read instruction FIFO. The MRC has two functions. First it will read the instruction words
from the instruction FIFO and separate the bit fields into address and data length information. Then it will generate
read cycle timing, based on the type of memory configured (2 or 4 word burst) and provide synchronization information to the Memory Write Controller (MWC).
The read controller generates enables to initiate the read cycle. A separate read address counters is required and
is loaded by the controller with the content of the address field in the instruction word. As was true with the MWR,
to support 512k x 36 RAM in two word burst mode, 17 active address lines are required, whereas in 4-word burst
mode, 18 are required. Data from the QDR RAM must also be multiplexed (MUX) in order to convert to the MC
internal format of 72 bit buses from the 36-bit DDR format for the QDRII SRAM.
In order to capture the SRAM read data the echo clocks (CQ, CQ#) generated by the SRAM are used to latch the
data. This is the most robust and flexible of schemes available to capture the data, as with this source synchronous
technique, the impact of round trip delays from the data leaving the Memory Controller, to data being received back
can be minimized. The outputs of the capture latches are retimed back into the MCLK2x domain in order to be written to the Read Data FIFO (RDFIFO) discussed in the next section.
Read Data and Instruction FIFOs
The Read Data FIFO (RDFIFO) is used to store the data that is returned from the QDRII SRAM. It is asynchronously read by logic in the FPGA. The RDFIFO size is 64 X 72 bits.
The Read Instruction FIFO (RIFIFO) is similar to the WIFIFO and is configured 4 by 32 bits respectively in order to
store up to 4 instructions that are written to the MC by logic in the FPGA. The instruction fields are data length
(number of cache lines to read) and address (for QDR memory). The read instruction and data word formats are
shown in Figure 76 and Figure 77 respectively.
140
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 76. Read Data and Instruction Word Formats
Read Instruction Word
31
24
23
Reserved (low)
18
Data Length
17
0
Address
Read Data Word
71
0
Read Data
Figure 77. ORSPI4 Memory Controller Interface to FPGA — Read Timing Diagram
F_MC_RCLK
F_MC_RIFIFO_WE
F_MC_RI(23:18)
F_MC_RI(17:0)
D0*2
A0
D1*1
D2*1
A1
A2
D3*8
D1-0
D4*1
A3
D1-0
A4
MC_RIFIFO_FULL
MC_RDFIFO_EMPTY
F_MC_RDFIFO_RE
D0-0
MC_RD(71:0)
D0-1
D1-0
D2-0
The user can write/read instructions into the read instruction FIFO as long as the MC_RIFIFO_FULL flag is low. If
this flag is high, the FIFO can accept one more instruction. The user can start reading data from the read data
FIFO once the MC_RFIFO_EMPTY flag goes low.
It is the responsibility of the user to:
• Maintain count of data from the read data FIFO and check if they match the data length provided in the corresponding instruction word
• Associate the data received with the address. Data will be received in the same order as they were requested.
The timing diagram for the read interface for a typical read sequence is shown in Figure 77. The read sequence in
this case consists of reading 2 words from location A0 followed by one word each from locations A1, A2, eight
words from A3 and one word from A4 and A5. The MC_RIFIFO_FULL is asserted after the instruction for location
A2 has been written, indicating that only one more instruction may be written to the instruction FIFO. The read
instruction write to access location A4 cannot occur until the MC_RIFIFO_FULL flag is deasserted. The
MC_RDFIFO_EMPTY flag remains high until data has been read from the QDRII SRAM and is available to the
FPGA logic.
141
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
A programmable FIFO empty flag (MC_RDFIFO_EMPTY) is available to the FPGA for the data FIFO. The FIFO
flag threshold is set by the 4-bit software register field MC_EMPTY_THRESHOLD.
Memory Controller Instruction Latency
An example of the instruction latency through the QDR II Memory Controller for write instructions is shown in Figure 78. For this example, it is assumed that the clock from the FPGA logic to the Memory Controller
(F_MC_WCLK) is synchronized to the K clock to the external memory. If these clocks are not synchronous, then
the latency may vary.
Figure 78. ORSPI4 QDR II Memory Controller – FPGA to External Memory Latency Example
F_MC_WCLK =
External Memory K Clock
F_MC_WDFIFO_WE
Internal
FPGA
Logic
to
Memory
Controller
Interface
ORSPI4
to
External
Memory
Interface
00
F_MC_WD(73:72)
F_MC_WD(71:0)
D0-0
...
D0-31
F_MC_WIFIFO_WE
F_MC_WI(25:24)
00
F_MC_WI(23:18)
D*32
F_MC_WI(17:0)
A0
External Memory K Clock
W1
External Memory W#
2 K clock cycles
instruction latency
The latency for read instructions is the same given the same clock relationship conditions.
Memory Controller Status Reporting
The following status or alarms will be reported to the user through software register bits:
• Data length mismatch from the write controller state machine. This alarm bit will be set if a block of data read
from the write data FIFO does not match the data length from its associated instruction.
• Data-instruction coherency error. This alarm bit will be set if the ID field in write data and its associated write
instruction do not match.
• Write data, Read data FIFO overrun and underrun errors.
Clocking Schemes and Timing Diagrams- Memory Controller
The Memory Controller Unit requires three clocks:
• MC_WCLK from the FPGA, which controls the FPGA-side accesses to the Write Instruction and Write Data
142
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
FIFOs (Figure 71).
• MC_RCLK from the FPGA, which controls the FPGA-side accesses to the Read Instruction and Read Data
FIFOs.
• The main clock for the unit is selected by MC_ICK_SEL (configuration register 30B03[2:3]) which controls all
remaining clocking, including the clocks supplied to the external QDR-II SRAM. This clock can be sourced as follows:
–
–
–
–
MC_ICK_SEL = 0 selects the dedicated Memory Controller external clock input MCREFCLK = Freq_In
MC_ICK_SEL = 1 selects the SPIA unit's external clock ATREFCLK = Freq_In;
MC_ICK_SEL = 2 selects the SPIB unit's external clock BTREFCLK = Freq_In, or
MC_ICK_SEL = 3 selects the FPGA-supplied signal F_MC_REFCLK= Freq_In.
The above-selected clock, can then be modified in frequency, by MC_OCK_SEL (configuration register
30B03[7]) as follows:
– MC_OCK_SEL = 0 selects a PLL, such that Freq_Out = (Freq_In * (PLL_N + 1)/(2 * (PLL_M + 1))); or
– MC_OCK_SEL = 1 selects a divide-by-2, such that Freq_Out = (Freq_In / 2).
The PLL_N value is obtained from the configuration register 30B04[1:3]. PLL_M value is obtained from configuration register 30B04[5:7].
At the right side of the four internal FIFOs in Figure 71, the data is transferred as two 36-bit words per Freq_Out
clock cycle, but is then time-multiplexed into a single 36-bit DDR bus operating at frequency (Freq_Out * 2) for
transfer to the external QDR-II SRAM. The clock supplied to the QDR-II SRAM is at frequency Freq_Out.
Figure 79 through Figure 85 show the timing diagrams for the embedded controller/FPGA interface.
Figure 79. Data: F_MC_WD[73:0], F_MC_WI[31:0], F_MC_RI[31:0]
Clock: F_MC_WCLK
2.4/ 0.75 ns
3.5/0.5 ns
D
Q
Delay
FIFO
1.5/0.5 ns
Clock Buffer Delay
Relative to Data
C
Delay
1.1/ 0.74 ns
FPGA
Setup= 1.6 ns
Hold = 0.3 ns
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
143
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 80. F_MC_RI[31:0]
Clock: F_MC_RCLK
2.4/ 0.75 ns
3.5/0.5 ns
D
Q
Delay
FIFO
1.5/0.5 ns
Clock Buffer Delay
Relative to Data
C
Delay
1.35/ 0.85 ns
FPGA
Embedded Core
Setup = 1.4 ns
Hold = 0.4 ns
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
Figure 81. F_MC_WIFIFO_WE, F_MC_WDFIFO_WE
Clock: F_MC_WCLK
2.7/ 0.73 ns
3.5/0.5 ns
D
Q
Delay
FIFO
1.5/0.5 ns
Clock Buffer Delay
Relative to Data
C
Delay
1.7/ 0.75 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
144
Setup= 2.8 ns
Hold = 0.37 ns
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 82. F_MC_RDFIFO_RE, F_MC_RIFIFO_WE
Clock: F_MC_RCLK
2.5/ 0.76 ns
3.5/0.5 ns
D
Q
1.5/0.5 ns
Delay
D
Q
Clock Buffer Delay
Relative to Data
C
Delay
1.92/ 0.85 ns
FPGA
Embedded Core
Setup= 2.0 ns
Hold = 0.45 ns
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
Figure 83. Data: F_MC_RD[71:0]
Clock: F_MC_RCLK
Total prop = 3.6 / 1.3 ns
1.36 / 0.38 ns
3.5/0.5 ns
Q
D
D
1.5/0.5 ns
Delay
Clock Buffer Delay
Relative to Data
C
Delay
1.94/ 0.83 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
145
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 84. Data: F_MC_WIFIFO_FULL, MC_WDFIFO_FULL
Clock: F_MC_WCLK
Total prop = 2.7 / 1.12 ns
1.36 / 0.38 ns
3.5/0.5 ns
D
D
1.5/0.5 ns
Q
Delay
Clock Buffer Delay
Relative to Data
C
Delay
1.7/ 0.73 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
Figure 85. Data: F_MC_RIFIFO_FULL, MC_RDFIFO_EMPTY
Clock: F_MC_RCLK
Total prop = 3.0 / 1.3 ns
0.92 / 0.32 ns
3.5/0.5 ns
D
D
1.5/0.5 ns
Q
Delay
Clock Buffer Delay
Relative to Data
C
Delay
1.93/ 0.84 ns
FPGA
Embedded Core
NOTE: Delays represent average max/min values, not absolute values
Actual delay values are used by ispLEVER
146
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Software
Software for Configuration
There are two ways to write to the ORSPI4 memory map either via MPI (Microprocessor Interface) or via UMI (User
Master Interface) to the FPGA logic. Both the interfaces use the system bus to perform the transactions with the
registers. The MPI is provided to talk to any Power PC microprocessor whereas UMI is used for any customerdefined interface and interfaces extremely well with ORCASTRA™ to graphically change and monitor the register
map. The registers are divided into different domains, the details of which can be found in the technical note
TN1017. ORSPI4 device core registers can be accessed by addressing the 30000 onwards domain. Since there
are four different macros inside the ORSPI4 core, all these macros have been assigned their individual sub
domains.
Table 43. Address Allocation - Register Elements
Address (0x)
309xx
30Axx
308xx
30Bxx
Description
SPIA addresses
SPIB addresses
SERDES addresses
QDR MEM controller addresses and
some shared by SPIA and SPIB
ORSPI4 Start-up Sequence
SPI4 Link Start-up Protocol
Immediately after reset, and before the link synchronization, the SPI4 link must initialize to a known interface protocol. This section describes the initialization protocol for a generic SPI4 link. The actual start-up procedure with the
appropriate software register settings is described in the next section. Figure 86 shows the SPI4 link reference diagram that is referenced in the descriptions below. Where appropriate, the corresponding ORSPI4 software register
settings are also described as relevant to this start-up protocol.
A reset can be either hard or soft, but is assumed that the entire SPI4 link is being reset. Immediately after the
reset signal is deasserted and before the link synchronization, the following actions/conditions must occur/exist.
Figure 86. SPI4 Link Functional Block Diagram
Device B
Device A
TX_D_A
RX_D_B
DIP4 = “OK”
DIP2 = “OK”
TX_S_A
RX_S_B
1. The Receive Data FIFOs are emptied (RX_D_B)
147
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
2. Any outstanding credits are cleared in the Transmit Data Path (TX_D_A)
– This is done by presetting all the Credit values in the TX credit memory to 10'h000. This is done by first
selecting the TX credit memory by writing a ‘1’ to TX_CRED_MEM_SEL (Address 30917 in SPIA and 30A17
in SPIB) and then writing to address range 31000-310FF that correspond to locations 0 - 255 in the TX credit
memory.
– Additionally, the STAT fields for all ports must be disabled to 2'b11. This can be done by first selecting the TX
status memory by writing a ‘1’ to TX_STAT_MEM_SEL (Address 30917 in SPIA and 30A17 in SPIB) and
then writing to address range 31000 - 310FF that correspond to locations 0 - 255 in the TX status memory.
3. The Data Transmitter (TX_D_A as shown in Figure 86) sends continuous Training Patterns until it receives valid
FIFO status on TX_S_A. A signal from the status block needs to be sent to the data block to indicate this. The
Transmit PDM polling is disabled at this point.
4. The Receive Data interface RX_D_B ignores all incoming data until it has observed the training pattern and
acquired synchronization. This can be observed by polling the RX_DSKW_DONE_STS and
RX_DSKW_ERR_STS interruptible status bits (Address 3091C in SPIA and 30A1C in SPIB). This is described
in detail in the next section. As long as the receiver is not deskewed (or synchronization is not complete),
RX_S_B will continue to send framing pattern 2’b11 on the SPI4 status link.
5. RX_D_B asserts DIP-4 = “OK” which is indicated by a ‘0’ on the RX_ALGN_OFF_STS interruptible status bit
(Address 3091C in SPIA and 30A1C in SPIB). This bit is set to ‘1’ if the number of consecutive DIP-4 errors
exceeds the programmed threshold. This threshold is programmed by writing to RX_DIP4_ERR_TH control
register bits (Address 30910 in SPIA and 30A10 in SPIB).
6. After the receiver has declared link synchronization and a calendar has been provisioned, the Receive Status
Channel RX_S_B begins sending valid FIFO status for each enabled port contained in the Calendar. Valid Status is Frame-based with DIP-2 code words as part of the protocol. Calendar is declared as “provisioned” when
RX_CAL_LEN_MAIN (or RX_CAL_LEN_SHD if shadow calendar is being used) has a value > 0. It is recommended to configure the calendar table and write the RX_CAL_LEN_MAIN last.
7. After the Transmitter Status Channel TX_S_A receives a configurable number of consecutive valid DIP-2 code
words, it begins transmitting data bursts of the enabled ports within the configured Calendar. The DIP-2 error
threshold can be programmed by writing to TX_DIP2_ERR_TH (Address 30944 in SPIA and 30A44 in SPIB).
At this point the end-to-end link is established and valid data/status is being transferred across the SPI4 link.
There may be cases where the Transmitter in Device “A” (TX_D_A) is active, but the Receiver in Device “B”
(RX_D_B) is in reset condition. In this situation, after the Receive Reset signal has been deasserted, the link follows the procedure defined above from Step 4. When the receiver is in a reset condition, the RX_S_B block will be
sending the “1 1" framing pattern to the Transmit Status Channel interface (TX_S_A). The transmitter will follow the
procedure prescribed above as well.
There are also cases where the Data Path transmitter in Device “A” (TX_D_A) is in a reset condition, and the
Receiver in Device “B” (RX_D_B) is active. In this situation, after the Transmit Reset signal is deasserted, the link
follows the procedure defined above from Step 2. When the transmitter is in a reset condition, the RX_D_B block
will not be receiving valid DIP-4 values. The RX_D_B block removes the DIP-4 = “OK” signal and the RX_S_B
block begins to send continuous “1 1" framing pattern to the Transmit Status Channel interface (TX_S_A).
SPIA or SPIB Start-up sequence
After the device is powered up, it resets itself with a Power-up reset, designed to trigger itself at power up. The first
thing required by the ORSPI4, is to perform baseline process followed by training if dynamic alignment is chosen
(SPI4_LOW_SPEED_DATA_SEL = ‘0’). This is required by the SPIA and SPIB high-speed receivers for internal
148
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
alignment. Dynamic alignment may also be required during normal transmission and reception of SPI4 data
because Process, Voltage and Temperature variations can alter the alignment.
The procedure is as follows (only shown for SPIA)
• Enable the interrupts related to the high-speed receive interface block by writing FF to 30913. This would enable
the status update on the register 3091C. It is also recommended to enable other interrupts as well. For example
registers 30912 and 30914 so that the corresponding statuses can be monitored.
• Set register 30910 to 0x71 this would set the DIP4 Error threshold to 7 and will enable baseline for SPIA to perform “ORSPI4 baseline” procedure. DIP4 Error threshold is set to 7 for experimental reasons only, most of the
applications engineers would want to set it to 1 to flag any single DIP4 error.
• Soft-reset the SPIA core by writing 0x02 to 30B20 and then clearing this bit. This can also be achieved by pulsing
the s4a_fpga_reset FPGA/CORE interface pin. Please note that every time the ORSPI4 core is soft-reset the
TXPDM contents are erased whereas the contents of RXPDM, RXCAL and TXCAL remain intact. Software engineers would want to put a state machine in the API to reprogram the TXPDM once the soft reset is pulsed. Soft
reset may be required to pulse if because of any reason ORSPI4 loses its synchronization with another device. In
that case “ORSPI4 baseline” procedure needs to be performed again by pulsing the soft reset.
• Read the 3091C register - it should read 0x53
– Bit 0 = 0 indicates that the RDI PLL has locked to the REFCLKA. If the RDCLK (SPI4 receive clock) is
present then the PLL will lock to the RDCLK.
– Bit 1 = 1 indicates that the Baseline has been done
– Bit 2 = 0 indicates that there are no Baseline errors
– Bit 3 = 1 indicates that receive de-skew has been achieved. This bit will stay high if the enable training is not
set in the register 30910, it will also be set once the training has been done.
– Bit 4 = 0 indicates that there are no receive de-skew errors, these errors will only show up if the training has
been enabled and de-skewing is not successful.
– Bit 5 = 0 indicates that training is not detected
– Bit 6 = 1 indicates that byte-lanes' alignment is off, this bit is also relevant if the training is enabled and Bytes
are not being aligned properly.
– Bit 7 = 1 indicates that the TX status is showing LOF, because the TX_CAL_M_MAIN and
TX_CAL_LEN_MAIN do not match the RX_CAL_M_MAIN and RX_CAL_LEN_MAIN respectively.
• Enable internal loopback by writing 0x08 to 30915. This is only required if there is no other SPI4 device talking to
ORSPI4. External loopback can also be performed in which case this register bit should not be set.
• Program the TX_DATA_MAX_T and TX_ALPHA values in the registers 30935, 30936, 30937, 30940, 30941 and
30942. Setting a non-zero value to these registers will automatically cause the transmit block to initiate the SPI4
training sequence.
• Program the RX_FIFO_THRESHOLD_H (30911) and TX_FIFO_THRESHOLD_H (30945) values to 0x78 and
0x17 respectively. These are watermarks for internal asynchronous FIFOs. These are the recommended values.
If MINBURST mode is desired then TX_FIFO_THRESHOLD_H needs to be set appropriately. Refer to MINBURST MODE section of the data sheet.
• Keep baseline enabled and, enable training by writing 0x73 to 30910.
• Read the 3091C register and it should read 0x55
– Bit 0 = 0 indicates that the receive PLL has locked to REFCLKA or RDCLK.
– Bit 1 = 1 indicates that the Baseline has been done
– Bit 2 = 0 indicates that there are no Baseline errors
– Bit 3 = 1 indicates that RDI de-skew has been achieved
– Bit 4 = 0 indicates that there are no RDI de-skew errors
– Bit 5 = 1 indicates that training is detected.
– Bit 6 = 0 indicates that byte-lanes' alignment is not off.
– Bit 7 = 1 indicates that the TX status is showing LOF, because the TX_CAL_M_MAIN and
149
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
TX_CAL_LEN_MAIN do not match the RX_CAL_M_MAIN and RX_CAL_LEN_MAIN respectively.
• It is recommended that the training be kept enabled at all times so the dynamic alignment is performed to compensate for process, voltage and temperature variations.
• Program the TX_CAL_M_MAIN equal to RX_CAL_M_MAIN and TX_CAL_LEN_MAIN equal to
RX_CAL_LEN_MAIN and then the register 3091C should read 54.
• Read register 3091D twice, the first value read could indicate DIP4 and DIP2 errors, if clears to 00 after the second read then there are no errors. The errors during the first read indicate that the errors existed before the training was performed.
• Read the register 3090A to read the DIP4 error count. This register will keep counting if the bit 5 of 3091D is set,
otherwise this register will show 00.
• Read the register 3090B to read the DIP2 error count. This register will keep counting if the bit 6 of 3091D is set,
otherwise this register will show 00.
After the above configuration is completed, the device is not yet ready to transmit and receive data. The user still
has to provision the Calendars and the Port Descriptor Memories for appropriate bandwidth. This is an indirect
addressing mechanism where a single bit in register 30917 selects which memory space needs to be addressed.
Once one of the bit is selected then the user can write to 31000 to 31FFF address space. The following example
shows how to program TX PDM, RX PDM, TX calendar and RX calendar.
• Four ports (0, 1, 2 and 3) of SPI4 data with equal bandwidth.
• No DPRAM Partitions (Virtual FIFOs).
• Write 20 HEX to 30917 to select the RX calendar indirect addressing
• Next program the RX calendar memory through the following writes:
– Write 00 to the 31000 location.
– Write 01 to the 31001 location.
– Write 02 to the 31002 location.
– Write 03 to the 31003 location.
• Write 10 HEX to register 30917 to select the RX PDM indirect addressing. Since there are no partitions for the
DPRAMS, only the bits which correspond to the BANK_ID of the DPRAMs will be written. Bits that correspond to
the PARTITION_ID of the DPRAMs are written to “000”.
– Write 00 HEX to the 31000 location which means that data will read from the DPRAM0 for port 0.
– Write 08 HEX to the 31001 location which means that data will be read from the DPRAM1 for port 1.
– Write 10 HEX to the 31002 location which means that data will be read from the DPRAM2 for port 2.
– Write 18 HEX to the 31003 location which means that data will be read from the DPRAM3 for port 3.
• Write 08 HEX to 30917 to select the TX calendar indirect addressing
– Write 00 to the 31000 location.
– Write 01 to the 31001 location.
– Write 02 to the 31002 location.
– Write 03 to the 31003 location.
• Write 04 HEX to 30917 to select the TX PDM indirect addressing. TX PDM has a total of 6 fields to be written and
they are divided into 3 bytes. These three bytes correspond to a single memory location for TX PDM, which has
a total of 256 locations.
– Write the port ID 00 HEX to 31000 corresponding to port 0.
– Write 0F HEX to 31001 (000 to partition ID field and 1111 to BURST_VAL field).
– Write 0C HEX to 31002 which implies:
• MB_EN bit is set to ‘1’ which means that MAX-BURST1 and MAX-BURST2 both will be supported, otherwise
only MAX-BURST1 will be used.
• M bit is set to ‘1’ which means the port ID field programmed in the TX PDM is propagated to the FPGA on the
150
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPIA_TXk_PORT_ID (k=32, 64, 128) signal. If M bit is not set then the port ID programmed in the TX calendar
will be broadcast to the FPGA.
• DPRAM BANK_ID field is set to “00”.
– Address location 31003 is not used.
– Write 01 HEX to 31004 corresponding to port 1.
– Write 0F HEX to 31005 (000 to partition ID field and 1111 to BURST_VAL field).
– Write 0D HEX to 31006 (MB_EN bit is set to ‘1’, M bit is set to ‘1’ and DPRAM BANK_ID field is set to “01”).
– Address location 31007 is not used.
– Write 02 HEX to 31008 corresponding to port 2.
– Write 0F HEX to 31009 (000 to partition ID field and 1111 to BURST_VAL field).
– Write 0E HEX to 3100A (MB_EN bit is set to ‘1’, M bit is set to ‘1’ and DPRAM BANK_ID field is set to “10”).
– Address location 3100B is not used.
– Write 03 HEX to 3100C corresponding to port 3.
– Write 0F HEX to 3100D (000 to partition ID field and 1111 to BURST_VAL field).
– Write 0F HEX to 3100E (MB_EN bit is set to ‘1’, M bit is set to ‘1’ and DPRAM BANK_ID field is set to “10”).
– Address location 3100F is not used.
This concludes the configuration of the ORSPI4 SPIA Core in the dynamic mode.
In LOW SPEED STATIC mode (bit 2 of register 30915 selected) and in LOW SPEED QUARTER RATE STATIC
mode (bit 0 of register 30915 selected), the baseline procedure and the training procedure is not required. This
means that the High Speed PLL is bypassed and therefore the BIT 0 of register 30910 will always be high. In static
mode this is normal and should be ignored. In fact the only relevant bits in register 30910 are bits 6 and 7. If these
bits are not high then that means ORSPI4 has hand-shaken with another device properly.
Delay-Taps in STATIC mode
After all the configuration procedure is performed, there is a possibility of ORSPI4 experiencing DIP-4 errors and
RX alignment status flag being high. This can be tackled using two FPGA/CORE interface signals called
SPI_DATM_A and SPI_DLYTAP_A [2:0]. With SPI_DATM_A set to high, SPI_DLYTAP_A[2:0] should be varied from
0 to 6 to adjust the RX data with respect to RDCLK to get a valid data eye. This would help getting rid of the DIP4
errors and the RX alignment status flag. This procedure is also a function of how the Board designer has laid out
the 16 RX_DATA lanes. If all the lengths are grossly mismatched then this mechanism may not work, so it is imperative to design the board keeping the lengths of the RX_DATA as close as possible.
SERDES Start-Up Sequence
The following sequence is required by the SERDES. For information required for simulation that may be different
than this sequence, see the ORSPI4 Design Kit.
1. Initiate a hardware reset by making RESETN low. Keep this low during FPGA configuration of the device. The
device will be ready for operation 3 ms after the low to high transition of RESETN.
2. Configure the following SERDES internal and external registers. Note that after device initialization, all alarm
and status bits should be read once to clear them. A subsequent read will provide the valid state. Set the following bits in register 30800:
• Bits LCKREFN_[A:D] to “1”, which implies lock to data.
• Bits ENBYSYNC_[A:D] to “1” which enables dynamic alignment to comma.
Set the following bits in register 30801:
• Bits LOOPENB_[A:D] to “1” if high-speed serial loopback is desired.
Set the following bits in registers 30002, 30012, 30022, 30032:
• TXHR set to “1” if TX half-rate is desired.
151
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
• 8B10BT set to “1”
Set the following bits in registers 30003, 30013, 30023, 30033:
• RXHR Set to “1” if RX half-rate is desired.
• 8B10BR set to “1”.
• LINKSM set to “1” if the Fibre Channel state machine is desired.
Assert GSWRST bit by writing two “1”'s. Deassert GSWRST bit by writing two “0”s. Wait 3ms. If higher speed serial
loopback has been selected, the receive PLLs will use this time to lock to the new serial data.
Monitor the following alarm bits in registers 30000, 30010, 30020, 30030:
• LKI, PLL lock indicator. “1” indicates that PLL has achieved lock.
3. If 8b/10b mode is enabled, enable link synchronization by periodically sending the following sequence three
times:
• K28.5 D21.4 D21.5 D21.5 or any other idle ordered set (starting with a /comma/) in FC mode.
• /comma/ characters for the XAUI state machine and /A/ characters for word and channel alignment in XAUI
Resets
Global Resets
Global resets affect all blocks in the ORSPI4 Embedded ASIC Core (EAC) section (SPIA, SPIB, MC, MPI, and
SERDES. A global reset can be caused by one the following: power-up reset, bitstream download without a partial
reconfiguration enabled, hardware reset, or FPGA Global Set Reset (GSR).
Power-Up Reset
The power-up reset process begins when the power supply voltage ramps up to approximately 80% of the nominal
value of 1.5 V. Following this event, the device will be ready for normal operation after 3 ms. For more information
on power-up reset, please refer to the ORCA SERIES 4 FPGA data sheet at www.latticesemi.com.
Bitstream Download (DONE=0)
During bitstream download, the FPGA DONE signal remains low until the part is fully configured During this time,
all ORSPI4 EAC blocks remain in RESET. During partial reconfiguration, an FPGA register bit can be set to prevent
a RESET of the EAC while DONE=0. For more information on bitstream configuration, please refer to the ORCA
SERIES 4 FPGA data sheet at www.latticesemi.com.
Hardware Reset (RESETN)
A hardware reset is initiated by making the RESETN low for at least two microprocessor clock cycles. The device
will be ready for operation 3 ms after the low to high transition of the RESETN. This reset function affects all EAC
blocks.
FPGA Global Set Reset (GSR)
The FPGA Global Set Reset signal (GSR) can be made to reset the SPIA, SPIB and SERDES blocks of the
ORSPI4 core. This can be done during the ORSPI4 Module/IP Generation phase of the ORSPI4 core in ispLEVER.
During this phase, the “Disable GSR from resetting data path in FPSC Core” check button is left unchecked to
enable GSR to reset these blocks. For more information on GSR, please refer to the ORCA SERIES 4 FPGA data
sheet at www.latticesemi.com.
SPIA-only Resets
The SPIA block can be individually reset though Software Reset-via the microprocessor interface, or using an
FPGA interface signal.
152
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Software Reset (SOFT_RESET_S4A)
A register bit used to reset the SPIA is SOFT_RESET_ S4A (30B20, bit 6). This bit, when set to “1”, disables the
SPIA block.
FPGA Interface Reset (FPGA_RESET_S4A)
FPGA_RESET_S4A performs the same function as SOFT_RESET_ S4A. The difference is that it is an FPGA
interface signal instead of a configuration register bit.
SPIB-only Resets
The SPIB block can be individually reset though Software Reset-via the microprocessor interface, or using an
FPGA interface signal.
Software Reset (SOFT_RESET_S4B)
A register bit used to reset the SPIB is SOFT_RESET_ S4B (30B20, bit 7). This bit, when set to “1”, disables the
SPIB block.
FPGA Interface Reset (FPGA_RESET_S4B)
FPGA_RESET_S4B performs the same function as SOFT_RESET_ S4B. The difference is that it is an FPGA
interface signal instead of a configuration register bit.
MC-only Resets
The Memory Controller (MC) block can be individually reset though Software Reset-via the microprocessor interface, or using an FPGA interface signal.
Software Reset (SOFT_RESET_MC)
A register bit used to reset the MC is SOFT_RESET_ MC (30B20, bit 5). This bit, when set to “1”, disables the MC
block.
FPGA Interface Reset (FPGA_RESET_MC)
FPGA_RESET_MC performs the same function as SOFT_RESET_ MC. The difference is that it is an FPGA interface signal instead of a configuration register bit.
SERDES-only Resets
The SERDES block can be individually reset though Software Reset-via the microprocessor interface, or using
FPGA interface signals.
Software Reset (SWRST and HARD_RESET_FC)
Using the software reset option via the microprocessor interface, each channel can be individually reset by setting
SWRSTx (bit 2) to a logic “1” in the channel configuration register (30004,30014,30024,30034)). The device will be
ready 3 ms after the SWRSTx bit is de-asserted. Similarly, all four channels per quad SERDES can be reset by setting the global reset bit GSWRST (30005, bit 2). The device will be ready for normal operation 3 ms after the
GSWRST bit is de-asserted. Note that the software reset option resets only SERDES internal registers and
counters. The microprocessor registers are not affected. It should also be noted that the embedded block couldn't
be accessed until after FPGA configuration is complete. Also note that the SWRSTx and GSWRST are active
when the corresponding memory map register bit is set high.
Another register bit used to reset the SERDES is HARD_RESET_FC (30B20, bit 4). This bit, when active, disables
the SERDES and prevents any access to its internal microprocessor registers (300xx range).
FPGA Interface Reset signals (SYS_RST_N and FPGA_RESET_FC)
FPGA_RESET_FC performs the same function as HARD_RESET_FC. The difference is that it is an FPGA interface signal instead of a configuration register bit.
SYS_RST_N is a synchronous active low reset FPGA interface signal. This signal, when active, resets the read
side of the multi-channel alignment FIFOs.
153
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The following table describes the different methods of resetting various parts of the EAC. It lists the logic values set
on the FPGA interface and the primary ASB pins.
Table 44. ORSPI4 RESET
ORSPI4 Core Affected
Signal Name
RESET Type
1
MPI
SPIA
SPIB
M_CTRL
SERDES
PWRUPRES = 1
FPGA signal
•
•
•
•
•
DONE = 0
FPGA I/O1
•
•
•
•
•
RESETN = 0
EAC IO
•
•
•
•
•
GSRN = 0 and
GSRN_DISABLE = 0
FPGA signal
•
•
•
•
FPGA_RESET_S4A = 1
Interface Signal
•
SOFT_RESET_S4A = 1
Software Register Bit
•
FPGA_RESET_S4B = 1
Interface Signal
•
SOFT_RESET_S4B = 1
Software Register Bit
•
FPGA_RESET_MC = 1
Interface Signal
•
SOFT_RESET_MC = 1
Software Register Bit
•
FPGA_RESET_FC = 1
Interface Signal
•
HARD_RESET_FC = 1
Software Register Bit
•
SYS_RST_N (Channel
Alignment FIFO RESET)
Interface Signal
•
1. Please refer to the ORCA SERIES 4 FPGA data sheet at www.latticesemi.com.
I/O TRI-STATE Functions
The EAC I/Os can be tri-stated using one of the three signals below.
TS_ALL
This is an FPGA signal that globally tri-states all EAC IOs in addition to the FPGA IOs. For more information on
TS_ALL, please refer to the ORCA SERIES 4 FPGA data sheet at http://www.latticesemi.com.
TRISTN
This is an ORSPI4 EAC active low IO that globally tri-states all EAC IOs.
Power-Up
In addition to its RESET function, power-up also puts the ORSPI4 FPSC IO in tri-state until the chip is fully powered up.
Power Down
When set low, the ORSPI4 FPSC “PDN” powers down the following:
• all PLLs in the SPIA, SPIB, Memory Controller and SERDES
• LVDS and HSTL buffers on the EAC section of the ORSPI4
• SPIA, SPIB, and SERDES logic
154
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 Memory Map
The ORSPI4 device features a variety of programming options which include all the OIF-SPI-4.2.0 specified configurable parameters. The base addresses for each functional block in the ORSPI4 device is shown in Figure 87 and
Table 45.
The SPIA and SPIB receive cores contain RAM blocks that are configured through writes to the address range
0x31000 - 0x317FF. Prior to configuring any of these memories, the user has to select one of the memories by writing into the appropriate memory select bit in address 0x30917 (SPIA) and 0x30A17 (SPIB).
All interrupts on ORSPI4 are maskable and edge generated. Each interrupt source has a corresponding status
latch bit that can be viewed as software status register bits. At the end of a status register read, both the status and
edge-triggered interrupt register will be cleared. If the active interrupt condition still persists after the status register
read, the status register will continue to show this condition but the edge-triggered interrupt register will remain
clear not causing another interrupt.
Every interrupt or status register bit has an interrupt enable bit that must be set to ‘1’ to generate the associated
interrupt or read the status. Each interrupt enable for the DPRAMs in SPIA and SPI4 blocks controls or enables
eight interrupt sources. These enable registers are at register address 30912, 30943, (SPIA) 30A12, and 30A43
(SPIB). These 32 bits enable/disable 256 interrupts. All other interrupt enables are unique to an interrupt source.
To make the interrupt structure user-friendly, two special top-level interrupt registers are provided. Each of the bits
in these top-level interrupt registers point to specific functional blocks that caused an interrupt. The user can poll
these top-level interrupt registers to check which block has caused an interrupt and then poll the relevant lowerlevel interrupts corresponding to a block. Each of the bits in the top-level interrupt status register 30B29 shown in
Table 46 point to a specific functional block in the ORSPI4 device. Each of the bits in the SPIA or SPIB DPRAM toplevel interrupt status register 30B2A is the collective OR of its associated lower-level interrupts.
Figure 87. SPI4 Core Programming Addresses in ORSPI4
3xxxx Hex Address
SYS_BUS
SLAVE_IF
MEM_IF
308XX
Control & Status registers
To control SERDES
Channels
CORE_IF
309XX
Control & Status registers
To control SPIA
SPI4_IF
30AXX
Control & Status registers
To control SPIB
SPI4_IF
30BXX
FPGA
Global
COMM_IF
155
Configuration
Memories
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 45. ORSPI4 Memory Space
Address (Hex)
Description
3000x
Channel A in SERDES, internal registers
3001x
Channel B in SERDES, internal registers
3002x
Channel C in SERDES, internal registers
3003x
Channel D in SERDES, internal registers
308xx
Channel registers outside the SERDES
3090x - 3092x
SPI4 Core A Control registers
30930 - 3094x
SPI4 Core A Status registers
30950 - 3097x
SPI4 Core B Control registers
30980 - 3099x
SPI4 Core B Status registers
31000 - 317FF
SPI4 Core A/B configurable RAM address space
30100 - 3010F
Memory Controller registers
Table 46. Top-level Interrupt Status Register 30B29
BIT
Interrupt Source
Associated Registers
0
SERDES
3000, 3010, 3020, 3030
1
Memory Controller
30B09
2
Memory Controller
30B08
DPRAM
SPIA (3090C-3090F, 30918-3091B, 30928-3092F)
SPIB (30A0C-3090F, 30A18-30A1B, 30A28-30A2F)
4
SPI_B_2
30A1C
5
SPI_B_1
30A1D
6
SPI_A_2
3091C
7
SPI_A_1
3091D
3
Table 47 details the memory map for the FPSC portion of the ORSPI4 device.
Addresses for the control registers for the FPGA portion of the device are detailed in the ORCA Series 4 datasheet.
This table shows the databus oriented for the PPC interface. DB0 is the MSB, while DB7 is the LSB. If the user
master interface is used to perform operations to the ASIC core then the databus must be used in the opposite
notation, where DB7 is the MSB and DB0 is the LSB.
Table 47. Memory Map
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
SERDES Alarm Registers (Read Only), x = [A, ...,D]
30000
30010
30020
30030
[0]
Reserved
[1]
LKI_x
[2:7]
Reserved
00
Receive PLL Lock Indication, Channel x. LKI_x = “1” indicates the receive
PLL is locked.
156
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
SERDES Alarm Mask Registers (Read/Write), x = [A, ...,D]
30001
30011
30021
30031
[0]
Reserved
[1]
MLKI_x
[2:7]
Reserved
FF
Reserved. Must be set to “1”.
Set to “1” on device reset.
Mask Receive PLL Lock Indication, Channel x.
SERDES Common Transmit and Receive Channel Configuration Registers (Read/Write), x = [A, ...,D]
30002
30012
30022
30032
30003
30013
30023
30033
[0]
TXHR_x
00
Transmit Half Rate Selection Bit, Channel x.
When TXHR_x = “1”, HDOUT_x's baud rate = (REFCLK*10) and TCK78
=(REFCLK/4); when TXHR_x=0, HDOUT_x's baud rate = (REFCLK*20) and
TCK78=(REFCLK[A:B]/2).
TXHR_x = 0 on device reset.
[1]
PWRDNT_x
Transmit Powerdown Control Bit, Channel x. When PWRDNT_x = “1”, sections of the transmit hardware are powered down to conserve power.
PWRDNT_x = 0 on device reset.
[2]
PE0_x
[3]
PE1_x
Transmit Preemphasis Selection Bit 0, Channel x. PE0_x and PE1_x select
one of three preemphasis settings for the transmit section.
PEO_x=PE1_x = 0, Preemphasis is 0%
PEO_x=1, PE1_x = 0 or PEO_x=0, PE1_x = 1, Preemphasis is 12.5%
PEO_x=PE1_x = 1, Preemphasis is 25%.
PEO_x=PE1_x = 0 on device reset.
[4]
HAMP_x
Transmit Half Amplitude Selection Bit, Channel x. When HAMP_x = “1”, the
transmit output buffer voltage swing is limited to half its normal amplitude.
Otherwise, the transmit output buffer maintains its full voltage swing.
HAMP_x = 0 on device reset.
[5]
Reserved
Reserved. Must be set to 0
Set to “0” on device reset.
[6]
Reserved
[7]
8b10bT_x
[0]
RXHR_x
[1]
PWRDNR_x
Receiver Power Down Control Bit, Channel x. When PWRDNR_x = 1, sections of the receive hardware are powered down to conserve power.
PWRDNR_x = “0” on device reset.
[2]
Reserved
Reserved. Must be set to “1”.
Set to “1” on device reset.
[3]
8b10bR_x
Receive 8b/10b Decoder Enable Bit, Channel x. When 8b10bR = “1”, the
8b/10b decoder in the receive path is enabled. Otherwise, the data is
passed undeocded.
8b10bR_x = “0” on device reset.
[4]
LINKSM_x
Link State Machine Enable Bit, Channel x. When LINKSM_x = “1”, the
receiver Fiber Channel link state machine is enabled. Otherwise, the Fibre
Channel link state machine is disabled.
NOTE: LINKSM_x is ignored when XAUI_MODE_x= “1”.
LINKSM_x = “0” on device reset.
[5:7]
Reserved
Transmit 8b/10b Encoder Enable Bit, Channel x. When 8b10bT_x = “1”, the
8b/10b encoder in the transmit path is enabled. Otherwise, the data is
passed unencoded.
8b10bT_x = “0” on device reset.
20
Receive Half Rate Selection Bit, Channel x.
When RXHR_x =”1”, HDIN_x's baud rate = (REFCLK*10) and
RCK78=(REFCLK/4); when RXHR_x= “0”, HDIN_x's baud rate = (REFCLK*20) and RCK78=(REFCLK/2).
RXHR_x = “0” on device reset.
157
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
SERDES Common Transmit and Receive Channel Configuration Registers (Read/Write), x = [A, ...,D]
30004
30014
30024
30034
[0]
Reserved
40
Reserved. Must be set to “0”
Set to “0” on device reset.
[1]
MASK_x
Transmit and Receive Alarm Mask Bit, Channel x. When MASK_x = “1”, the
transmit and receive alarms of a channel are prevented from generating an
interrupt (i.e., they are masked or disabled). The MASK_x bit overrides the
individual alarm mask bits in the Alarm Mask Registers.
MASK_x = “1” on device reset.
[2]
SWRST_x
Transmit and Receive Software Reset Bit, Channel x. When SWRST_x =
“1”, this bit provides the same function as the hardware reset, except that all
configuration register settings are unaltered. This is not a self-clearing bit.
Once set, this bit must be manually set and cleared.
SWRST_x = “0” on device reset.
[3:6]
Reserved
[7]
TESTEN_x
Transmit and Receive Test Enable Bit, Channel x. When TESTEN_x = “1”,
the transmit and receive sections are placed in test mode. The TestMode[4:0] bits in the Global Control Registers specify the particular test,
and must also be set.
NOTE: When the global test enable bit GTESTEN = “0”, the individual channel test enable bits are used to selectively place a channel in test or normal
mode. When GTESTEN = “1”, all channels are set to test mode regardless
of their TESTEN setting
TESTEN_x = “0” on device reset.
SERDES Global Control Registers (Read/Write) Acts on all four Channels in SERDES Quad A or SERDES Quad B.
30005
30006
[0]
Reserved
[1]
GMASK
Global Mask. When GMASK = “1”, the transmit and receive alarms of all
channel in the SERDES quad are prevented from generating an interrupt
(i.e., they are masked or disabled). The GMASK bit overrides the individual
MASK_x bits. GMASK = “1” on device reset.
[2]
GSWRST
Software reset bit. The GSWRST bit provides the same function as the
hardware reset for the transmit and receive sections of all four channels,
except that the device configuration settings are not affected when
GSWRST is asserted. This is not a self-clearing bit. Once set, this bit must
be manually set and cleared. The GSWRST bit overrides the individual
SWRST_x bits.
GSWRST = “0” on device reset.
[3]
GPWRDNT
Powerdown Transmit Function. When GPWRDNT = “1”, sections of the
transmit hardware for all four channels of are powered down to conserve
power. The GPWRDNT bit overrides the individual PWRDNT_x bits.
GPWRDNT= “0” on device reset.
[4]
GPWRDNR
Powerdown Receive Function. When GPWRDNR = “1”, sections of the
receive hardware for all four channels are powered down to conserve power.
The GPWRDNR bit overrides the individual PWRDNR_x bits.
GPWRDNR = “0” on device reset.
[5]
Reserved
Reserved, “1” on device reset.
[6]
Reserved
[7]
GTESTEN
[0:4]
TestMode
[5:7]
Reserved
44
Reserved
Set to “0” on device reset.
Test Enable Control. When GTESTEN = “1”, the transmit and receive sections of all four channels are placed in test mode. The GTESTEN bit overrides the individual TESTEN_x bits. GTESTEN = “0” on device reset.
00
TestMode - See Test Mode section for settings
158
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
Control Registers (Read/Write), x = [A, ...,D]
30800
30801
30810
[0]A
[1]B
[2]C
[3]D
ENBYSYNC[A:D]
00
[4]A
[5]B
[6]C
[7][D]
LCKREFN[A:D]
LCKREFN[A:D]= “0” Locks the receiver PLL to ref reference clock for Channel x.
LCKREFN[A:D]= “1” = Locks the receiver to data for Channel x.
NOTE: When LCKREFN[A:D] = “0”, the corresponding LKI_x bit is also zero.
LCKREFN[A:D]= “0” on device reset.
[0]A
[1]B
[2]C
[3]D
LOOPENB[A:D]
Enable Loopback Mode for Channel x. When LOOPEN[A:D]= “1”, the transmitter high-speed output is looped back to the receiver high-speed input.
This mode is similar to high-speed loopback mode enabled by TESTMODE[A:D] except that LOOPEN[A:D] disables the high-speed serial output.
LOOPEN[A:D]= “0” on device reset.
[4]A
[5]B
[6]C
[7]D
NOWDALIGN[A:D]
Word Align Disable Bit. When NOWDALIGN[A:D]= “1”, receiver word alignment is disabled for Channel x.
NOWDALIGN[A:D]= “0” on device reset.
[0]A
[1]B
[2]C
[3]D
DOWDALIGN[A:D]
[4]A
[5]B
[6]C
[7]D
FMPU_STR_EN[A:D]
00
ENBYSYNC[A:D] = “1” Enables Receiver Byte Synchronization for Channel
x.
ENBYSYNC[A:D] = “0” on device reset.
Word Realign Bit. When DOWDALIGN[A:D] transitions from “0” to “1”, the
receiver realigns on the next comma character for Channel x.
DOWDALIGN[A:D]= “0” on device reset.
Enable multi-channel alignment for Channel x. When
FMPU_STR_EN[A:D]= “1”, the corresponding channel participates in multichannel alignment.
FMPU_STR_EN[A:D]= “0” on device reset.
30811
[0:1]A FMPU_SYNMODE[A: 00
[2:3]B D][0:1]
[4:5]C
[6:7]D
Sync mode for x
00 = No channel alignment
10 = Twin channel alignment
01 = Quad channel alignment
30820
[0]A
[1]B
[2]C
[3]D
FMPU_RESYNC1[A: 00
D]
Resync a Single Channel. When FMPU_RESYNC1[A:D] transitions from “0”
to “1”, the corresponding channel is resynchronized (the write and read
pointers are reset).
FMPU_RESYNC1[A:D]=”0” on device reset.
[4]A & FMPU_RESYNC2[1: 00
B
2]
[5]C
&D
Resync a Pair of Channels. When FMPU_RESYNC2[1:2] transitions from a
“0” to a “1”, the corresponding channel pair is resynchronized.
FFMPU_RESYNC2[1:2]= “0” on device reset.
[6]
FMPU_RESYNC4[1: 00
2]
Resync a Four-Channel Group. When FMPU_RESYNC4 transitions from a
“0” to a “1”, the corresponding four-channel group is resynchronized.
FMPU_RESYNC4= “0” on device reset.
[7]
XAUI_MODE
Controls use of XAUI link state machine in place of Fibre-Channel state
machine. When XAUI_MODE= “1”, all four channels in the SERDES quad
enable their XAUI link state machines. (LINKSM_x bits are ignored).
XAUI_MODE= “0” on device reset.
00
159
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30821
30830
Bit
Name
Reset
Value
(0x)
Description
[0]
NOCHALGN
Bypass channel alignment. NOCHALGN =1 causes bypassing of multichannel alignment FIFOs for the corresponding SERDES quad.
NOCHALGN = “0” on device reset.
[1:3]
Reserved
[4:5]
RCKSEL[0:1]
00
Source for RCK78 (00=A, 10=B, 01=C, 11=D)
[6:7]
TCKSEL[0:1]
00
Source for TCK78 (00=A, 10=B, 01=C, 11=D)
00
Set this to 1 to enable characterization mode for the SERDES. Characterization mode also requires inputs TESTMD[1:0]N=00, and FPGA interface
pin, ENABLE_SPI4_B = “0”.
The outputs for the SERDES can be observed at the following ports:
TBC311 → PMID20
CV → PMID21
BYTSYNC→ PMID22
WDSYNC → PMID23
RBCO → PMID24
RBC1 → PMID25
LDOUT9 → PMID26
LDOUT8 → PMID 27
LDOUT7 → PMID28
LDOUT6 → PMID29
LDOUT5 → PMID30
LDOUT4 → PMID31
LDOUT3 → PMID32
LDOUT2 → PMID33
LDOUT1→ PMID34
LDOUT0 → PMID35
[0:3]
Reserved
[4]
SCHAR_ENA
[5]
SCHAR_TXSEL
Set this to 1 to enable driving of low speed TX ports of the SERDES during
characterization mode. The inputs used During this mode are:
TBC ← PMIA15
LDIN9 ← PMIA14
LDIN8 ← PMIA13
LDIN7 ← PMIA11
LDIN6 ← PMIA9
LDIN5 ← PMAI8
LDIN4 ← PMIA7
LDIN3 ← PMIA6
LDIN2 ← PMIA5
LDIN1 ← PMIA4
LDIN0 ← PMIA2
[6:7]
SCHAR_CHAN
Selects the channel to observe and control during SERDES characterization
mode:
00 = A
01 = B
10 = C
11 = D
Status Registers (Read Only), x = [A, ...,D]
30804
[0:1]A XAUISTAT[A:D][0:1]
[2:3]B
[4:5]C
[6:7]D
00
XAUI Status Register. Status of XAUI link state machine for Channel x
00—No synchronization.
01—No comma (see XAUI state machine) and at least 1 cell value detected
10—Synchronization done.
11—Not used.
XAUISTAT_x[0:1] = 00 on device reset.
160
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30805
30814
Bit
Name
[0]A
[1]B
[2]C
[3]D
DEMUXWAS[A:D]
[4]A
[5]B
[6]C
[7]D
CH248_SYNC[A:D]
[0:2]
Reserved
Reset
Value
(0x)
00
Description
Status of Word Alignment. When DEMUX_WAS[A:D] = “1”, word alignment
is achieved for Channel x.
DEMUX_WAS[A:D]= “0” on device reset.
Status of Channel Alignment. When CH248_SYNC[A:D] = ”1”, multi-channel
alignment is achieved for Channel x.
CH248_SYNC[A:D]= “0” on device reset.
[3]A&B SYNC2[1:2]OOSL
[4]C&
D
Multi-Channel Out-Of-Sync Status. When SYNC2[1:2] OOS= “1”, dual-channel synchronization has failed.
SYNC2[1:2] OOS on device reset.
[5]
SYNC4OOS
Multi-Channel Out-Of-Sync Status. When SYNC4_OOS= “1”, quad-channel
synchronization has failed.
SYNC4_OOS= “0” on device reset.
[6:7]
Reserved
SPI4 Core RX Control Registers (Read and Write)
30900 A
30A00 B
[0:7]
RX_CAL_M_MAIN
00
Number of times calendar sequence is repeated between insertions of framing pattern (RX SPI4, main)
30901 A
30A01 B
[0:5]
Reserved
[6:7]
RX_CAL_LEN_MAIN 00
Length of calendar sequence on the RX status frame (SPI4, main)
This is the most significant 2 bits of 10 total.
30902 A
30A02 B
[0:7]
RX_CAL_LEN_MAIN 00
Length of calendar sequence on the RX status frame (SPI4, main).
This is the least significant 8 bits of 10 total
30903 A
30A03 B
[0:7]
RX_CAL_M_SHD
00
Number of times shadow calendar sequence is repeated between insertions
of framing pattern for the RX side of SPI4.
30904 A
30A04 B
[0:5]
Reserved
[6:7]
RX_CAL_LEN_SHD
00
Shadow calendar length for the RX status frame of SPI4.
Upper 2 bits.
30905 A
30A05
[0:7]
RX_CAL_LEN_SHD
00
Shadow calendar length for the RX status frame of SPI4.
Lower 8 bits.
30906 A
30A06 B
[0:1]
RX_DPRAM_0_NUM 00
FIFO
Number of virtual FIFOs in RX DPRAM bank 0
00 = 1 FIFO
01 = 2 FIFOs
10 = 4 FIFOs
11 = 8 FIFOs
[2:3]
RX_DPRAM_1_NUM
FIFO
Number of virtual FIFOs in RX DPRAM bank 1
[4:5]
RX_DPRAM_2_NUM
FIFO
Number of virtual FIFOs in RX DPRAM bank 2
[6:7]
RX_DPRAM_3_NUM
FIFO
Number of virtual FIFOs in RX DPRAM bank 3
161
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30907 A
30A07 B
30910 A
30A10 B
Bit
Name
Reset
Value
(0x)
Description
[0:1]
RX_DPRAM_0_AGG 00
R_MODE
RX bank 0 aggregation mode
00 = 32 bit data
01 = 64 bit data
10 = 128 bit data
11 = not valid
[2:3]
RX_DPRAM_1_AGG
R_MODE
RX bank 1 aggregation mode
[4:5]
RX_DPRAM_2_AGG
R_MODE
RX bank 2 aggregation mode
[6:7]
RX_DPRAM_3_AGG
R_MODE
RX bank 3 aggregation mode
[0]
Reserved
[1:3]
RX_DIP4_ERR_TH
[4]
RX_DISABLE_STAT
US
Causes 11 word to be sent on RX status frame. In turn causes far-end TX to
cancel all credits and send a training pattern.
[5]
RX_MASK_DIP4
Allows SPI4 link to be used in presence of errors on data input.
[6]
RX_EN_TRAINING
Enable detection of training patterns on the RX side.
00
Number of consecutive bad/good DIP-4 code words for SPI4 RX to
lose/gain alignment. Loss of alignment is indicated by RX_ALGN_OFF_STS
[7]
RX_EN_BASELINE
Enable RX baseline process
30911 A
30A11 B
[0:7]
RX_FIFO_THRESHO 00
LD_H
High watermark threshold for async FIFO within RDP.
30912 A
30A12 B
[0:3]
RX_DPRAM_FIFO_
OVERRUN_INT_EN
These bits act as an enable for the status flags and the interrupts regarding
overrun of the 4 RX DPRAM FIFO banks.
[4:7]
RX_DPRAM_FIFO_U
RRUN_INT_EN
These bits act as an enable for the status flags and the interrupts regarding
underrun of the 4 RX DPRAM FIFO banks.
[0]
RX_PLL_LOL_INT_E 00
N
This bit enables the status flag and the interrupt regarding loss of lock in the
SPI4 core (high-speed macrocell) PLL.
See RX_PLL_LOL_STS in register 3091C[A], 3091C[B].
[1]
RX_BAS_DONE_INT
_EN
This bit enables the status flag and the interrupt for the SPI4 core when RDI
completes the baselining process. Baselining is the self-alignment power-up
process that the macro does after it detects lock of the PLL.
See RX_BAS_DONE_STS in register 3091C[A], 3091C[B].
[2]
RX_BAS_ERR_INT_
EN
This bit enables the status flag and the interrupt for the SPI4 core when RDI
fails its internal self-alignment process.
See RX_BAS_ERR_STS in register 3091C[A], 3091C[B].
[3]
RX_DSKW_DONE_I
NT_EN
This bit enables the status flag and the interrupt for the SPI4 core when RDI
completes its dynamic alignment process.
See RX_DSKW_DONE_STS in register 3091C[A], 3091C[B].
[4]
RX_DSKW_ERR_IN
T_EN
This bit enables the status flag and the interrupt for the SPI4 core when RDI
fails to dynamically align.
See RX_DSKW_ERR_STS in register 3091C[A], 3091C[B].
[5]
RX_TRN_DET_INT_
EN
This bit enables the status flag and the interrupt for the SPI4 core when RDI
detects training patterns.
See RX_TRN_DET_STS in register 3091C[A], 3091C[B].
[6]
RX_ALGN_OFF_INT
_EN
This bit enables the status flag and the interrupt for the SPI4 core loss of RX
alignment due to excess consecutive DIP4 errors.
See RX_ALGN_OFF_STS in register 3091C[A], 3091C[B].
[7]
TX_STATUS_LOF_IN
T_EN
This bit enables the status flag and the interrupt for the SPI4 core TX status
from having too many consecutive DIP2 errors.
See TX_STATUS_LOF_STS
30913 A
30A13 B
00
162
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
SPI4 Core TX/RX Control Registers (Read and Write)
30914 A
30A14 B
30915 A
30A15 B
30916 A
30A16 B
[0]
Reserved
00
[1]
Reserved
[2]
RX_ILLEGAL_CTL_I
NT_EN
[3:4]
Reserved
[5]
RX_DIP4_INT_EN
This bit enables the status flag and the interrupt for the SPI4 core RX detection of a DIP4 error.
[6]
TX_DIP2_INT_EN
This bit enables the status flag and the interrupt for the SPI4 core TX detection of a status framing error (either DIP2 or unexpected 11 pattern).
[7]
RX_ASYNC_FIFO_O
VERRUN_INT_EN
This bit enables the status flag and the interrupt for the SPI4 core asynchronous FIFO in RDP block being overrun.
[0]
SPI4_QUARTER_RA 00
TE
When set to ‘1’, enables data rates of 100 - 200 Mbps. The PLLs in the
transmit and receive SPI4 high-speed blocks are bypassed in this mode.
[1]
SPI4_LOOPBK_FE
This control enables far-end loopback when it is set to 1. Far-end loopback
sends RDAT inputs back to TDAT outputs, sends RDCLK back to TDCLK,
sends TSTAT back to RSTAT outputs, and ATSCLK back to RSCLK.
[2]
SPI4_LOW_SPEED_
DATA_SEL
Forces low speed data rates of (400-622 Mbits/s). The transmit PLL is still
used to synthesize the SPI4 transmit clock TDCLK. However, the dynamic
alignment block in the receive side is bypassed. No training sequences are
used in low speed mode.
[3]
SPI4_STATUS_IO_S
EL
‘0’ - Selects LVTTL I/O for SPI4 status
‘1’ - Selects LVDS I/Os for SPI4 status (Full-rate LVDS status I/Os specified
by OIF SPI4.0 is not supported).
[4]
SPI4_LOOPBK_HS
Enables loops from high-speed SPI4 TDAT outputs to RDAT inputs and
RSTAT to TSTAT status inputs just before I/O.
[5]
SPI4_LOOPBK_LS
Enables near-end parallel loop from TDP to RDP blocks and RSP to TSP
blocks bypassing the high-speed SPI4 interface logic blocks. Must enable
SPI4_LOOPBK_HS for this to work.
[6]
TX_FORCE_DIP4_E
RR
Causes TDP to send bad parity code words.
[7]
RX_FORCE_DIP2_E
RR
Causes RSP to send bad parity code words.
This bit enables the status flag and the interrupt when the SPI4 receives
unsupported extended control words.
[0:2]
Reserved
[3]
MIN_BURST_MODE 00
Set minimum burst mode for transmit path
[4]
RX_CAL_SW_EN
Inserts the calendar select word after the frame sync pattern on the receive
SPI4 status channel
[5]
RX_CAL_SEL
0 = Selects main calendar for outgoing RX status frame (calendar select
word will be “01”)
1 = Selects shadow calendar (calendar select word will be “10”)
[6]
TX_CAL_SW_EN
Detect the calendar select word after the frame sync pattern on the transmit
status
[7]
TX_BURST_TERMIN
ATION
Mode control for managing the transmission of bursts when the DPRAM
partition becomes empty in the middle of a burst.
0 =continue to try to access DPRAM for the remainder of burst.
1 = abort the burst.
163
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30917 A
30A17 B
30920 A
30A20 B
Bit
Name
Reset
Value
(0x)
Description
[0:1]
Reserved
[2]
RX_CAL_MEM_SEL 00
Enables calendar memory for SPI4 RX calendar to be written via
MPI. The RX_CAL memory encompasses address ranges 0 to 2047.
Addresses 0 to 1023 are for the main calendar; addresses 1024 to 2047 are
for the shadow calendar. SPI4 RX Calendar memory is write only.
[3]
RX_PDM_MEM_SEL
Enables memory for SPI4 RX port descriptors to be read or written via MPI.
Addresses 0 to 255 valid for this memory.
Each location contains 3 unused bits, 2 BANK_ID bits and 3 PARTITION_ID
bits.
[4]
TX_CAL_MEM_SEL
Enables calendar memory for SPI4 TX calendar to be written via
MPI. The TX_CAL memory encompasses address ranges 0 to 2047.
Addresses 0 to 1023 are for the main calendar; addresses 1024 to 2047 are
for the shadow calendar.SPI4 TX Calendar memory is write only.
[5]
TX_PDM_MEM_SEL
Enables memory for SPI4 TX port descriptors to be read or written via MPI.
The valid address range is 0 to 1023. The least significant 2 address bits are
used as byte enables.
00 accesses the PORT_ID (8 bits)
01 accesses PARTITION_ID (3 bits), an unused bit and BURST_VAL (4 bits)
10 accesses 4 unused bits, MB_EN (1 bit), M (1 bit), and BANK_ID (2 bits).
The upper 8 bits of address represent the port number being configured.
[6]
TX_CRED_MEM_SE
L
Enables read and write access to TX credits via MPI. The valid memory
address range is 0 to 511. The credit for each port is a 10-bit entity. The
upper 8 of 9 bits of address select which port to read or write. The lowest bit
of address acts as a byte select as follows:
0 accesses the least significant 8 bits of the credit field
1 accesses the most significant 2 bits (right-justified) of the credit field
[7]
TX_STAT_MEM_SEL
Enables memory for SPI4 TX status to be read or written via MPI. This
memory used address ranges 0 to 255. Each location has six left-most bits
unused and two status bits.
[0:3}
TX_DPRAM_FULL_T 00
YPE_SEL
Full level select for all partitions within bank [0:3]. Valid for 32-bit, 64-bit and
128-bit mode.
0 = truly full
1 = 3/4 FIFO lines full +1. E.g.: For a FIFO size of 32, this value will be (3/4 *
32) + 1 = 25 lines. Each line in the FIFO is always 128 bits of data irrespective of the aggregation mode
[4:7]
RX_DPRAM_EMPTY
_TYPE_SEL
Empty level select for all partitions within bank [0:3]. Valid for 32-bit, 64-bit
and 128-bit mode.
0 = truly empty
1 = 1/4 full - 1. E.g.: For a FIFO size of 32, this value will be (1/4 * 32) - 1 = 7
lines. Each line in the FIFO is always 128 bits of data irrespective of the
aggregation mode
SPI4 Core TX Control Registers (Read and Write)
30921 A
30A21 B
[0:7]
TX_CAL_M_MAIN
00
30922 A
30A22 B
[0:5]
Reserved
[6:7]
TX_CAL_LEN_MAIN 00
Length of main calendar sequence on the TX status frame. These are the
most significant 2 bits of 10 total.
30923 A
30A23
[0:7]
TX_CAL_LEN_MAIN
Length of main calendar sequence on the TX status frame. These are the
least significant 8 bits of 10 total.
30924 A
30A24 B
[0:7]
TX_CAL_M_SHD
00
Number of times the transmit main calendar sequence is repeated between
insertions of framing pattern.
Number of times the transmit shadow calendar sequence is repeated
between insertions of framing pattern.
164
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
30925 A
30A25 B
[0:5]
Reserved
[6:7]
TX_CAL_LEN_SHD
30926
30A26
[0:7]
TX_CAL_LEN_SHD
Shadow calendar length for the transmit status frame of SPI4. Lower 8 bits
30927 A
30A27 B
[0:1]
TX_DPRAM_0_NUM 00
FIFO
Number of virtual FIFOs in TX DPRAM bank 0
00 = >1 FIFO
01 = >2 FIFOs
10 = >4 FIFOs
11 = >8 FIFOs
[2:3]
TX_DPRAM_1_NUM
FIFO
Number of virtual FIFOs in TX DPRAM bank 1
[4:5]
TX_DPRAM_2_NUM
FIFO
Number of virtual FIFOs in TX DPRAM bank 2
[6:7]
TX_DPRAM_3_NUM
FIFO
Number of virtual FIFOs in TX DPRAM bank 3
[0:1]
TX_DPRAM_0_AGG 00
R_MODE
TX bank 0 aggregation mode
00 = 32 bit data
01 = 64-bit data
10 = 128-bit data
11 = not valid
[2:3]
TX_DPRAM_1_AGG
R_MODE
TX bank 1 aggregation mode
[4:5]
TX_DPRAM_2_AGG
R_MODE
TX bank 2 aggregation mode
[6:7]
TX_DPRAM_3_AGG
R_MODE
TX bank 3 aggregation mode
30931 A
30A31 B
[0:5]
Reserved
[6:7]
TX_MAX_BURST1
00
Maximum number of 16-byte bursts expected for any port when its status is
STARVING. These are the 2 most significant bits of a 10-bit number
30932 A
30A32
[0:7]
TX_MAX_BURST1
00
Maximum number of 16-byte bursts expected for any port when its status is
STARVING. These are the 8 least significant bits of a 10-bit number
30933 A
30A33 B
[0:5]
Reserved
[6:7]
TX_MAX_BURST2
30934 A
30A34 B
[0:7]
TX_MAX_BURST2
00
Maximum number of 16-byte bursts expected for any port when its status is
HUNGRY. These are the 8 least significant bits of a 10-bit number
30935 A
30A35 B
[0:7]
TX_DATA_MAX_T
(byte a)
00
Maximum interval between training sequences on the transmit data interface. A 32-bit number is formed from 4 bytes organized as {a, b, c, d} and
read left to right. When this number is “0”, training sequences are disabled.
30936 A
30A36 B
[0:7]
TX_DATA_MAX_T
(byte b)
00
Maximum interval between training sequences on the transmit data interface. A 32-bit number is formed from 4 bytes organized as {a, b, c, d} and
read left to right. When this number is “0”, training sequences are disabled.
30937 A
30A37 B
[0:7]
TX_DATA_MAX_T
(byte c)
00
Maximum interval between training sequences on the transmit data interface. A 32-bit number is formed from 4 bytes organized as {a, b, c, d} and
read left to right. When this number is “0”, training sequences are disabled.
30940 A
30A40 B
[0:7]
TX_DATA_MAX_T
(byte d)
00
Maximum interval between training sequences on the transmit data interface. A 32-bit number is formed from 4 bytes organized as {a, b, c, d} and
read left to right. When this number is "0", training sequences are disabled.
30930 A
30A30 B
00
Shadow calendar length for the transmit status frame of SPI4. Upper 2 bits
Maximum number of 16-byte bursts expected for any port when its status is
HUNGRY. These are the 2 most significant bits of a 10-bit number
165
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Reset
Value
(0x)
Name
Description
30941 A
30A41 B
[0:7]
TX_ALPHA (byte a)
00
Number of times training sequence needs to be repeated every
TX_DATA_MAX_T cycles. The number is formed from 2 TX_ALPHA bytes,
in the order {a,b}.
30942 A
30A42 B
[0:7]
TX_ALPHA (byte b)
00
Number of times training sequence needs to be repeated every
TX_DATA_MAX_T cycles. The number is formed from 2 TX_ALPHA bytes,
in the order {a,b}.
30943 A
30A43 B
[0:3]
TX_DPRAM_FIFO_O 00
VERRUN_INT_EN
These bits act as enables for the status flags and the interrupts regarding an
overrun of the 4 TX DPRAM FIFO banks.
[4:7]
TX_DPRAM_FIFO_U 00
RRUN_INT_EN
These bits act as enables for the status flags and the interrupts regarding an
underrun of the 4 TX DPRAM FIFO banks.
30944 A
30A44 B
[0:4]
Reserved
[5:7]
TX_DIP2_ERR_TH
00
Number of consecutive bad/good DIP-2 code words for SPI4 TX to lose/gain
alignment. Loss of alignment is indicated by TX_STATUS_LOF_STS
30945 A
30A45 B
[0:2]
TX_FIFO_THRESHO 00
LD_L
Low watermark threshold for sync input FIFO within TDP. This is used only if
MIN_BURST_MODE is set. Depending on the number of lines in a burst,
this threshold should be set to integer[(BURST_VAL/4) + 1]
[3:7]
TX_FIFO_THRESHO
LD_H
High watermark threshold for async FIFO within TDP to declare a full condition. This causes writes to the TDP to be held off; meaning that an overrun
condition can not occur here.
SPI4 Core RX/TX Spare Controls (Read and Write)
30946 A
30A46 B
[0:7]
Reserved
00
30908 A
30A08 B
[0:7]
Reserved
00
SPI4 Core Status Registers (Read Only)
30909 A
30A09 B
[0:7]
Reserved
3090A A
30A0A B
[0:7]
RX_DIP4_ERR_CNT 00
Count of DIP4 errors. Count will reset to “0” on a read of this register. If
count reaches maximum (255) it will hold.
3090B A
30A0B B
[0:7]
TX_DIP2_ERR_CNT 00
Count of status framing errors. See SIP2_ERR_STS. Count will reset to “0”
after a read of this register. If count reaches maximum (255) it will hold.
3090C A [0:7]
30A0C B
RX_DPRAM_0_FIFO 00
_OVERRUN_STS
Overrun status of bank 0 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_OVERRUN_INT_EN[0] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the error condition
persists.
3090D A [0:7]
30A0D B
RX_DPRAM_1_FIFO 00
_OVERRUN_STS
Overrun status of bank 1 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_OVERRUN_INT_EN[1] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the error condition
persists.
3090E A
30A0E B
[0:7]
RX_DPRAM_2_FIFO 00
_OVERRUN_STS
Overrun status of bank 2 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_OVERRUN_INT_EN[2] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the error condition
persists.
3090F A
30A0F B
[0:7]
RX_DPRAM_3_FIFO 00
_OVERRUN_STS
Overrun status of bank 3 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_OVERRUN_INT_EN[3] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the error condition
persists.
30918 A
30A18 B
[0:7]
RX_DPRAM_0_FIFO 00
_URRUN_STS
Underrun status of bank 0 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_URRUN_INT_EN[0] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the condition persists.
166
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
30919A
30A19B
[0:7]
RX_DPRAM_1_FIFO 00
_URRUN_STS
Underrun status of bank 1 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_URRUN_INT_EN[1] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the condition persists.
3091A A
30A1A B
[0:7]
RX_DPRAM_2_FIFO 00
_URRUN_STS
Underrun status of bank 2 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_URRUN_INT_EN[2] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the condition persists.
3091B A
30A1B B
[0:7]
RX_DPRAM_3_FIFO 00
_URRUN_STS
Underrun status of bank 3 DPRAM FIFOs 0 to 7. These are enabled by
RX_DPRAM_FIFO_URRUN_INT_EN[3] (register 30912[A], 30A12[B]).
These bits clear when read, but will set immediately if the condition persists.
RX_PLL_LOL_STS
Status flag for loss of lock in PLL within the SPI4 receive core. This flag is
enabled by RX_PLL_LOL_INT_EN (register 30913[A], 30A13[B]).
3091C A [0]
30A1C B
00
[1]
RX_BAS_DONE_ST
S
Status flag for SPI4 receive core completing the baselining process. Baselining is the self-alignment power-up process that the macro does after it
detects lock of the PLL. This flag is enabled by RX_BAS_DONE_INT_EN.
(register 30913[A], 30A13[B])
[2]
RX_BAS_ERR_STS
Status flag for SPI4 receive core failing its internal self-alignment process.
This flag is enables by RX_BAS_INT_EN (register 30913[A], 30A13[B]).
[3]
RX_DSKW_DONE_S
TS
Status flag for SPI4 receive dynamic alignment complete. This flag is
enabled by RX_DSKW_DONE_INT_EN.
[4]
RX_DSKW_ERR_ST
S
Status flag for SPI4 receive core failing to dynamically align. This flag is
enabled by RX_DSKW_ERR_INT_EN (register 30913[A], 30A13[B]).
[5]
RX_TRN_DET_STS
Status flag for SPI4 receive core detecting training patterns. This flag is
enabled by RX_TRN_DET_INT_EN (register 30913[A], 30A13[B]).
[6]
RX_ALGN_OFF_ST
S
Status flag for loss of data alignment due to excess consecutive DIP4 errors.
This flag is enabled by RX_ALIGN_OFF_INT_EN (register 30913[A],
30A13[B]).
[7]
TX_STATUS_LOF_S
TS
Status flag for TX status frame having too many consecutive DIP2 errors.
This flag is enabled by TX_STATUS_LOF_INT_EN (register 30913[A],
30A13[B]).
3091D A [0:1]
30A1D B [2]
Reserved
RX_ILLEGAL_CTL_
STS
0
Status flag indicating that an illegal control work was received
[3:4]
Reserved
[5]
RX_DIP4_ERR_STS 00
Status flag for DIP4 error
[6]
TX_DIP2_ERR_STS
Flag for error in framing TSTAT[0:1] inputs. This can be an unexpected 11
pattern or a DIP2 error.
[7]
RX_ASYNC_FIFO_O
VERRUN_STS
Status flag for RX FIFO overrun inside S4RDP block.
SPI4 Core TX Status Registers (Read and Write)
30928 A
30A28 B
[0:7]
TX_DPRAM_0_FIFO 00
_OVERRUN_STS
Overrun status of bank 0 TX DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_OVERRUN_INT_EN[0]. These bits clear when read, but
will set immediately if the condition persists. This will happen when writing to
the DPRAM FIFOs while SPI[A,B]_k_FIFO_FULL_j is high.
30929 A
30A29 B
[0:7]
TX_DPRAM_1_FIFO 00
_OVERRUN_STS
Overrun status of bank 1 TX DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_OVERRUN_INT_EN[1]. These bits clear when read, but
will set immediately if the condition persists. This will happen when writing to
the DPRAM FIFOs while SPI[A,B]_k_FIFO_FULL_j is high.
167
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
3092A A
30A2A B
[0:7]
TX_DPRAM_2_FIFO 00
_OVERRUN_STS
Overrun status of bank 2 TX DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_OVERRUN_INT_EN[2]. These bits clear when read, but
will set immediately if the condition persists. This will happen when writing to
the DPRAM FIFOs while SPI[A,B]_k_FIFO_FULL_j is high.
3092B A
30A2B B
[0:7]
TX_DPRAM_3_FIFO 00
_OVERRUN_STS
Overrun status of bank 3 TX DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_OVERRUN_INT_EN[3]. These bits clear when read, but
will set immediately if the condition persists. This will happen when writing to
the DPRAM FIFOs while SPI[A,B]_k_FIFO_FULL_j is high.
3092C A [0:7]
30A2C B
TX_DPRAM_0_FIFO 00
_URRUN_STS
Underrun status of bank 0 DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_URRUN_INT_EN[0]. These bits clear when read, but
will set immediately if the condition persists.
3092D A [0:7]
30A2D B
TX_DPRAM_1_FIFO 00
_URRUN_STS
Underrun status of bank 1 DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_URRUN_INT_EN[1]. These bits clear when read, but
will set immediately if the condition persists.
3092E A
30A2E B
[0:7]
TX_DPRAM_2_FIFO 00
_URRUN_STS
Underrun status of bank 2 DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_URRUN_INT_EN[2]. These bits clear when read, but
will set immediately if the condition persists.
3092F A
30A2F B
[0:7]
TX_DPRAM_3_FIFO 00
_URRUN_STS
Underrun status of bank 3 DPRAM FIFOs 0 to 7. These are enabled by
TX_DPRAM_FIFO_URRUN_INT_EN[3]. These bits clear when read, but
will set immediately if the condition persists.
Memory Controller Control Registers (Read and Write)
30B00
30B01
[0:3]
MC_FULL_THRESH 00
OLD
This 4-bit number sets the threshold for the MC_WFIFO_FULL flag for the
write data FIFO. Example: if the field is 0100, then the MC_WFIFO_FULL
flag will be raised when there are 4 (or fewer) filled slots remaining in the
FIFO.
[4:7]
MC_EMPTY_THRES
HOLD
This 4-bit number sets the threshold for the MC_RFIFO_EMPTY flag for the
read data FIFO. Example: if the field is 1010, then the MC_RFIFO_EMPTY
flag will be raised when there are 10 (or fewer) filled slots remaining in the
FIFO.
[0]
MC_RD_DFIFO_UR
RUN_INT_EN
[1]
MC_RD_IFIFO_URR
UN_INT_EN
Enable for Memory Controller read instruction FIFO underrun status flag
MC_RD_IFIFO_URRUN_STS, and associated interrupt MEM_CTRL1_INT.
[2]
MC_WR_DFIFO_UR
RUN_INT_EN
Enable for Memory Controller write data FIFO underrun status flag
MC_WR_DFIFO_URRUN_STS, and associated interrupt
MEM_CTRL1_INT.
[3]
MC_WR_IFIFO_URR
UN_INT_EN
Enable for Memory Controller write instruction FIFO underrun status flag
MC_WR_IFIFO_URRUN_STS, and associated interrupt MEM_CTRL1_INT.
[4]
MC_RD_DFIFO_OV
ERRUN_INT_EN
Enable for Memory Controller read data FIFO overrun status flag
MC_RD_DFIFO_OVERRUN_STS, and associated interrupt
MEM_CTRL1_INT. HW_Issue 23 indicates this should never happen.
[5]
MC_RD_IFIFO_OVE
RRUN_INT_EN
Enable for Memory Controller read instruction FIFO overrun status flag
MC_RD_IFIFO_OVERRUN_STS, and associated interrupt
MEM_CTRL1_INT.
[6]
MC_WR_DFIFO_OV
ERRUN_INT_EN
Enable for Memory Controller write data FIFO overrun status flag
MC_WR_DFIFO_OVERRUN_STS, and associated interrupt
MEM_CTRL1_INT.
[7]
MC_WR_IFIFO_OVE
RRUN_INT_EN
Enable for Memory Controller write instruction FIFO overrun status flag
MC_WR_IFIFO_OVERRUN_STS, and associated interrupt
MEM_CTRL1_INT.
00
Enable for Memory Controller read data FIFO underrun status flag
MC_RD_DFIFO_URRUN_STS, and associated interrupt
MEM_CTRL1_INT.
168
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30B02
30B03
30B04
Bit
Name
[0:6]
Reserved
[7]
MC_ID_ERR_INT_E
N
[0]
MC_BURST_MODE
[1]
Reserved
[2:3]
MC_ICK_SEL
[4:6]
Reserved
[7]
MC_OCK_SEL
[0]
Reserved
[1:3]
PLL_N
[4]
Reserved
[5:7]
PLL_M
30B05
[0:7}
Reserved
30B06
[0:7]
Reserved
Reset
Value
(0x)
Description
Enable for incoherent data and instruction words status flag
MC_ID_ERR_STS, and associated interrupt MEM_CTRL2_INT.
00
0 = 2-word burst
1 = 4-word burst
Input clock selector:
00 = MCREFCLK (HSTL)
01 = BTREFCLK (SPIA reference, LVTTL)
10 = ATREFCLK (SPIB reference, LVTTL)
11 = F_MC_REFCLK (FPGA)
00
Selects between input clock divided by 2, or PLL output for source of
PMIC/PMICN:
0 = input clock
1 = PLL
00
Numerator of multiplier factor for frequency of PLL output clock:
CK2X = MC_ICK * (PLL_N / PLL_M)
00
Denominator of multiplier factor for frequency of PLL Output clock:
CK2X = MC_ICK * (PLL_N / PLL_M)
Memory Controller Status Registers (Read Only)
30B08
30B09
30B0A
[0]
MC_RD_DFIFO_UR
RUN_STS
00
[1]
MC_RD_IFIFO_URR
UN_STS
Status flag for read instruction FIFO underrun. Enabled by
MC_RD_IFIFO_URRUN_INT_EN
[2]
MC_WR_DFIFO_UR
RUN_STS
Status flag for write data FIFO underrun. Enabled by
MC_WR_DFIFO_URRUN_INT_EN
[3]
MC_WR_IFIFO_URR
UN_STS
Status flag for write instruction FIFO underrun. Enabled by
MC_WR_IFIFO_URRUN_INT_EN
[4]
MC_RD_DFIFO_OV
ERRUN_STS
Status flag for read data FIFO overrun. Enabled by
MC_RD_DFIFO_OVERRUN_INT_EN
[5]
MC_RD_IFIFO_OVE
RRUN_STS
Status flag for read instruction FIFO overrun. Enabled by
MC_RD_IFIFO_OVERRUN_INT_EN
[6]
MC_WR_DFIFO_OV
ERRUN_STS
Status flag for write data FIFO overrun. Enabled by
MC_WR_DFIFO_OVERRUN_INT_EN
[7]
MC_WR_IFIFO_OVE
RRUN_STS
Status flag for write instruction FIFO overrun. Enabled by
MC_WR_IFIFO_OVERRUN_INT_EN
[0:6]
Reserved
[7]
MC_ID_ERR_STS
[0:7]
Reserved
00
Status flag for read data FIFO underrun. Enabled by
MC_RD_DFIFO_URRUN_INT_EN
Status flag for incoherent data and instruction words. Enabled by
MC_ID_ERR_INT_EN.
169
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
Bit
Name
Reset
Value
(0x)
Description
Common Control Registers (Read and Write)
30B20
30B21
[0:3]
Reserved
[4]
HARD_RESET_FC
[5]
SOFT_RESET_MC
Software reset for Memory Controller block
[6]
SOFT_RESET_S4A
Software reset for SPIA block
[7]
SOFT_RESET_S4B
[0:6]
COM_SPARE_C
[7]
FORCE_INT
00
Hard reset for SERDES block. When set to 1, disabled SERDES logic by
resetting it. Same functionality as interface signal FPGA_RESET_FC
Software reset for SPIB block
00
Spare common control bits
Force all the enabled status and interrupt bits
Common Status Registers (Read and Write)
30B28
[0:7]
Reserved
30B29
[0]
SERDES_INT
Reserved
[1]
MEM_CTRL2_INT
Signals that an enabled interrupt has come from the Memory Controller
other than the FIFOs. This is cleared when read and will only reassert when
the underlying event goes away and comes back.
[2]
MEM_CTRL1_INT
Signals that an enabled interrupt has come from the Memory Controller
FIFOs. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
[3]
DPRAM_INT
Signals that an enabled interrupt has come from one of the DPRAM FIFO
banks. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
[4]
SPI_B_COR2_INT
Signals that an enabled interrupt has come from the register 30A1D. This is
cleared when read and will only reassert when the underlying event goes
away and comes back.
[5]
SPI_B_COR1_INT
Signals that an enabled interrupt has come from register 30A1C. This is
cleared when read and will only reassert when the underlying event goes
away and comes back.
[6]
SPI_A_COR2_INT
Signals that an enabled interrupt has come from register 3091D. This is
cleared when read and will only reassert when the underlying event goes
away and comes back.
[7]
SPI_A_COR1_INT
Signals that an enabled interrupt has come from register 3091C. This is
cleared when read and will only reassert when the underlying event goes
away and comes back.
00
Signals that an enabled interrupt has come from the SERDES. This is
cleared when read and will only reassert when the underlying event goes
away and comes back.
170
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 47. Memory Map (Continued)
(0x)
Absolute
Address
30B2A
30B2B
Bit
Name
Reset
Value
(0x)
00
Description
[0]
TX_INT_B
[1]
RX_INT_B
Signals that an enabled interrupt has come from RX DPRAM FIFOs for SPI4
core B. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
[2]
TX_INT_A
Signals that an enabled interrupt has come from TX DPRAM FIFOs for SPI4
core A. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
[3]
RX_INT_A
Signals that an enabled interrupt has come from RX DPRAM FIFOs for SPI4
core B. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
[4]
BANK_3_INT
Signals that an enabled interrupt has come from DPRAM bank 3 FIFOs (or
both SPI4 blocks, both TX and RX flags). This is cleared when read and will
only reassert when the underlying event goes away and comes back.
[5]
BANK_2_INT
Signals that an enabled interrupt has come from DPRAM bank 2 FIFOs (or
both SPI4 blocks, both TX and RX flags). This is cleared when read and will
only reassert when the underlying event goes away and comes back.
[6]
BANK_1_INT
Signals that an enabled interrupt has come from DPRAM bank 1 FIFOs (or
both SPI4 blocks, both TX and RX flags). This is cleared when read and will
only reassert when the underlying event goes away and comes back.
[7]
BANK_0_INT
Signals that an enabled interrupt has come from DPRAM bank 0 FIFOs (or
both SPI4 blocks, both TX and RX flags). This is cleared when read and will
only reassert when the underlying event goes away and comes back.
[0:7]
COM_SPARE_S
00
Signals that an enabled interrupt has come from TX DPRAM FIFOs for SPI4
core B. This is cleared when read and will only reassert when the underlying
event goes away and comes back.
Spare common status bits
Embedded Control Memory Access (31000-31FFF)
31000
[0:7]
data[7:0]
00
Embedded control memories are accessed when register addresses 310031FFF are written or read. The address passed to the embedded memories
is the lower 12 bits of the register address. Writing to a register address in
this range causes data to be transferred to the selected embedded memories. More than one memory can be written with a single operation by having
multiple select bits active. The select bits are 30917 and 30A17 registers.
Reading from a register address in this range causes the data in the memory selected to appear. The following priority rules apply to the selection of
which memory is read from.
(1) 30917 bits take precedence over bits in the 30A17 register.
(2) lower bit numbers take precedence over higher bit numbers within a register.
171
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Absolute Maximum Ratings
Stresses in excess of the absolute maximum ratings can cause permanent damage to the device. These are absolute stress ratings only. Functional operation of the device is not implied at these or any other conditions in excess
of those given in the operations sections of this data sheet. Exposure to absolute maximum ratings for extended
periods can adversely affect device reliability.
The ORCA Series 4 FPSCs include circuitry designed to protect the chips from damaging substrate injection currents and to prevent accumulations of static charge. Nevertheless, conventional precautions should be observed
during storage, handling, and use to avoid exposure to excessive electrical stress
Table 48. Absolute Maximum Ratings.
Parameter
Storage Temperature
Power Supply Voltage with Respect to Ground
SPI4 Voltages with respect to Ground
Symbol
Min.
Max.
Unit
TSTG
-65
150
°C
VDD33
- 0.3
4.2
V
VDD33_FPGAPLL
-0.3
4.2
V
VDD15
-0.3
2.0
V
VDDIO
- 0.3
4.2
V
VDDA_SPIA
-0.3
2.0
V
VDDA_SPIB
-0.3
2.0
V
VDDA_SPIC
-0.3
2.0
V
VDDA_SPID
-0.3
2.0
V
VDDH
-0.3
2.0
V
VDD_PLL
-0.3
4.2
V
VDD_ANA
-0.3
2.0
V
VDDGB
-0.3
2.0
V
FPGA Input Signal with Respect to Ground
VIN
VSS – 0.3
VDDIO + 0.3
V
FPGA Signal Applied to High-impedance Output
—
VSS – 0.3
VDDIO + 0.3
V
Maximum Package Body (Soldering) Temperature
—
—
220
°C
Memory Controller Voltages with respect to Ground
SERDES Supply Voltages
172
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Recommended Operating Conditions
Table 49. Recommended Operating Conditions
Parameter
Power Supply Voltage with respect to Ground1
SPI4 Voltages with respect to Ground
Memory Controller Voltages with respect to Ground
SERDES Supply Voltage
SERDES CML I/O Supply Voltages
FPGA Input Voltage
Memory Controller Input Voltage2
Symbol
Min.
Max.
Unit
VDD33
3.0
3.6
V
VDD33_FPGAPLL
3.0
3.6
V
VDD15
1.425
1.575
V
VDDA_SPIA
1.425
1.575
V
VDDA_SPIB
1.425
1.575
V
VDDA_SPIC
1.425
1.575
V
VDDA_SPID
1.425
1.575
V
2
VDDH
1.425
1.575
V
REF_1
0.64
0.87
V
REF_2
0.64
0.87
V
REF_3
0.64
0.87
V
REF_4
0.64
0.87
V
VDDA_PLL
3.0
3.6
V
VDD_ANA
1.425
1.575
V
VDDGB
1.425
1.575
V
VDDIB
1.425
1.89
V
VDDOB
1.425
1.89
V
V_IN
Vss-0.3
VDDIO to +0.3
V
V_IWMCTRL
Vss-0.3
1.89
V
TJ
– 40
125
°C
Junction Temperature
1. For FPGA Recommended Operating Conditions and Electrical Characteristics, see the Recommended Operating Conditions and Electrical Characteristics tables in the ORCA Series 4 FPGA data sheet (OR4E06) and the ORCA Series 4 I/O Buffer Technical Note.
2 Memory Controller 1.8V tolerant with VDDH = 1.5V ± 5%
173
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 Power Tables
Table 50. ORSPI4 Post-configuration Standby Current
Clock Frequency
Parameter
VDD15*
VDD33*
VDDH
Unit
500
300
200
mA
Post-configuration
Standby Current
* Conditions: TA = 85°C, VDD15 = 1.575V, VDD33 = 3.6V, VDDIO = 3.6V, internal oscillator running, no output loads, inputs VDDIO or VSS.
Standby current is tested with the embedded core in a powered down state.
Table 51. ORSPI4 Combined SPIA and SPIB Worst Case Power Table
Parameter
Reference
Clock
Frequency
VDD15
VDDA_SPI[A:D]
Power*
VDD33
Power*
Power per SPI
Interface*
Unit
0.887
0.518
1.405
W
0.570
0.486
1.056
W
0.513
0.493
1.006
W
0.082
0.436
0.518
W
0.017
0.407
0.424
W
450 MHz (900 Mbps) with Dynamic Alignment
Frequency
112.5 MHz
Total
325 MHz (650 Mbps) with Static Alignment
Frequency
81.25 MHz
Total
311 MHz (622 Mbps) with Static Alignment
Frequency
77.75 MHz
Total
100 MHz (200 Mbps) Quarter Rate
Frequency
200 MHz
Total
78 MHz (156 Mbps) Quarter Rate
Frequency
156 MHz
Total
* Power measured with both SPIA and SPIB operating simultaneously. AC power only. Power numbers do not include post-configuration
standby current (see Table 50). FPGA power not included. FPGA power is application dependent – See the ORCA Series 4 Data Sheet to
calculate FPGA power.
Conditions: TA = 85°C, VDD15 = 1.575V, VDD33 = 3.6V, VDDIO = 3.6V.
Table 52. ORSPI4 QDR Memory Controller Worst Case Power Table
Parameter
Clock Frequency
Value
Unit
160
MHz
VDD15, VDDH Power
226.8
mW
VDD33 Power
46.8
mW
Total Power
273.6
mW
Note: In many applications the PLL can be disabled to reduce power.
Temperature: -40°C to 125°C, Power Supplies: VDD15, VDDH = 1.575V, VDD33 = 3.6V, Data Pattern: PRBS 2^31-1
174
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 53. ORSPI4 SERDES Worst Case Power Table
Parameter
Operating
Frequency
VDD151, 2
Units
SERDES, MUX/DEMUX, Align FIFO and I/O (per channel)
1.25 GHz
195
mW
SERDES, MUX/DEMUX, Align FIFO and I/O (per channel)
2.5 GHz
210
mW
SERDES, MUX/DEMUX, Align FIFO and I/O (per channel)
3.125 GHz
225
mW
8b/10b Encoder/Decoder (per channel)
3.125 GHz
50
mW
1. With all channels operating, Temperature: -40°C to 125°C, Power Supplies: VDD_ANA, VDDIB, VDDOB = 1.575V, Data Pattern: PRBS 2^31-1
2. With ORSPI4 CML output buffers connected to ORSPI4 CML input buffers. Actual power dissipation can vary depending on the termination
used.
175
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPI4 Electrical and Timing Characteristics
SPI4 LVDS I/O
Table 54. Driver DC Data*
Parameter
Output Voltage High, VOA or VOB
Output Voltage Low, VOA or VOB
Output Differential Voltage
Symbol
Test Conditions
VOH
RLOAD = 100 Ω ± 1%
Min.
Typ.
Max.
Units
—
—
1.475 †
V
V
VOL
RLOAD = 100 Ω ± 1%
0.925
—
—
⏐VOD⏐
RLOAD = 100 Ω ± 1%
0.25
—
0.45 †
†
V
VOS
RLOAD = 100 Ω ± 1%
1.125*
—
1.275
Output Impedance, Differential
Ro
VCM = 1.0 V and 1.4 V
80
100
120
W
RO Mismatch Between A and B
Δ RO
Output Offset Voltage
Change in Differential Voltage Between
Complementary States
⏐Δ VOD⏐
†
V
VCM = 1.0 V and 1.4 V
—
—
10
%
RLOAD = 100 Ω ± 1%
—
—
25
mV
RLOAD = 100 Ω ± 1%
—
—
25
mV
Driver shorted to GND
—
—
24
mA
Change in Output Offset Voltage
Between Complementary States
Δ VOS
Output Current
ISA, ISB
Output Current
ISAB
Drivers shorted together
—
—
12
mA
|Ixa|, |Ixb|
VDD = 0 V
VPAD, VPADN = 0 V—2.5 V
—
—
10
mA
Power-off Output Leakage
1. VDD33 = 3.1 V—3.5 V, VDD15 = 1.4 V—1.6 V, –40 ˚C.
2. External reference, REF10 = 1.0 V ± 3%, REF14 = 1.4 V ± 3%.
Table 55. Receiver DC Data1
Parameter
Input Voltage Range, VIA or VIB
Input Differential Threshold
Input Differential Hysteresis
Receiver Differential Input Impedance
Symbol
Test Conditions
Min.
Typ.
Max.
Units
VI
⏐VGPD⏐ < 925 mV
DC – 1 MHz
0.0
1.2
2.4
V
VIDTH
⏐VGPD⏐ < 925 mV
450 MHz
–100
—
100
mV
VHYST
(+VIDTHH) – (–VIDTHL)
25
—
—
mV
With build-in termination,
center-tapped
80
100
120
Ω
RIN
1. VDD = 3.1V - 3.5V, 0 °C - 125 °C.
Table 56. SPI4 LVDS Operating Parameters
Parameter
Test Conditions
Min.
Normal
Max.
Units
Transmit Termination Resistor
—
80
100
120
Ω.
Receiver Termination Resistor
—
80
100
120
Ω.
Note: Under worst-case operating conditions, the LVDS driver will withstand a disabled or unpowered receiver for an unlimited period of time
without being damaged. Similarly, when outputs are short-circuited to each other or to ground, the LVDS will not suffer permanent damage.
The LVDS driver supports hot insertion. Under a well-controlled environment, the LVDS I/O can drive backplane as well as cable.
176
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 88. Output Buffer Delays
ts[i]
PAD
OUT
out[i]
PAD
OUT
3pF
3pF
Table 57. LVDS Driver AC Data1
Parameter
Symbol
Test Conditions
Min.
Typ.
Max.
Units
tF
ZL = 100 Ω ± 1%
CPAD = 3.0 pF, CPAD = 3.0 pF
100
—
210
ps
tR
ZL = 100 Ω ± 1%
CPAD = 3.0 pF, CPAD = 3.0 pF
100
—
210
ps
tSKEW1
Any differential pair on package at 50% point of the transition
—
—
50
ps
VOD Fall Time, 80% to 20%
VOD Rise Time, 20% to 80%
Differential Skew
|tPHLA – tPLHB| or |tPHLB – tPLHA|
1. VDD33 = 3.1V - 3.5 V, VDD15 = 1.4V - 1.6 V, -40˚C.
Termination Resistor
The LVDS drivers and receivers operate at 100 Ω differential impedance, as shown below. External resistors are not
required. The differential driver and receiver buffers include termination resistors inside the device package, as shown in Figure
89 below. The center tap inputs should be connected to ground via a .01 pF capacitor.
Figure 89. SPI4 LVDS Driver and Receiver and Associated Internal Components
LVDS Driver
LVDS Receiver
50Ω
100Ω
Center Tap
50Ω
External Device Pins
177
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SPI4 AC Timing
Supported Data Rates
The SPI4 interfaces (SPIA and SPIB) on the ORSPI4 device support the following data rates
Table 58. Supported Data Rates
Data Rate
Clock
Frequency
(DDR)
Transmit
REFCLK
Frequency
500 -900 Mbps
250 - 450 MHz
62.5 - 112.5 MHz
500 -650 Mbps
250 - 325 MHz
62.5 - 81.25 MHz
100 - 200 Mbps
50 - 100 MHz
100 - 200 MHz1
Recommended Operating Mode
Dynamic
Static
Quarter-rate static mode
1 SPI[A,B]_TREFCLK_x8 internal signal is used in quarter-rate mode
SPI4.2 Data Interface
System Timing Reference Points
Figure 90 shows the system timing reference points A and B for the data path timing parameters for both the transmit interface and the receive interface.
Figure 90. System Timing Reference Points.
A
B
TDAT[15:0] /
RDAT[15:0}
TCTL/RCTL
Source
Sink
TDCLK/RDCLK
Figure 91 defines the timing parameters tdia and tdib which show the relationship of TDCLK to TDAT generated by
the ORSPI4 transmit interface. Values of tdia and tdib are given in Table 59.
Figure 91. SPI4.2 Transmit Timing Points with Respect to Clock Edge
Launch Edge
(A)
TDCLK
D TDCLK
TDAT
T dia T dib
178
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 59. SPI4.2 Transmit Data Interface Timing
Symbol
Description
Min
Max
Units
tdia
ORSPI4 transmit data (TDAT[15:0], TCTL) invalid
window before clock edge (Source A)
—
0
ps
tdib
ORSPI4 transmit data (TDAT[15:0], TCTL) invalid
window after clock edge (Source A)
—
400
ps
45%
55%
TDCLK Period
DTDCLK
TDCLK duty cycle
Figure 92 defines the timing parameters ts and th which show the setup and hold requirements at the ORSPI4
receive interface when in static mode, which are dependent on the SPI_DLYTAP register settings chosen. Values of
ts and th at all values of SPI_DLYTAP are given in Table 60.
Figure 92. SPI4.2 Receive Timing Points with Respect to Clock Edge
Capture Edge
(B)
RDCLK
RDAT
SPI_DLYTAP_A,B[2:0]=0
tS
tH
SPI_DLYTAP_A,B[2:0]=4
tS
tH
SPI_DLYTAP_A,B[2:0]=7
tS
tH
179
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 60. SPI4.2 Receive Data Interface Timing
Symbol
tS
tH
Description
Min
Max
Units
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=0
60
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=1
-20
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=2
-80
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=3
-150
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=4
-220
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=5
-280
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=6
-360
—
ps
ORSPI4 Receive data setup time with respect to
clock capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=7
-430
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=0
790
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=1
870
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=2
970
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=3
1050
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=4
1120
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=5
1210
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=6
1290
—
ps
ORSPI4 Receive data hold with respect to clock
capture edge (Sink B)
SPI_DLYTAP_A,B[2:0]=7
1370
—
ps
Note: Receive data = RDAT[15:0], RCTL.
180
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The static timing budget for a data transfer between two ORSPI4 devices at a data rate of 650 Mbps in shown in
Table 61.
Table 61. Data Path Interface Timing Example for Static Alignment (ORSPI4 to ORSPI4)
Description
Value
Unit
TDCLK/RDCLK frequency
325
MHz
Before reference point A1
Clock to data skew, clock duty cycle distortion,
data duty cycle distortion, data jitterTdia + Tdib
400
ps
Between reference points A and B
Data to data skew, relative jitter
100
ps
Subtotal Gmax
500
ps
Device setup and hold
940
ps
Sampling Error
50
ps
Total
1490
ps
Total 650 Mbps bit period
1540
ps
50
ps
After reference point B
2
Available margin
Note 1: ORSPI4 Transmit Specification
Note 2: ORSPI4 Receive Specification
181
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
The dynamic alignment timing budget for a data transfer between two ORSPI4 devices is shown in Table 62.
Table 62. Data Path Parameters for Dynamic Alignment.
Value
(UI peak-to-peak)
Description
Transmit clock jitter
0.11
Transmit data jitter with respect to clock edge
0.09
Receive clock jitter tolerance
0.60
With PRBS 2^7-1 data pattern, all channels operating, FPGA logic active, 900 Mbit/s data rate with 112.5 Mhz REFCLK, REFCLK jitter of 30 ps,
TJ = -40º C to 125º C, 1.425 V to 1.575 V supply. Jitter measured with a Wavecrest SIA-3000.
SPI4.2 Status Interface
System Timing Reference Points
Figure 93 shows the system timing reference points A and B for status channel timing parameters listed in Table
63.
Figure 93. Status Channel Reference Points
D
C
TSTAT[1:0] /
RSTAT[1:0]
Source
Sink
TSCLK/RSCLK
Note: Only status signals are shown
Figure 94. Status Channel Reference Points with Respect to Clock Edge (LVDS and LVTTL I/Os)
Launch Edge
(C)
RSCLK
RSTAT
T dia Tdib
Capture Edge
(D)
TSCLK
TSTAT
ts
th
182
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 63. Status Path Interface ORSPI4 Timing in Centered (OIF) Mode
OIF-SPI4-02.0
Specification
Requirements
Symbol
Description
fD
TDCLK/RDCLK frequency
ORSPI4 Timing in
Centered (OIF) Mode
Min
Max
Min
Max
Units
—
450
—
450
MHz
fS
TSCLK/RSCLK frequency
—
112.5
—
112.5
MHz
—
TSCLK/RSCLK duty cycle
40
60
40
60
%
tdia
RSTAT invalid with respect to clock edge
(Reference point C)
—
2.5
—
0.30
ns
tdib
RSTAT invalid with respect to clock edge
(Reference point C)
—
1.0
—
0.45
ns
Setup time for TSTAT with respect to TSCLK LVTTL Buffers (Reference point D)
2.0
—
1.0
—
ns
Setup time for TSTAT with respect to TSCLK LVDS Buffers (Reference point D)
—
—
1.0
—
ns
Hold time for TSTAT with respect to TSCLK LVTTL Buffers (Reference point D)
0.5
—
0.5
—
ns
Hold time for TSTAT with respect to TSCLK LVDS Buffers (Reference point D)
—
—
0.7
—
ns
tS
tH
Note: This table compares the OIF Specification requirements vs. the ORSPI4 Specification. There is no OIF Specification for LVDS buffers.
Figure 95. ORSPI4 Static Mode Status Signals Data Capture (Reference Point D)
0
D
TSTAT/
RSTAT
LVTTL
1
LVDS
STATUS_IO_SEL
Reference Point D
TSCLK/
RSCLK
SPI_STAM
LVTTL
0
0
1
1
LVDS
183
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 96. Status Channel Reference Points with Respect to Clock Edge (Edge Aligned Legacy Mode)
Launch Edge
(C)
RSCLK
RSTAT
T dia T dib
Capture Edge
(D)
TSCLK
TSTAT
ts
th
Table 64. Status Path Interface ORSPI4 Timing in Legacy Mode
ORSPI4 Timing in
Legacy Mode
Symbol
Description
Min
Max
Units
fD
TDCLK/RDCLK frequency
450
MHz
fS
TSCLK/RSCLK frequency
112.5
MHz
—
TSCLK/RSCLK duty cycle
40
60
%
tdia
Data invalid window with respect to clock edge
(Reference point C)
—
0.3
ns
tdib
Data invalid window with respect to clock edge
(Reference point C)
—
0.45
ns
Setup time for TSTAT with respect to TSCLK LVTTL Buffers (Reference point D)
0.5
—
ns
Setup time for TSTAT with respect to TSCLK LVDS Buffers (Reference point D)
0.7
—
ns
Hold time for TSTAT with respect to TSCLK LVTTL Buffers (Reference point D)
1.2
—
ns
Hold time for TSTAT with respect to TSCLK LVDS Buffers (Reference point D)
1.0
—
ns
tS*
tH*
Note: This table compares the OIF Specification requirements vs. the ORSPI4 Specification. There is no OIF Specification for LVDS buffers.
184
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES Electrical and Timing Characteristics
SERDES High Speed Data Transmitter
Table 65 specifies serial data output buffer parameters measured on devices with typical and worst case process
parameters and over the full range of operation conditions.
Table 65. Serial Output Timing and Levels (CML I/O)
Parameter
Rise Time (20%—80%)
Fall Time (80%—20%)
Min.
Typ.
Max.
Units
50
80
110
ps
50
80
110
ps
VDDOB – 0.30
VDDOB – 0.25
VDDOB – 0.15
V
1
Differential Swing (Full Amplitude)
600
700
1000
mVp-p
Differential Swing (Half Amplitude)1
300
350
500
mVp-p
—
86
—
Ω.
Common Mode
Output Load (external)
1. Differential swings are measured at the end of 3 inches of FR-4 and 12 inches of coax cable.
Transmitter output jitter is a critical parameter to systems with high-speed data links. Table 66 and Table 67 specify
the transmitter output jitter for typical and worst case devices over the full range of operating conditions.
Table 66. Channel Output Jitter (3.125 Gbits/s)
Parameter
Deterministic
Min.
Typ.1
Max.1
Units
—
0.13
0.24
UIp-p
Random
—
0.06
0.12
UIp-p
Total2, 3
—
0.19
0.36
UIp-p
1. With PRBS 2^7-1 data pattern, all channels operating, FPGA logic active, REFCLK jitter of 30 ps., 0oC to 85oC, 1.425 V to 1.575 V supply.
2. Wavecrest SIA-3000 instrument used to measure one-sigma (rms) random jitter component value. This value is multiplied by 14 to provide
the peak-to-peak value that corresponds to a BER of 10-12.
3. Total jitter measurement performed with Wavecrest SIA-3000 at a BER of 10-12. See instrument documentation and other Wavecrest publications for a detailed discussion of jitter types included in this measurement.
Table 67. Channel Output Jitter (2.5 Gbits/s)
Parameter
Min.
Typ.1
Max.1
Units
Deterministic
—
0.12
0.15
UIp-p
Random
—
0.06
0.16
UIp-p
Total2, 3
—
0.18
0.31
UIp-p
1. With PRBS 2^7-1 data pattern, all channels operating, FPGA logic active, REFCLK jitter of 30 ps., 0oC to 85oC, 1.425 V to 1.575 V supply.
2. Wavecrest SIA-3000 instrument used to measure one-sigma (rms) random jitter component value. This value is multiplied by 14 to provide
the peak-to-peak value that corresponds to a BER of 10-12.
3. Total jitter measurement performed with Wavecrest SIA-3000 at a BER of 10-12. See instrument documentation and other Wavecrest publications for a detailed discussion of jitter types included in this measurement.
185
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES High Speed Data Receiver
Table 68 specifies receiver parameters measured on devices with worst case process parameters and over the full
range of operation conditions.
Table 68. External Data Input Specifications
Parameter
Conditions
Min.
Typ.
Max.
Units
8b/10b encode/decode off
—
—
72
Bits
Input Data
Stream of Nontransitions
1
3.125 Gbps
80
—
—
mVp-p
—
VSS - 0.3
—
VDD_ANA + 0.3
V
Internal Buffer Resistance (Each input to VDDIB)
—
40
50
60
Ω.
PLL Lock Time3
—
—
—
Note 3
—
Sensitivity (differential), worst-case
Input Levels2
o
o
1. With PRBS 2^7-1 data pattern, all channels operating, FPGA logic active, REFCLK jitter of 30 ps., TA = 0 C to 85 C, 1.425 V to 1.575 V supply.
2. Input level min + (input peak to peak swing)/2 ≤ common mode input voltage ≤ input level max - (input peak to peak swing)/2
3. The ORSPI4 SERDES receiver performs four levels of synchronization on the incoming serial data stream, providing first bit, then byte
(character), then channel (32-bit word), and finally optional multi-channel alignment as described in TN1025. The PLL Lock Time is the time
required for the CDR PLL to lock to the transitions in the incoming high-speed serial data stream. If the PLL is unable to lock to the serial
data stream, it instead locks to REFCLK to stabilize the voltage-controlled oscillator (VCO), and periodically switches back to the serial data
stream to again attempt synchronization.
Input Data Jitter Tolerance
A receiver's ability to tolerate incoming signal jitter is very dependent on jitter type. High speed serial interface standards have recognized the dependency on jitter type and have recently modified specifications to indicate tolerance levels for different jitter types as they relate to specific protocols (e.g XAUI, FC, Infiniband etc.). Sinusoidal
jitter is considered to be a worst case jitter type. Table 69 shows receiver specifications with 10 MHz sinusoidal jitter injection. XAUI specific jitter tolerance measurements were measured in a separate experiment detailed in technical note TN1032, SERDES Test Chip Jitter, and are not reflected in these results.
Table 69. Receiver Sinusoidal Jitter Tolerance Specifications
Parameter
Conditions
Max.
Unit
600 mV diff eye1
0.75
UIP-P
Jitter Tolerance @ 3.125 Gbps, Worst case
1
600 mV diff eye
0.65
UIP-P
Jitter Tolerance @ 2.5 Gbps, Typical
600 mV diff eye1
0.79
UIP-P
1
0.67
UIP-P
Input Data
Jitter Tolerance @ 3.125 Gbps, Typical
Jitter Tolerance @ 2.5 Gbps, Worst case
600 mV diff eye
1. With PRBS 2^7-1 data pattern, all channels operating, FPGA logic active, REFCLK jitter of 30 ps., TA = 0oC to 85oC, 1.425 V
to 1.575 V supply. Jitter measured with a Wavecrest SIA-3000.
186
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Input Eye-Mask Characterization
Figure 97 provides an eye-mask characterization of the SERDES receiver input. The eye-mask is specified below
for two different eye-mask heights. It provides guidance on a number of input parameters, including signal amplitude and rise time limits, noise and jitter limits, and P and N input skew tolerance. Almost all detrimental characteristics of transmit signal and the interconnection link design result in eye-closure. This, combined with the eyeopening limitations of the line receiver, can provide a good indication of a link’s ability to transfer data error-free.
The Clock and Data Recovery (CDR) portion of the ORSPI4 SERDES receiver has the ability to filter incoming signal jitter that is below the clock recovery PLL bandwidth (about 3 MHz). The eye-mask specifications of Table 70
are for jitter frequencies above the PLL bandwidth of the CDR, which is a worst case condition. When jitter occurs
at frequencies below the PLL bandwidth, the receiver jitter tolerance is significantly better. For this case error-free
data detection can occur even with a completely closed eye-mask.
Figure 97. Receive Data Eye-Diagram Template (Differential)
T
1.2 V
V
H
UI
Table 70. Receiver Eye-Mask Specifications1
Parameter
Conditions
Value
Unit
Eye Opening Width (H) @ 3.125 Gbps
V=175 mV diff1
0.55
UIP-P
Eye Opening Width (T) @ 3.125 Gbps
V=175 mV diff1
0.15
UIP-P
Eye Opening Width (H) @ 3.125 Gbps
1
V=600 mV diff
0.35
UIP-P
Eye Opening Width (T) @ 3.125 Gbps
V=600 mV diff1
0.10
UIP-P
Eye Opening Width (H) @ 2.5 Gbps
1
V=175 mV diff
0.42
UIP-P
Eye Opening Width (T) @ 2.5 Gbps
V=175 mV diff1
0.15
UIP-P
Eye Opening Width (H) @ 2.5 Gbps
1
V=600 mV diff
0.33
UIP-P
Eye Opening Width (T) @ 2.5 Gbps
V=600 mV diff1
0.10
UIP-P
Input Data
1. With PRBS 2^7-1 data pattern, 10 MHz sinusoidal jitter, all channels operating, FPGA logic active, REFCLK jitter
of 30 ps., TA = 0oC to 85oC, 1.425 V to 1.575 V supply.
187
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
SERDES External Reference Clock
The external reference clock selection and its interface are a critical part of system applications for this product.
Table 71 specifies reference clock requirements, over the full range of operating conditions. The designer is
encourage to read TN1040, SERDES Reference Clock, which discusses various aspects of this system element
and its interconnection.
Table 71. Reference Clock Specifications (REFCLKP and REFCLKN)
Parameter
Min.
Frequency Range
Frequency Tolerance1
Typ.
Max.
Units
60
—
185
MHz
-350
—
350
ppm
Duty Cycle (Measured at 50% Amplitude Point)
40
50
60
%
Rise Time
—
500
1000
ps
Fall Time
—
500
1000
ps
P–N Input Skew
—
—
75
ps
Differential Amplitude
500
800
2 x VDDIB
mVp-p
Common Mode Level
Vsingle-ended/2
0.75
VDD15 – (Vsingle-ended/2)
V
250
400
VDDIB
mVp-p
Input Capacitance (at REFCLKP)
—
—
5
pF
Input Capacitance (at RECLKN)
—
—
5
pF
Single-Ended Amplitude
1. This specification indicates the capability of the high-speed receiver CDR PLL to acquire lock when the reference clock frequency and
incoming data rate are not synchronized.
SERDES Core Timing Characteristics
Table 72 summarizes the end-to-end latencies through the embedded core for the various modes. All latencies are
given in clock cycles for system clocks at half the REFCLK_[A:B] frequency. For a REFCLK_[A:B] of 156.25 MHz, a
system clock cycle is 6.4 ns.
Table 72. Signal Latencies, Embedded Core
Operating Mode
Signal Latency (max.)
Transmit Path
5 clock cycles
Receive Path
Multi-Channel Alignment Bypassed1
4.5 clock cycles
With Multi-Channel Alignment1
13.5-22.5 clock cycles
1. With multi-channel alignment, the latency is largest when the skew between channels is at the maximum that can be correctly
compensated for (18 clock cycles). The latency specified in the table is for data from the channel received first.
188
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Memory Controller Electrical and Timing Characteristics
HSTL Class I and Class II
HSTL (High-Speed Transceiver Logic) - JEDEC standard JES 8-6 (August 1995), is a technology independent
interface standard for digital integrated circuits. It is a voltage scalable and technology independent I/O structure.
The I/O structures required by this standard contain a reference receiver (typically 50% of the VDDH), described as
a REFI for single-ended inputs and outputs using power supply inputs (VDDH) that may differ from those operating
the device itself. This buffer is designed to receive HSTL signal levels from devices wtih1.5V HSTL I/Os. HSTL also
allows chips with different power supplies to easily communicate with each other.
Table 73. HSTL Class II DC Operating Specifications
Class
Class 1
Class 2
Parameter
Condition
Min
Typical
Max
VDDH
--
REFI1
--
VTERM1
VIH
Unit
1.425
1.5
1.575
V
0.64
0.75
0.87
V
--
--
0.75
-
V
--
REFI + 100mV
0.85
VDDH + 0.3
V
VIL
--
-0.3
0.65
REFI -100 mV
V
VOH2
IOH > 8 mA
VDDH - 0.4
1.1
--
V
VOL
IOL > -8 mA
--
--
0.4
V
VOH2
IOH > 16 mA
VDDH - 0.4
1.1
--
V
VOL
IOL > -16 mA
--
--
0.4
V
1. 50% VDDH
2. VDDH - 400 mV.
189
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 98. HSTL Termination Scheme
VDDMEM_IO
2
VDDH (1.5V)
75 ohm
PMIK(N)
HSTL-II
Output
Buffer
Z = 50 ohm
&
VDDMEM_IO
2
VDDH
2
VTERM =
VDDMEM_IO (1.5V)
PMIC(N)
Signals
75 ohm
Z = 50 ohm
REFI = VDDH
2
VDDMEM_IO
2
VDDH (1.5V)
PMID,
PMIA,
PMIWN,
PMIRN
50 ohm
25 ohm
HSTL-II
Output
Buffer
Z = 50 ohm
VDDMEM_IO
2
VDDH
2
VTERM =
&
VDDMEM_IO (1.5V)
PMIQ
50 ohm
Signals
Z = 50 ohm
REFI = VDDH
2
EXT_1K
ORSPI4
QDR Memory Device *
* Refer to memory specification
for specific terminations
1.5 Kohm
Note: Refer to Technical Note TN1046 for more detailed board design guidelines for the ORSPI4 QDR Memory Controller.
190
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Supported Data Rates
The Memory Controller on the ORSPI4 device can support the following data rates.
Table 74. Supported Data Rates (36-Bit QDR-II, 32 bit Considered Data)
Data Rate
-1
Clock Frequency (DDR)
156 MHz
-2
Data Rate1, 2
-3
1, 2
Clock Frequency (DDR) Data Rate
3
19.97 Gbps
3
165 MHz
21.12 Gbps
Clock Frequency (DDR)
Data Rate1, 2
175 MHz
22.40 Gbps3
1. Data Rate = (Max. write data rate + Max. read data rate) for 32 bits of data.
2. Characterized with 200 Mhz rated QDR-II SRAM devices with their DLL enabled. Duty cycle of PMIC and PMICN signals was close to 50%.
3. Assumes board trace lengths of 3 inches or less.
Memory Controller Input/Output Timing Specification
Figure 99. Memory Controller Output Timing Specifications
PMIK
DPMIK(N)
PMIKN
Tav
Tai
PMIA
Tdv
T di
PMID
Table 75. Memory Controller Output Timing Specifications
Symbol
Min Value
Max Value
Units
tai
PMIK to previous address invalid
1.2
–
ns
tav
PMIK to address valid
2.0
–
ns
tdi
PMIK to previous data invalid
1.0
–
ns
tdv
PMIK to data valid
2.65
–
ns
60%
PMIK/PMIKN
Clock Cycle
DPMIK(N)
Description
PMIK/PMINKN duty cycle
40%
191
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 100. Memory Controller Input Timing Specifications
PMIC
PMICN
PMIQ
T rs Trh Tfs T rs
Table 76. Memory Controller Input Timing Specifications
Symbol
Description
Min Value
Units
trs
PMIQ data in setup with respect to PMIC clock rising edge
-0.5
ns
trh
PMIQ data in hold with respect to PMIC clock rising edge
2.0
ns
tfs
PMIQ data in setup with respect to PMICN clock rising edge
-0.5
ns
tfh
PMIQ data in hold with respect to PMICN clock rising edge
2.0
ns
192
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Power Supplies for ORSPI4
Power Supply Descriptions
Table 77 shows the ORSPI4 FPGA and embedded core power supply groupings. VDD33 Is a 3.3V positive power
supply used for 3.3 V configuration RAMs. VDD33_FPGAPLL is a 3.3V positive power supply for internal PLLs.
When using PLLs, this power supply should be well isolated from all other power supplies on the board for proper
operation. The five VDDIO supplies are positive power supply used by the FPGA I/O banks. The 1.5 volt digital
power supplies are used for the FPGA and the embedded core transmit and receive digital logic including the
microprocessor logic. The 1.5 volt analog power supply is used for SERDES high-speed analog circuitry in the
embedded core between the I/O buffers and the digital logic. The SERDES VDDIB and VDDOB power supplies can
be independently set to 1.5 V or 1.8 V, depending on the end application. The SERDES guard band supplies are
independent connection brought out to pins.
Table 77. Power Supplies
FPGA Supplies
VDD15
VDD33
VDD33_FPGAPLL
VDDIO0
VDDIO1
VDDIO5
VDDIO6
VDDIO7
The ORSPI4 SPI4 embedded core requires an isolated 1.5V supply connected to four dedicated VDDA_SPI[A:D]
pins. This supply is used to power the analog circuitry of the core between the LVDS I/O and the digital logic. The
LVDS bus also requires connections to pins used for AC center-tap termination. The dedicated LVCTAP pins should
be connected to GND through a 0.01 uFd capacitor.
The QDR memory controller portion of the embedded core has dedicated HSTL I/O buffers which require an additional 1.5V supply known as VDDH. The HSTL input buffers uses an external reference voltage. The reference voltage connects to the REFI_[1:4] pins. The REFI pins should ideally be connected to a noise immune source that is
exactly 1/2 the value of the VDDH supply.
Table 78. Embedded Core Power Supplies
Supply Description
SERDES Input Buffers (1.5/1.8V)
Name
VDDIB_A
SERDES Guardband (1.5V)
SERDES Output Buffers (1.5/1.8V)
VDDIB_C
VDDIB_D
VDDOB_C
VDDOB_D
VDDGB
VDDOB_A
SERDES Analog (1.5V)
SPI (1.5V)
VDDIB_B
VDDOB_B
VDD_ANA
VDDA_SPIA
Memory Controller PLL (3.3V)
VDDA_SPIB
VDDA_SPIC
VDDA_PLL
HSTL Input Buffer Reference Voltage
(VDDH/2)
REFI_1
REFI_2
REFI_3
REFI_4
HSTL Output Buffer Supply (1.5V)
VDDH
193
VDDA_SPID
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Recommended Power Supply Connections
Ideally, a board should have the power supplies described below:
• VDD33, VDD33_FPGAPLL and VDDIO supplies for the FPGA Logic
• A single 1.5 V source to supply power to FPGA and core digital logic. (VDD15)
• A dedicated 1.5 V power supply for the SERDES analog power pins. This will allow the end user to minimize
noise. The guard band pins can also be sourced from the analog power supplies. (VDD_ANA, VDDGB)
• SERDES TX output buffer power. The power supplies to the SERDES TX output buffers should be isolated from
the rest of the board power supplies. Special care must be taken to minimize noise when providing board level
power to these output buffers. The power supply can be 1.5 V or 1.8 V depending on the end application.
(VDDOB)
• SERDES RX input buffer power. The power supplies to the SERDES RX input buffers should be isolated from the
rest of the board power supplies. Special care must be taken to minimize noise when providing board level power
to these input buffers. The power supply can be 1.5 V or 1.8 V depending on the end application. (VDDIB)
• An isolated 1.5V supply for the VDDA_SPI to minimize noise from the common 1.5V board supply.
(VDD_SPI[A:D])
• The memory controller bus requires a dedicated 1.5V supply connected to the VDDH pins for HSTL output buffer
supply voltage. (VDDH)
• The HSTL input buffers of the Memory Controller require a voltage reference connected to the REFI pins which
is half the VDDH supply. This supply should be filtered, and should not exceed a peak-to-peak AC noise of 2% of
the VREF (DC). The HSTL buffer scheme also requires a termination resistor per signal. It is recommended that
the clock pin termination be filtered separately from the data/control pin termination to minimize noise.
• The VDDA_PLL supply pin requires a noise minimized 3.3V supply.
Recommended Power Supply Filtering Scheme
The board connections of the various SERDES VDD and VSS pins are critical to system performance. An example
demonstration board schematic is available at www.latticesemi.com.
Power supply filtering is in the form of:
• A parallel bypass capacitor network consisting of 10 µf, 0.1 µf, and 1.0 µf caps close to the power source.
• A parallel bypass capacitor network consisting of 0.01 µf and 0.1 µf close to the pin.
• The decoupling capacitor sizes are important as is the employment of various styles of capacitors. This provides
frequency response coverage across a greater frequency bandwidth. General decoupling guidelines can be
found in Lattice Semiconductor Application Note TN1068.
• Example connections are shown in Figure 101. The naming convention for the power supply sources shown in
the figure are as follows:
– Supply_1.5 V – All digital, auxiliary power pins.
– Supply_VDDIB – Input RX buffer power pins for SERDES.
– Supply_VDDOB – Output TX buffer power pins for SERDES.
– Supply_VDDANA – TX analog power pins, RX analog power pins, guard band power pins for SERDES.
– Supply_VDD33, VDDA_PLL - FPGA and Embedded PLL power pins.
– Supply VDDA_SPIA, VDDA_SPIB, VDDA_SPIC, VDDA_SPID - Analog core 1.5V SPI supplies.
– Supply VDDH - HSTL output buffer power supply of the QDR Memory Controller.
– Supply REFI_1, REFI_2, REFI_3, REFI_4 - Voltage reference for HSTL input buffer of the QDR Memory
Controller should be one-half VDDH
194
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Figure 101. Power Supply Filtering
SOURCE
PIN
4.7 μH
SUPPLY_1.5 V
VDD15
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
4.7 μH
SUPPLY_VDD Analog
VDD_ANA
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
—1 EACH FOR VDDGB_[A,B]
4.7 μH
SUPPLY_VDDIB
VDDIB
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
4.7 μH
SUPPLY_VDDOB
VDDOB
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
4.7 μH
PIN
SUPPLY_1.5 V
VDDH
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
195
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Power Supply Filtering (Continued)
SOURCE
4.7 μH
PIN
SUPPLY_1.5 V
VDDA_SPI
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
4.7 μH
SUPPLY_3.3 V
VDDA_PLL
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
4.7 μH
SUPPLY_3.3 V
VDD33_FPGAPLL
0.1 μf
10 μf
1 μf
0.01 μf
0.1 μf
—1 NETWORK FOR EVERY 2 PINS
1 μH
VDDH
1K Precision
REFI[1:4]
1K Precision
0.01 μf
0.1 μf
—1 NETWORK FOR REFI_1
REFI_2
REFI_3
REFI_4
196
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Pin Descriptions
This section describes the pins found on the Series 4 FPGAs. Any pin not described in this table is a user-programmable I/O. During configuration, the user-programmable I/Os are 3-stated with an internal pull-up resistor. If any pin
is not used (or not bonded to a package pin), it is also 3-stated with an internal pull-up resistor after configuration.
The pin descriptions in Table and throughout this data sheet show active-low signals with an overscore. The package pinout tables that follow, show this as a signal ending with _N. For example LDC and LDC_N are equivalent.
Table 79. Pin Descriptions
Symbol
I/O
Description
Dedicated Pins
VDD33
— 3.3V positive power supply. This power supply is used for 3.3 V configuration RAMs.
VDD33_FPGAPLL
— 3.3V positive power supply. This power supply is used for 3.3 V internal PLLs. This power supply should be well isolated from all other power supplies on the board for proper operation.
VDD15
— 1.5 V positive power supply for internal logic.
VDDIO
— Positive power supply used by I/O banks.
VSS
— Ground.
PTEMP
I
Temperature sensing diode pin. Dedicated input.
RESET
I
During configuration, RESET forces the restart of configuration and a pull-up is enabled. After
configuration, RESET can be used as a general FPGA input or as a direct input, which causes
all PLC latches/FFs to be asynchronously set/reset.
CCLK
O
In the master and asynchronous peripheral modes, CCLK is an output which strobes configuration data in.
I
In the slave or readback after configuration, CCLK is input synchronous with the data on DIN or
D[7:0]. CCLK is an output for daisy-chain operation when the lead device is in master, peripheral, or system bus modes.
I
As an input, a low level on DONE delays FPGA start-up after configuration.1
O
As an active-high, open-drain output, a high level on this signal indicates that configuration is
complete. DONE has an optional pull-up resistor.
PRGRM
I
PRGRM is an active-low input that forces the restart of configuration and resets the boundaryscan circuitry. This pin always has an active pull-up.
RD_CFG
I
This pin must be held high during device initialization until the INIT pin goes high. This pin
always has an active pull-up. During configuration, RD_CFG is an active-low input that activates
the TS_ALL function and 3-states all of the I/O. After configuration, RD_CFG can be selected
(via a bit stream option) to activate the TS_ALL function as described above, or, if readback is
enabled via a bit stream option, a high-to-low transition on RD_CFG will initiate readback of the
configuration data, including PFU output states, starting with frame address 0.
RD_DATA/TDO
O
RD_DATA/TDO is a dual-function pin. If used for readback, RD_DATA provides configuration
data out. If used in boundary-scan, TDO is test data out.
CFG_IRQ/MPI_IRQ
O
During JTAG, slave, master, and asynchronous peripheral configuration assertion on this
CFG_IRQ (active-low) indicates an error or errors for block RAM or FPSC initialization. MPI
active-low interrupt request output, when the MPI is used.
LVDS_R
-
Reference resistor connection for controlled impedance termination of Series 4 FPGA LVDS
inputs.
I
During power up and initialization, M0—M3 are used to select the configuration mode with their
values latched on the rising edge of INIT. During configuration, a pull-up is enabled.
DONE
Special-Purpose Pins
M[3:0]
I/O After configuration, these pins are user-programmable I/O.1
PLL_CK[0:7][TC]
I
Semi-dedicated PLL clock pins. During configuration they are 3-stated with a pull up.
I/O These pins are user-programmable I/O pins if not used by PLLs after configuration.
P[TBLR]CLK[1:0][TC]
I
Pins dedicated for the primary clock. Input pins on the middle of each side with differential pairing.
I/O After configuration these pins are user programmable I/O, if not used for clock inputs.
197
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 79. Pin Descriptions (Continued)
Symbol
TDI, TCK, TMS
I/O
Description
I
If boundary-scan is used, these pins are test data in, test clock, and test mode select inputs. If
boundary-scan is not selected, all boundary-scan functions are inhibited once configuration is
complete. Even if boundary-scan is not used, either TCK or TMS must be held at logic 1 during
configuration. Each pin has a pull-up enabled during configuration.
I/O After configuration, these pins are user-programmable I/O if boundary scan is not used.1
RDY/BUSY/RCLK
O
During configuration in asynchronous peripheral mode, RDY/RCLK indicates another byte can
be written to the FPGA. If a read operation is done when the device is selected, the same status is also available on D7 in asynchronous peripheral mode.
During the master parallel configuration mode, RCLK is a read output signal to an external
memory. This output is not normally used.
I/O After configuration this pin is a user-programmable I/O pin.1
HDC
O
High During Configuration is output high until configuration is complete. It is used as a control
output, indicating that configuration is not complete.
I/O After configuration, this pin is a user-programmable I/O pin.1
LDC
O
Low During Configuration is output low until configuration is complete. It is used as a control output, indicating that configuration is not complete.
I/O After configuration, this pin is a user-programmable I/O pin.1
INIT
CS0, CS1
I/O INIT is a bidirectional signal before and during configuration. During configuration, a pull-up is
enabled, but an external pull-up resistor is recommended. As an active-low open-drain output,
INIT is held low during power stabilization and internal clearing of memory. As an active-low
input, INIT holds the FPGA in the wait-state before the start of configuration.
After configuration, this pin is a user-programmable I/O pin.1
I
CS0 and CS1 are used in the asynchronous peripheral, slave parallel, and microprocessor configuration modes. The FPGA is selected when CS0 is low and CS1 is high. During configuration, a pull-up is enabled.
I/O After configuration, if MPI is not used, these pins are user-programmable I/O pins.1
RD/MPI_STRB
I
RD is used in the asynchronous peripheral configuration mode. A low on RD changes D[7:3]
into a status output. WR and RD should not be used simultaneously. If they are, the write strobe
overrides.
This pin is also used as the MPI data transfer strobe. As a status indication, a high indicates
ready, and a low indicates busy.
WR/MPI_RW
I
WR is used in asynchronous peripheral mode. A low on WR transfers data on D[7:0] to the
FPGA.
In MPI mode, a high on MPI_RW allows a read from the data bus, while a low causes a write
transfer to the FPGA.
I/O After configuration, if the MPI is not used, WR/MPI_RW is a user-programmable I/O pin.1
PPC_A[14:31]
I
During MPI mode the PPC_A[14:31] are used as the address bus driven by the PowerPC bus
master utilizing the least-significant bits of the PowerPC 32-bit address.
MPI_BURST
I
MPI_BURST is driven low to indicate a burst transfer is in progress in MPI mode. Driven high
indicates that the current transfer is not a burst.
MPI_BDIP
I
MPI_BDIP is driven by the PowerPC processor in MPI mode. Assertion of this pin indicates that
the second beat in front of the current one is requested by the master. Negated before the burst
transfer ends to abort the burst data phase.
MPI_TSZ[0:1]
I
MPI_TSZ[0:1] signals are driven by the bus master in MPI mode to indicate the data transfer
size for the transaction. Set 01 for byte, 10 for half-word, and 00 for word.
O
During master parallel mode A[21:0] address the configuration EPROMs up to 4M bytes.
A[21:0]
I/O If not used for MPI these pins are user-programmable I/O pins after configuration.1
MPI_ACK
O
In MPI mode this is driven low indicating the MPI received the data on the write cycle or
returned data on a read cycle.
I/O If not used for MPI these pins are user-programmable I/O pins after configuration.1
198
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 79. Pin Descriptions (Continued)
Symbol
MPI_CLK
I/O
Description
I
This is the PowerPC synchronous, positive-edge bus clock used for the MPI interface. It can be
a source of the clock for the Embedded System Bus. If MPI is used this will be the AMBA bus
clock.
I/O If not used for MPI these pins are user-programmable I/O pins after configuration.1
MPI_TEA
O
A low on the MPI transfer error acknowledge indicates that the MPI detects a bus error on the
internal system bus for the current transaction.
I/O If not used for MPI these pins are user-programmable I/O pins after configuration.1
MPI_RTRY
O
This pin requests the MPC860 to relinquish the bus and retry the cycle.
I/O If not used for MPI these pins are user-programmable I/O pins after configuration.1
D[0:31]
I/O Selectable data bus width from 8, 16, 32-bit in MPI mode. Driven by the bus master in a write
transaction and driven by MPI in a read transaction.
I
D[7:0] receive configuration data during master parallel, peripheral, and slave parallel configuration modes when WR is low and each pin has a pull-up enabled. During serial configuration
modes, D0 is the DIN input.
O
D[7:3] output internal status for asynchronous peripheral mode when RD is low.
I/O After configuration, if MPI is not used, the pins are user-programmable I/O pins.1
DP[0:3]
DIN
I/O Selectable parity bus width in MPI mode from 1, 2, 4-bit, DP[0] for D[0:7], DP[1] for D[8:15],
DP[2] for D[16:23], and DP[3] for D[24:31].
After configuration, if MPI is not used, the pins are user-programmable I/O pin.1
I
During slave serial or master serial configuration modes, DIN accepts serial configuration data
synchronous with CCLK. During parallel configuration modes, DIN is the D0 input. During configuration, a pull-up is enabled.
I/O After configuration, this pin is a user-programmable I/O pin.1
DOUT
TESTCFG
O
During configuration, DOUT is the serial data output that can drive the DIN of daisy-chained
slave devices. Data out on DOUT changes on the rising edge of CCLK.
1
I/O After configuration, DOUT is a user-programmable I/O pin.
I During configuration this pin should be held high, to allow configuration to occur. A pull up is
enabled during configuration.
I/O After configuration, TESTCFG is a user programmable I/O pin.1
1. The FPGA States of Operation section in the ORCA Series 4 FPGAs data sheet contains more information on how to control these signals
during start-up. The timing of DONE release is controlled by one set of bit stream options, and the timing of the simultaneous release of all
other configuration pins (and the activation of all user I/Os) is controlled by a second set of options.
199
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 SPI4 External I/O Description
This section describes device I/O signals to/from the SPI4 interface. Table 80 and Table 81 lists the external signals
that interface to the SPI4 block.
Table 80. SPI4 External Transmit Path Interface Signals
Pin Name
(j = A or B)
Direction
O = FPSC Output
I = FPSC Input
TSCLKj
I
Description
LVTTL transmit status clock input.
TSTATj[1:0]
I
LVTTL transmit status input
jTSCLKN
I
LVDS (negative) transmit status clock input
jTSCLKP
I
LVDS (positive) transmit status clock input
jTSTATN[1:0]
I
LVDS (negative) transmit status data input
jTSTATP[1:0]
I
LVDS (positive) transmit status data input
jTDATN[15:0]
O
LVDS (negative) transmit SPI4 data output
jTDATP[15:0]
O
LVDS (positive) transmit SPI4 data output
jTCTLN
O
LVDS (negative) transmit SPI4 control signal output
jTCTLP
O
LVDS (positive) transmit SPI4 control signal output
jTDCLKN
O
LVDS (negative) transmit SPI4 clock reference.
(100 - > 450 MHz)
jTDCLKP
O
LVDS (positive) transmit SPI4 clock reference.
(100 - >450 MHz)
jTREFCLK
I
SPI4 clock reference input.
Table 81. SPI4 External Receive Path Interface Signals
Pin Name
(j = A or B)
Direction
O = FPSC Output
I = FPSC Input
RSCLKj
O
Description
LVTTL receive status clock output.
RSTATj[1:0]
O
LVTTL receive status output
jRSCLKN
O
LVDS (negative) receive status clock output
jRSCLKP]
O
LVDS (positive) receive status clock output
jRSTATN[1:0]
O
LVDS (negative) receive status data output
jRSTATP[1:0
O
LVDS (positive) receive status data output
jRDATN[15:0]
I
LVDS (negative) receive SPI4 data input
jRDATP[15:0]
I
LVDS (positive) receive SPI4 data input
jRCTLN
I
LVDS (negative) receive SPI4 control signal input
jRCTLP
I
LVDS (positive) receive SPI4 control signal input
jRDCLKN
I
LVDS (negative) receive SPI4 clock reference.
(100 - >450 MHz)
jRDCLKP
I
LVDS (positive) receive SPI4 clock reference. (100 - >450 MHz)
200
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 82. SPI4 Miscellaneous System Signals
Pin Name
(j = A or B)
Direction
O = FPSC Output
I = FPSC Input
REF10
I
LVDS Reference voltage: 1.0 V +/- 3%
REF14
I
LVDS Reference voltage: 1.4 V +/- 3%
RESHI
I
LVDS resistor high pin (100 Ω. in series with RESLO)
RESLO
I
LVDS resistor low pin (100 Ω. in series with RESHI)
ALVCTAP1
I/O
Description
LVDS input center tap (use 0.01 μF to GND)
ALVCTAP2
I/O
LVDS input center tap (use 0.01 μF to GND)
ALVCTAP3
I/O
LVDS input center tap (use 0.01 μF to GND)
ALVCTAP4
I/O
LVDS input center tap (use 0.01 μF to GND)
ALVCTAP5
I/O
LVDS input center tap (use 0.01 μF to GND)
BLVCTAP1
I/O
LVDS input center tap (use 0.01 μF to GND)
BLVCTAP2
I/O
LVDS input center tap (use 0.01 μF to GND)
BLVCTAP3
I/O
LVDS input center tap (use 0.01 μF to GND)
BLVCTAP4
I/O
LVDS input center tap (use 0.01 μF to GND)
BLVCTAP5
I/O
LVDS input center tap (use 0.01 μF to GND)
SPARE_1
I/O
Reserved
SPARE_2
I/O
Reserved
201
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 SERDES External I/O Description
This section describes device I/O signals to/from the SERDES. Table 83 lists the external signals that interface to
the SERDES block.
Table 83. SERDES External Interface Signals
Pin Name
Direction
O = FPSC Output
I = FPSC Input
Description
SERDES Interface Pins
HDINP_A
HDINN_A
HDINP_B
HDINN_B
HDINP_C
HDINN_C
HDINP_D
HDINN_D
HDOUTP_A
HDOUTN_A
HDOUTP_B
HDOUTN_B
HDOUTP_C
HDOUTN_C
HDOUTP_D
HDOUTN_D
REFCLKP
REFCLKN
REXT
I
Serial Input for channel A
I
Serial Input for channel B
I
Serial Input for channel C
I
Serial Input for channel D
O
Serial Output for channel A
O
Serial Output for channel B
O
Serial Output for channel C
O
Serial Output for channel D
I
Reference clock to SERDES quad
--
Reference resistor
--
Reference resistor. A 3.32 KW ± 1% resistor must be connected
across REXT and REXTN. This current should handle a total of
300μA.
I
Global Reset
Integrated 50K pull-down allows chip to stay in reset state when
external driver loses power
I
LVTTL test mode pins with integrated 50K pull-ups that default
chip into operational mode when un-driven.
I
Power-down active low. Puts Core into low-power (non-functional) state.
I
Active low control input causes all output pins to be disabled.
(See Note 1)
I
Chip test pin. Integrated 50K pull-up
REXTN
Misc System Signals
RESETN
TESTMD[1:0]N
PDN
TRISTN
TESTCLK
1. Should be externally connected on board to 3.3 V pullup resistor.
202
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ORSPI4 Memory Controller External I/O Description
This section describes device I/O signals to/from the Memory Controller. Table 84 lists the external signals that
interface to the Memory Controller block.
Table 84. Memory Controller External Interface Signals
Pin Name
QDRII
SDRAM Pin
Name
Direction
O = FPSC Output
I = FPSC Input
Description
Interface to QDRII SDRAM
PMIK, PMIKN
K,K#
O
Clock for write data D, address SA, and enables W# and R#
PMID(35:0)
D(35:0)
O
Write data bus
PMIA(17:0)
SA(17:0)
O
Address bus
W#
O
Write enable (active-LO)
PMIWN
PMIRN
R#
O
Read enable (active-LO)
PMIC, PMICN
CQ,CQ#
I
Clock for read data Q
PMIQ(35:0)
Q(35:0)
I
Read data bus
-
I
Dedicated Memory Controller reference clock (HSTL)
-
I
SPIA reference clock (LVTTL). Note that this signal also is fed to
the SPIA block.
-
I
SPIB reference clock, (LVTTL). Note that this signal also is fed
to the SPIB block.
-
-
Reference resistor. Connect to a 1.5 K Ω ± 1% precision resistor
to ground. This current should handle a total of 700 μA.
REFCLK Source Inputs
MCREFCLK
ATREFCLK
BTREFCLK
Other Signals
EXT_1K
203
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Package I/O
Table 85. I/O Summary
Package
I/O Type
FTE1036
F1156/FN1156
User programmable I/O
498
356
Available programmable differential pair pins
498
356
FPGA configuration pins
7
7
FPGA dedicated function pins
2
2
Core function pins
322
301
VDD15
42
80
VDD33
14
30
VDD33_FPGAPLL
8
8
VDDIO
30
50
VSS
79
187
VDDGB
1
0
VDDIB
4
0
VDDOB
8
0
VDD_ANA
4
0
VDDA_SPI[A:D]
4
4
VDDA_PLL
1
1
VDDH
8
30
HSTL VREF
4
4
No connect
Total package pins
204
0
96
1036
1156
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Pin Tables
The ORSPI4 FPSC is available in two package types; a 1156-pin fpBGA package, and a 1036-pin ftSBGA package. Both packages are 1.0 mm pitch packages.
The 1036-pin package offers two SPI4 interfaces, or one SPI4 interface and a quad 0.6-3.7 Gbps SERDES, a highspeed QDR-II SRAM Memory Controller, and 498 user I/Os on the FPGA array.
The 1156-pin package offers two SPI4 interfaces (no SERDES available on this package offering), a high-speed
QDR-II SRAM Memory Controller, and 356 user I/Os on the FPGA array.
Table 86. 1156 fpBGA Pin Table
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
F4
-
-
O
PRD_DATA
RD_DATA/TDO
-
G4
-
-
I
PRESET_N
RESET_N
-
H4
-
-
I
PRD_CFG_N
RD_CFG_N
-
-
-
I
PPRGRM_N
PRGRM_N
-
IO
PL2D
PLL_CK0C/HPPLL
L1C
J4
H5
0 (TL) 7
H6
0 (TL) 7
IO
PL2C
PLL_CK0T/HPPLL
L1T
J6
0 (TL) 7
IO
PL3D
-
L2C
J5
0 (TL) 7
IO
PL3C
VREF_0_07
L2T
H3
0 (TL) 7
IO
PL4D
D5
L3C
J3
0 (TL) 7
IO
PL4C
D6
L3T
K4
0 (TL) 8
IO
PL5D
-
L4C
K5
0 (TL) 8
IO
PL5C
VREF_0_08
L4T
G2
0 (TL) 8
IO
PL6D
HDC
L5C
G1
0 (TL) 8
IO
PL6C
LDC_N
L5T
L5
0 (TL) 8
IO
PL7D
-
L6C
L4
0 (TL) 8
IO
PL7C
-
L6T
H2
0 (TL) 9
IO
PL8D
TESTCFG
L7C
H1
0 (TL) 9
IO
PL8C
D7
L7T
J2
0 (TL) 9
IO
PL9D
VREF_0_09
L8C
J1
0 (TL) 9
IO
PL9C
A17/PPC_A31
L8T
K2
0 (TL) 9
IO
PL10D
CS0_N
L9C
K1
0 (TL) 9
IO
PL10C
CS1
L9T
K3
0 (TL) 10
IO
PL11D
-
L10C
L3
0 (TL) 10
IO
PL11C
-
L10T
L2
0 (TL) 10
IO
PL12D
INIT_N
L11C
L1
0 (TL) 10
IO
PL12C
DOUT
L11T
M4
0 (TL) 10
IO
PL13D
VREF_0_10
L12C
M5
0 (TL) 10
IO
PL13C
A16/PPC_A30
L12T
N5
7 (CL) 1
IO
PL14D
A15/PPC_A29
L13C
N4
7 (CL) 1
IO
PL14C
A14/PPC_A28
L13T
M3
7 (CL) 1
IO
PL15D
-
L14C
N3
7 (CL) 1
IO
PL15C
-
L14T
P4
7 (CL) 1
IO
PL16D
VREF_7_01
L15C
205
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
P3
7 (CL) 1
IO
PL16C
D4
L15T
M2
7 (CL) 2
IO
PL17D
-
L16C
L16T
M1
7 (CL) 2
IO
PL17C
-
N2
7 (CL) 2
IO
PL18D
RDY/BUSY_N/RCLK L17C
N1
7 (CL) 2
IO
PL18C
VREF_7_02
L17T
P5
7 (CL) 2
IO
PL19D
A13/PPC_A27
L18C
R5
7 (CL) 2
IO
PL19C
A12/PPC_A26
L18T
R4
7 (CL) 3
IO
PL20D
-
L19C
R3
7 (CL) 3
IO
PL20C
-
L19T
P2
7 (CL) 3
IO
PL21D
A11/PPC_A25
L20C
P1
7 (CL) 3
IO
PL21C
VREF_7_03
L20T
T3
7 (CL) 3
IO
PL22D
-
L21C
T4
7 (CL) 3
IO
PL22C
-
L21T
R1
7 (CL)
4
IO
PL23D
RD_N/MPI_STRB_
N
L22C
R2
7 (CL) 4
IO
PL23C
VREF_7_04
L22T
R6
7 (CL) 4
IO
PL24D
PLCK0C
L23C
T6
7 (CL) 4
IO
PL24B
-
L178C
T5
7 (CL) 4
IO
PL24C
PLCK0T
L23T
U5
7 (CL) 4
IO
PL24A
-
L178T
U3
7 (CL) 5
IO
PL25D
A10/PPC_A24
L24C
U4
7 (CL) 5
IO
PL25C
A9/PPC_A23
L24T
T1
7 (CL) 5
IO
PL26D
A8/PPC_A22
L25C
T2
7 (CL) 5
IO
PL26C
VREF_7_05
L25T
V3
7 (CL) 5
IO
PL27D
-
L26C
V4
7 (CL) 5
IO
PL27C
-
L26T
U1
7 (CL) 6
IO
PL28D
PLCK1C
L27C
U2
7 (CL) 6
IO
PL28C
PLCK1T
L27T
V5
7 (CL) 6
IO
PL29D
VREF_7_06
L28C
W5
7 (CL) 6
IO
PL29C
A7/PPC_A21
L28T
W3
7 (CL) 6
IO
PL30D
A6/PPC_A20
L29C
W4
7 (CL) 6
IO
PL30C
A5/PPC_A19
L29T
V1
7 (CL) 7
IO
PL31D
-
L30C
V2
7 (CL) 7
IO
PL31C
-
L30T
W1
7 (CL) 7
IO
PL32D
WR_N/MPI_RW
L31C
W2
7 (CL) 7
IO
PL32C
VREF_7_07
L31T
Y1
7 (CL) 7
IO
PL33D
-
L32C
Y2
7 (CL) 7
IO
PL33C
-
L32T
AA1
7 (CL) 8
IO
PL34D
A4/PPC_A18
L33C
AA2
7 (CL) 8
IO
PL34C
VREF_7_08
L33T
Y3
7 (CL) 8
IO
PL35D
A3/PPC_A17
L34C
W6
7 (CL) 8
IO
PL35B
-
L35C
AA3
7 (CL) 8
IO
PL35C
A2/PPC_A16
L34T
206
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
Y6
7 (CL) 8
IO
PL35A
-
L35T
AB1
7 (CL) 8
IO
PL36D
A1/PPC_A15
L36C
Y5
7 (CL) 8
IO
PL36B
-
L37C
AB2
7 (CL) 8
IO
PL36C
A0/PPC_A14
L36T
Y4
7 (CL) 8
IO
PL36A
-
L37T
AC1
7 (CL) 8
IO
PL37D
DP0
L38C
AA5
7 (CL) 8
IO
PL37B
-
L39C
AC2
7 (CL) 8
IO
PL37C
DP1
L38T
AA4
7 (CL) 8
IO
PL37A
-
L39T
AD1
6 (BL) 1
IO
PL38D
D8
L40C
AA6
6 (BL) 1
IO
PL38B
-
L41C
AD2
6 (BL) 1
IO
PL38C
VREF_6_01
L40T
AB6
6 (BL) 1
IO
PL38A
-
L41T
AB3
6 (BL) 1
IO
PL39D
D9
L42C
AB4
6 (BL) 1
IO
PL39B
-
L43C
AC3
6 (BL) 1
IO
PL39C
D10
L42T
AB5
6 (BL) 1
IO
PL39A
-
L43T
AE1
6 (BL) 2
IO
PL40D
-
L44C
AC4
6 (BL) 2
IO
PL40B
-
L45C
AE2
6 (BL) 2
IO
PL40C
VREF_6_02
L44T
AC5
6 (BL) 2
IO
PL40A
-
L45T
AF1
6 (BL) 2
IO
PL41D
-
L46C
AD5
6 (BL) 2
IO
PL41B
-
L47C
AF2
6 (BL) 2
IO
PL41C
-
L46T
AD4
6 (BL) 2
IO
PL41A
-
L47T
AD3
6 (BL) 3
IO
PL42D
D11
L48C
AE4
6 (BL) 3
IO
PL42B
-
L49C
AE3
6 (BL) 3
IO
PL42C
D12
L48T
AE5
6 (BL) 3
IO
PL42A
-
L49T
AG1
6 (BL) 3
IO
PL43D
-
L50C
AF4
6 (BL) 3
IO
PL43B
-
L51C
AG2
6 (BL) 3
IO
PL43C
-
L50T
AF5
6 (BL) 3
IO
PL43A
-
L51T
AH1
6 (BL) 3
IO
PL44D
VREF_6_03
L52C
AC6
6 (BL) 4
IO
PL44B
-
L53C
AH2
6 (BL) 3
IO
PL44C
D13
L52T
AD6
6 (BL) 4
IO
PL44A
-
L53T
AF3
6 (BL) 4
IO
PL45D
-
L54C
AE6
6 (BL) 4
IO
PL45B
-
L55C
AG3
6 (BL) 4
IO
PL45C
VREF_6_04
L54T
AF6
6 (BL) 4
IO
PL45A
-
L55T
AJ1
6 (BL) 4
IO
PL46D
-
L56C
AJ2
6 (BL) 4
IO
PL46C
-
L56T
207
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AH3
6 (BL) 4
IO
PL47D
PLL_CK7C/HPPLL
L57C
AJ3
6 (BL) 4
IO
PL47C
PLL_CK7T/HPPLL
L57T
AG4
-
-
I
PTEMP
PTEMP
-
AH4
-
-
IO
LVDS_R
LVDS_R
-
AH6
6 (BL) 5
IO
PB2A
DP2
L58T
AN5
6 (BL) 5
IO
PB2C
PLL_CK6T/PPLL
L59T
AH7
6 (BL) 5
IO
PB2B
-
L58C
AP5
6 (BL) 5
IO
PB2D
PLL_CK6C/PPLL
L59C
AN6
6 (BL) 5
IO
PB3C
-
L60T
AP6
6 (BL) 5
IO
PB3D
-
L60C
AK6
6 (BL) 5
IO
PB4C
VREF_6_05
L61T
AK7
6 (BL) 5
IO
PB4D
DP3
L61C
AJ6
6 (BL) 6
IO
PB5A
-
L62T
AL6
6 (BL) 6
IO
PB5C
-
L63T
AJ7
6 (BL) 6
IO
PB5B
-
L62C
AL7
6 (BL) 6
IO
PB5D
-
L63C
AG7
6 (BL) 6
IO
PB6A
-
L64T
AM6
6 (BL) 6
IO
PB6C
VREF_6_06
L65T
AG8
6 (BL) 6
IO
PB6B
-
L64C
AM7
6 (BL) 6
IO
PB6D
D14
L65C
AG9
6 (BL) 6
IO
PB7A
-
L66T
AN7
6 (BL) 6
IO
PB7C
-
L67T
AG10
6 (BL) 6
IO
PB7B
-
L66C
AP7
6 (BL) 6
IO
PB7D
-
L67C
AH8
6 (BL) 7
IO
PB8A
-
L68T
AN8
6 (BL) 7
IO
PB8C
D15
L69T
AJ8
6 (BL) 7
IO
PB8B
-
L68C
AP8
6 (BL) 7
IO
PB8D
D16
L69C
AH9
6 (BL) 7
IO
PB9A
-
L70T
AK8
6 (BL) 7
IO
PB9C
D17
L71T
AJ9
6 (BL) 7
IO
PB9B
-
L70C
AK9
6 (BL) 7
IO
PB9D
D18
L71C
AJ10
6 (BL) 7
IO
PB10A
-
L72T
AL8
6 (BL) 7
IO
PB10C
VREF_6_07
L73T
AH10
6 (BL) 7
IO
PB10B
-
L72C
AL9
6 (BL) 7
IO
PB10D
D19
L73C
AM8
6 (BL) 8
IO
PB11C
D20
L74T
AM9
6 (BL) 8
IO
PB11D
D21
L74C
AJ11
6 (BL) 8
IO
PB12A
-
L75T
AN9
6 (BL) 8
IO
PB12C
VREF_6_08
L76T
AH11
6 (BL) 8
IO
PB12B
-
L75C
AP9
6 (BL) 8
IO
PB12D
D22
L76C
AG11
6 (BL) 9
IO
PB13A
-
L77T
208
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AK10
6 (BL) 9
IO
PB13C
D23
L78T
AG12
6 (BL) 9
IO
PB13B
-
L77C
AK11
6 (BL) 9
IO
PB13D
D24
L78C
AJ12
6 (BL) 9
IO
PB14A
-
L79T
AN10
6 (BL) 9
IO
PB14C
VREF_6_09
L80T
AH12
6 (BL) 9
IO
PB14B
-
L79C
AP10
6 (BL) 9
IO
PB14D
D25
L80C
AJ13
6 (BL) 9
IO
PB15A
-
L81T
AL10
6 (BL) 9
IO
PB15C
-
L82T
AH13
6 (BL) 9
IO
PB15B
-
L81C
AL11
6 (BL) 9
IO
PB15D
-
L82C
AJ14
6 (BL) 10
IO
PB16A
-
L83T
AM10
6 (BL) 10
IO
PB16C
D26
L84T
AH14
6 (BL) 10
IO
PB16B
-
L83C
AM11
6 (BL) 10
IO
PB16D
D27
L84C
AJ16
6 (BL) 10
IO
PB17A
-
L85T
AN11
6 (BL) 10
IO
PB17C
-
L86T
AH16
6 (BL) 10
IO
PB17B
-
L85C
AP11
6 (BL) 10
IO
PB17D
-
L86C
AJ17
6 (BL) 10
IO
PB18A
-
L87T
AK12
6 (BL) 10
IO
PB18C
VREF_6_10
L88T
AH17
6 (BL) 10
IO
PB18B
-
L87C
AK13
6 (BL) 10
IO
PB18D
D28
L88C
AG13
6 (BL) 11
IO
PB19A
-
L89T
AN12
6 (BL) 11
IO
PB19C
D29
L90T
AG14
6 (BL) 11
IO
PB19B
-
L89C
AP12
6 (BL) 11
IO
PB19D
D30
L90C
AH15
6 (BL) 11
IO
PB20A
-
L91T
AL12
6 (BL) 11
IO
PB20C
VREF_6_11
L92T
AJ15
6 (BL) 11
IO
PB20B
-
L91C
AL13
6 (BL) 11
IO
PB20D
D31
L92C
AJ18
5 (BC) 1
IO
PB21A
-
L93T
AM12
5 (BC) 1
IO
PB21C
-
L94T
AH18
5 (BC) 1
IO
PB21B
-
L93C
AM13
5 (BC) 1
IO
PB21D
-
L94C
AJ19
5 (BC) 1
IO
PB22A
-
L95T
AN13
5 (BC) 1
IO
PB22C
VREF_5_01
L96T
AH19
5 (BC) 1
IO
PB22B
-
L95C
AP13
5 (BC) 1
IO
PB22D
-
L96C
AP14
5 (BC) 2
IO
PB23C
PBCK0T
L97T
AN14
5 (BC) 2
IO
PB23D
PBCK0C
L97C
AG15
5 (BC) 2
IO
PB24A
-
L99T
AK14
5 (BC) 2
IO
PB24C
VREF_5_02
L98T
209
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AG16
5 (BC) 2
IO
PB24B
-
L99C
AK15
5 (BC) 2
IO
PB24D
-
L98C
AL14
5 (BC) 2
IO
PB25C
-
L100T
AL15
5 (BC) 2
IO
PB25D
-
L100C
AM14
5 (BC) 3
IO
PB26C
-
L101T
AM15
5 (BC) 3
IO
PB26D
VREF_5_03
L101C
AG18
5 (BC) 3
IO
PB27A
-
L102T
AN15
5 (BC) 3
IO
PB27C
-
L103T
AG17
5 (BC) 3
IO
PB27B
-
L102C
AP15
5 (BC) 3
IO
PB27D
-
L103C
AL16
5 (BC) 3
IO
PB28C
PBCK1T
L104T
AM16
5 (BC) 3
IO
PB28D
PBCK1C
L104C
AN16
5 (BC) 4
IO
PB29C
-
L105T
AP16
5 (BC) 4
IO
PB29D
-
L105C
AK16
5 (BC) 4
IO
PB30C
-
L106T
AK17
5 (BC) 4
IO
PB30D
VREF_5_04
L106C
AN17
5 (BC) 4
IO
PB31C
-
L107T
AP17
5 (BC) 4
IO
PB31D
-
L107C
AL17
5 (BC) 5
IO
PB32C
-
L108T
AM17
5 (BC) 5
IO
PB32D
VREF_5_05
L108C
AK18
5 (BC) 5
IO
PB33C
-
L109T
AL18
5 (BC) 5
IO
PB33D
-
L109C
AN18
5 (BC) 5
IO
PB34C
-
L110T
AP18
5 (BC) 5
IO
PB34D
-
L110C
AN19
5 (BC) 6
IO
PB35C
-
L111T
AP19
5 (BC) 6
IO
PB35D
VREF_5_06
L111C
AM18
5 (BC) 6
IO
PB36C
-
L112T
AM19
5 (BC) 6
IO
PB36D
-
L112C
AN20
5 (BC) 7
IO
PB37C
-
L113T
AP20
5 (BC) 7
IO
PB37D
-
L113C
AL19
5 (BC) 7
IO
PB38C
VREF_5_07
L114T
AL20
5 (BC) 7
IO
PB38D
-
L114C
AK19
5 (BC) 7
IO
PB39C
-
L115T
AK20
5 (BC) 7
IO
PB39D
-
L115C
AM20
5 (BC) 8
IO
PB40C
-
L116T
AM21
5 (BC) 8
IO
PB40D
VREF_5_08
L116C
AN21
5 (BC) 8
IO
PB41C
-
L117T
AP21
5 (BC) 8
IO
PB41D
-
L117C
AN22
5 (BC) 8
IO
PB42C
-
L118T
AP22
5 (BC) 8
IO
PB42D
-
L118C
AL21
5 (BC) 9
IO
PB43C
-
L119T
AL22
5 (BC) 9
IO
PB43D
-
L119C
AK21
5 (BC) 9
IO
PB44C
-
L120T
210
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AK22
5 (BC) 9
IO
PB44D
VREF_5_09
L120C
AM22
5 (BC) 9
IO
PB45C
-
L121T
AM23
5 (BC) 9
IO
PB45D
-
L121C
AN23
5 (BC) 10
IO
PB46C
-
L122T
AP23
5 (BC) 10
IO
PB46D
VREF_5_10
L122C
AL23
-
-
I
RESETN
-
-
AK23
-
-
I
TRISTN
-
-
AP24
-
-
I
TESTMD1N
-
-
AN24
-
-
I
TESTMD0N
-
-
AM24
-
-
I
PDN
-
-
AL24
-
-
I
ATREFCLK
-
-
AK24
-
-
I
TESTCLK
-
-
AP25
-
-
I
BTREFCLK
-
-
AN25
-
-
I
TSTAT1B
-
-
AG22
-
-
I
TSTAT0B
-
-
AM25
-
-
I
TSCLKB
-
-
AH23
-
-
O
RSTAT1B
-
-
AL25
-
-
O
RSTAT0B
-
-
AH24
-
-
O
RSCLKB
-
-
AK30
-
-
I
ATSTAT1N
-
R1C
AL31
-
-
I
ATSTAT0N
-
R2C
AJ30
-
-
I
ATSTAT1P
-
R1T
AK31
-
-
I
ATSTAT0P
-
R2T
AM31
-
-
I
ATSCLKN
-
R3C
AE27
-
-
I/O
ALVCTAP5
-
-
AL32
-
-
I
ATSCLKP
-
R3T
AF29
-
-
I
BTSCLKN
-
R4C
AH30
-
-
I/O
BLVCTAP5
-
-
AG28
-
-
I
BTSCLKP
-
R4T
AM32
-
-
I
BTSTAT1N
-
R5C
AF28
-
-
I
BTSTAT0N
-
R6C
AM33
-
-
I
BTSTAT1P
-
R5T
AE28
-
-
I
BTSTAT0P
-
R6T
AK32
-
-
O
BRSTAT1N
-
R7C
AL33
-
-
O
BRSTAT0N
-
R8C
AJ32
-
-
O
BRSTAT1P
-
R7T
AL34
-
-
O
BRSTAT0P
-
R8T
AJ31
-
-
O
BRSCLKN
-
R9C
AE26
-
-
O
ARSCLKN
-
R10C
AH31
-
-
O
BRSCLKP
-
R9T
AD26
-
-
O
ARSCLKP
-
R10T
AK33
-
-
O
ARSTAT1N
-
R11C
AJ33
-
-
O
ARSTAT0N
-
R12C
211
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AK34
-
-
O
ARSTAT1P
-
R11T
AJ34
-
-
O
ARSTAT0P
-
R12T
AF31
-
-
I
RESLO
-
-
AD28
-
-
I
RESHI
-
-
AG31
-
-
I
REF14
-
-
AE29
-
-
I
REF10
-
-
AH32
-
-
O
BTDAT15N
-
R13C
AG29
-
-
O
BTDAT14N
-
R14C
AG32
-
-
O
BTDAT15P
-
R13T
AG30
-
-
O
BTDAT14P
-
R14T
AH33
-
-
O
BTDAT13N
-
R15C
AD27
-
-
O
BTDAT12N
-
R16C
AH34
-
-
O
BTDAT13P
-
R15T
AC27
-
-
O
BTDAT12P
-
R16T
AG33
-
-
O
BTDAT11N
-
R17C
AE30
-
-
O
BTDAT10N
-
R18C
AG34
-
-
O
BTDAT11P
-
R17T
AF30
-
-
O
BTDAT10P
-
R18T
AF32
-
-
O
BTDAT9N
-
R19C
AD30
-
-
O
BTDAT8N
-
R20C
AE32
-
-
O
BTDAT9P
-
R19T
AD29
-
-
O
BTDAT8P
-
R20T
AF33
-
-
O
BTCTLN
-
R21C
AB26
-
-
O
BTDCLKN
-
R22C
AF34
-
-
O
BTCTLP
-
R21T
AC26
-
-
O
BTDCLKP
-
R22T
AE31
-
-
VDDA_SPIA
VDDA_SPIA
-
-
AD31
-
-
VSS
VSS
-
-
AC28
-
-
O
BTDAT7N
-
R23C
AE33
-
-
O
BTDAT6N
-
R24C
AC29
-
-
O
BTDAT7P
-
R23T
AE34
-
-
O
BTDAT6P
-
R24T
AD32
-
-
O
BTDAT5N
-
R25C
AB28
-
-
O
BTDAT4N
-
R26C
AC32
-
-
O
BTDAT5P
-
R25T
AB29
-
-
O
BTDAT4P
-
R26T
AD33
-
-
O
BTDAT3N
-
R27C
AC30
-
-
O
BTDAT2N
-
R28C
AD34
-
-
O
BTDAT3P
-
R27T
AB30
-
-
O
BTDAT2P
-
R28T
AC31
-
-
O
BTDAT1N
-
R29C
AB27
-
-
O
BTDAT0N
-
R30C
AB31
-
-
O
BTDAT1P
-
R29T
212
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AA27
-
-
O
BTDAT0P
-
R31T
AC33
-
-
I
BRDCLKN
-
R32C
AA29
-
-
I
BRDAT15N
-
R33C
AC34
-
-
I
BRDCLKP
-
R32T
AA30
-
-
I
BRDAT15P
-
R33T
AA31
-
-
I/O
BLVCTAP1
-
-
AA26
-
-
I
BRDAT14N
-
R34C
AB33
-
-
I
BRDAT13N
-
R35C
Y26
-
-
I
BRDAT14P
-
R34T
AB34
-
-
I
BRDAT13P
-
R35T
AA28
-
-
I
BRDAT12N
-
R36C
AB32
-
-
I
BRDAT11N
-
R37C
Y28
-
-
I
BRDAT12P
-
R36T
AA32
-
-
I
BRDAT11P
-
R37T
Y30
-
-
I
BRDAT10N
-
R38C
AA33
-
-
I/O
BLVCTAP2
-
-
Y29
-
-
I
BRDAT10P
-
R38T
Y31
-
-
I
BRDAT9N
-
R39C
Y27
-
-
I
BRDAT8N
-
R40C
Y32
-
-
I
BRDAT9P
-
R39T
W27
-
-
I
BRDAT8P
-
R40T
AA34
-
-
I
BRCTLN
-
R41C
W28
-
-
I/O
BLVCTAP3
-
-
Y34
-
-
I
BRCTLP
-
R41T
W30
-
-
I
BRDAT7N
-
R42C
Y33
-
-
I
BRDAT6N
-
R43C
W29
-
-
I
BRDAT7P
-
R42T
W33
-
-
I
BRDAT6P
-
R43T
W26
-
-
I
BRDAT5N
-
R44C
W31
-
-
I
BRDAT4N
-
R45C
V26
-
-
I
BRDAT5P
-
R44T
W32
-
-
I
BRDAT4P
-
R45T
V28
-
-
I/O
BLVCTAP4
-
-
W34
-
-
I
BRDAT3N
-
R46C
V30
-
-
I
BRDAT2N
-
R47C
V34
-
-
I
BRDAT3P
-
R46T
V29
-
-
I
BRDAT2P
-
R47T
V33
-
-
I
BRDAT1N
-
R48C
V27
-
-
I
BRDAT0N
-
R49C
V32
-
-
I
BRDAT1P
-
R48T
U27
-
-
I
BRDAT0P
-
R49T
V31
-
-
VSS
VSS
-
-
U31
-
-
VDDA_SPIB
VDDA_SPIB
-
-
213
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
U28
-
-
O
ATDAT15N
-
R50C
U32
-
-
VSS
VSS
-
-
U29
-
-
O
ATDAT15P
-
R50T
U33
-
-
O
ATDAT14N
-
R51C
U34
-
-
O
ATDAT14P
-
R51T
U30
-
-
O
ATDAT13N
-
R52C
T34
-
-
O
ATDAT12N
-
R53C
T29
-
-
O
ATDAT13P
-
R52T
T33
-
-
O
ATDAT12P
-
R53T
T32
-
-
O
ATDAT11N
-
R54C
U26
-
-
O
ATDAT10N
-
R55C
T31
-
-
O
ATDAT11P
-
R54T
T26
-
-
O
ATDAT10P
-
R55T
R34
-
-
O
ATDAT9N
-
R56C
T28
-
-
O
ATDAT8N
-
R57C
R33
-
-
O
ATDAT9P
-
R56T
T30
-
-
O
ATDAT8P
-
R57T
R32
-
-
O
ATCTLN
-
R58C
T27
-
-
O
ATDCLKN
-
R59C
R31
-
-
O
ATCTLP
-
R58T
R27
-
-
O
ATDCLKP
-
R59T
P34
-
-
O
ATDAT7N
-
R60C
R28
-
-
O
ATDAT6N
-
R61C
P33
-
-
O
ATDAT7P
-
R60T
R29
-
-
O
ATDAT6P
-
R61T
N34
-
-
O
ATDAT5N
-
R62C
R30
-
-
O
ATDAT4N
-
R63C
N33
-
-
O
ATDAT5P
-
R62T
P30
-
-
O
ATDAT4P
-
R63T
P32
-
-
O
ATDAT3N
-
R64C
R26
-
-
O
ATDAT2N
-
R65C
P31
-
-
O
ATDAT3P
-
R64T
P26
-
-
O
ATDAT2P
-
R65T
M34
-
-
O
ATDAT1N
-
R66C
P28
-
-
O
ATDAT0N
-
R67C
M33
-
-
O
ATDAT1P
-
R66T
P29
-
-
O
ATDAT0P
-
R67T
N31
-
-
VSS
VSS
-
-
M32
-
-
VDDA_SPIC
VDDA_SPIC
-
-
N32
-
-
VSS
VSS
-
-
L34
-
-
I
ARDCLKN
-
R68C
P27
-
-
I
ARDAT15N
-
R69C
L33
-
-
I
ARDCLKP
-
R68T
214
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
N27
-
-
I
ARDAT15P
-
R69T
L32
-
-
I/O
ALVCTAP1
-
-
N30
-
-
I
ARDAT14N
-
R70C
K34
-
-
I
ARDAT13N
-
R71C
M30
-
-
I
ARDAT14P
-
R70T
K33
-
-
I
ARDAT13P
-
R71T
N28
-
-
I
ARDAT12N
-
R72C
J32
-
-
I
ARDAT11N
-
R73C
N29
-
-
I
ARDAT12P
-
R72T
K32
-
-
I
ARDAT11P
-
R73T
L30
-
-
I/O
ALVCTAP2
-
-
M31
-
-
I
ARDAT10N
-
R74C
N26
-
-
I
ARDAT9N
-
R75C
L31
-
-
I
ARDAT10P
-
R74T
M26
-
-
I
ARDAT9P
-
R75T
J34
-
-
I
ARDAT8N
-
R76C
M28
-
-
I
ARCTLN
-
R77C
J33
-
-
I
ARDAT8P
-
R76T
M29
-
-
I
ARCTLP
-
R77T
K31
-
-
I/O
ALVCTAP3
-
-
L27
-
-
I
ARDAT7N
-
R78C
H34
-
-
I
ARDAT6N
-
R79C
M27
-
-
I
ARDAT7P
-
R78T
H33
-
-
I
ARDAT6P
-
R79T
L29
-
-
I
ARDAT5N
-
R80C
J31
-
-
I
ARDAT4N
-
R81C
K30
-
-
I
ARDAT5P
-
R80T
H31
-
-
I
ARDAT4P
-
R81T
L28
-
-
I/O
ALVCTAP4
-
-
G34
-
-
I
ARDAT3N
-
R82C
J30
-
-
I
ARDAT2N
-
R83C
G33
-
-
I
ARDAT3P
-
R82T
H30
-
-
I
ARDAT2P
-
R83T
F34
-
-
I
ARDAT1N
-
R84C
L26
-
-
I
ARDAT0N
-
R85C
F33
-
-
I
ARDAT1P
-
R84T
K26
-
-
I
ARDAT0P
-
R85T
H32
-
-
VDDA_SPID
VDDA_SPID
-
-
G32
-
-
VSS
VSS
-
-
G30
-
-
I
TSTAT1A
-
-
G31
-
-
I
TSTAT0A
-
-
H29
-
-
I
TSCLKA
-
-
F32
-
-
O
RSTAT1A
-
-
215
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
K29
-
-
O
RSTAT0A
-
-
E34
-
-
O
RSCLKA
-
-
E33
-
-
I/O
PMIA17
-
-
D34
-
-
I/O
PMIA16
-
-
K28
-
-
I/O
PMIA15
-
-
D33
-
-
I/O
PMIA14
-
-
G29
-
-
I/O
PMIA13
-
-
C33
-
-
I/O
PMIA12
-
-
K27
-
-
I/O
PMIA11
-
-
E32
-
-
I/O
PMIA10
-
-
D32
-
-
I/O
PMIA9
-
-
C32
-
-
I/O
PMIA8
-
-
G28
-
-
I/O
PMIWN
-
-
B32
-
-
I/O
PMIRN
-
-
J29
-
-
I/O
PMIA7
-
-
C31
-
-
VREF
REFI_1
-
-
J28
-
-
I/O
PMIA6
-
-
D31
-
-
I/O
PMIA5
-
-
J27
-
-
I/O
PMIA4
-
-
F30
-
-
I/O
PMIA3
-
-
H27
-
-
I/O
PMIA2
-
-
E31
-
-
I/O
PMIA1
-
-
H28
-
-
I/O
PMIA0
-
-
F31
-
-
I
EXT_1K
-
-
F29
-
-
I/O
PMID35
-
-
E30
-
-
I/O
PMID34
-
-
F28
-
-
I/O
PMID33
-
-
D30
-
-
I/O
PMID32
-
-
E27
-
-
I/O
PMID31
-
-
C30
-
-
I/O
PMID30
-
-
F27
-
-
I/O
PMID29
-
-
B31
-
-
I/O
PMID28
-
-
G27
-
-
I/O
PMID27
-
-
A31
-
-
I/O
PMID26
-
-
E26
-
-
I/O
PMID25
-
-
B30
-
-
I/O
PMID24
-
-
F26
-
-
I/O
PMID23
-
-
A30
-
-
I/O
PMID22
-
-
G26
-
-
I/O
PMID21
-
-
E29
-
-
I/O
PMID20
-
-
H26
-
-
I/O
PMID19
-
-
E28
-
-
I/O
PMID18
-
-
E25
-
-
I/O
PMID17
-
-
216
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
D29
-
-
I/O
PMID16
-
-
C29
-
-
VREF
REFI_2
-
-
F25
-
-
I/O
PMIK
-
-
B29
-
-
I/O
PMIKN
-
-
G25
-
-
I/O
PMID15
-
-
A29
-
-
I/O
PMID14
-
-
H25
-
-
I/O
PMID13
-
-
D28
-
-
I/O
PMID12
-
-
E24
-
-
I/O
PMID11
-
-
C28
-
-
I/O
PMID10
-
-
F24
-
-
I/O
PMID9
-
-
B28
-
-
I/O
PMID8
-
-
G24
-
-
I/O
PMID7
-
-
A28
-
-
I/O
PMID6
-
-
H24
-
-
I/O
PMID5
-
-
D27
-
-
I/O
PMID4
-
-
E23
-
-
I/O
PMID3
-
-
C27
-
-
I/O
PMID2
-
-
F23
-
-
I/O
PMID1
-
-
B27
-
-
I/O
PMID0
-
-
A27
-
-
VREF
REFI_3
-
-
G23
-
-
I/O
PMIC
-
-
D26
-
-
I/O
PMICN
-
-
H23
-
-
I/O
PMIQ35
-
-
C26
-
-
I/O
PMIQ34
-
-
E22
-
-
I/O
PMIQ33
-
-
B26
-
-
I/O
PMIQ32
-
-
F22
-
-
I/O
PMIQ31
-
-
A26
-
-
I/O
PMIQ30
-
-
E21
-
-
I/O
PMIQ29
-
-
D25
-
-
I/O
PMIQ28
-
-
G22
-
-
I/O
PMIQ27
-
-
C25
-
-
I/O
PMIQ26
-
-
F21
-
-
I/O
PMIQ25
-
-
B25
-
-
I/O
PMIQ24
-
-
G20
-
-
I/O
PMIQ23
-
-
A25
-
-
I/O
PMIQ22
-
-
F20
-
-
I/O
PMIQ21
-
-
D24
-
-
I/O
PMIQ20
-
-
E20
-
-
I/O
PMIQ19
-
-
C24
-
-
I/O
PMIQ18
-
-
G21
-
-
I/O
PMIQ17
-
-
B24
-
-
I/O
PMIQ16
-
-
217
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
H22
-
-
I/O
MCREFCLK
-
-
A24
-
-
I/O
SPARE_2
-
-
E19
-
-
I/O
PMIQ15
-
-
D23
-
-
VREF
REFI_4
-
-
F19
-
-
I/O
PMIQ14
-
-
C23
-
-
I/O
PMIQ13
-
-
G19
-
-
I/O
PMIQ12
-
-
B23
-
-
VDDA_PLL
VDDA_PLL
-
-
H21
-
-
I/O
PMIQ11
-
-
A23
-
-
VSS
VSS
-
-
H20
-
-
I/O
PMIQ10
-
-
D22
-
-
I/O
PMIQ9
-
-
H19
-
-
I/O
PMIQ8
-
-
C22
-
-
I/O
PMIQ7
-
-
H18
-
-
I/O
PMIQ6
-
-
B22
-
-
I/O
PMIQ5
-
-
E18
-
-
I/O
PMIQ4
-
-
A22
-
-
I/O
PMIQ3
-
-
F18
-
-
I/O
PMIQ2
-
-
C21
-
-
I/O
PMIQ1
-
-
-
G18
-
I/O
PMIQ0
-
-
B21
1 (TC) 7
IO
PT46D
-
L123C
A21
1 (TC) 7
IO
PT46C
-
L123T
A20
1 (TC) 7
IO
PT45D
VREF_1_07
L124C
A19
1 (TC) 7
IO
PT45C
-
L124T
C20
1 (TC) 8
IO
PT44D
-
L125C
B20
1 (TC) 8
IO
PT44C
-
L125T
B19
1 (TC) 8
IO
PT43D
-
L126C
A18
1 (TC) 8
IO
PT43C
-
L126T
C19
1 (TC) 8
IO
PT42D
VREF_1_08
L127C
D19
1 (TC) 8
IO
PT42C
-
L127T
B18
1 (TC) 9
IO
PT41D
-
L128C
A17
1 (TC) 9
IO
PT41C
-
L128T
C18
1 (TC) 9
IO
PT40D
-
L129C
D18
1 (TC) 9
IO
PT40C
VREF_1_09
L129T
B17
1 (TC) 9
IO
PT39D
-
L130C
C17
1 (TC) 9
IO
PT39C
-
L130T
A16
1 (TC) 10
IO
PT38D
-
L131C
B16
1 (TC) 10
IO
PT38C
VREF_1_10
L131T
A15
1 (TC) 10
IO
PT37D
-
L132C
B15
1 (TC) 10
IO
PT37C
-
L132T
A14
1 (TC) 10
IO
PT36D
-
L133C
B14
1 (TC) 10
IO
PT36C
-
L133T
218
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
E17
1 (TC) 1
IO
PT35D
-
L134C
H17
1 (TC) 1
IO
PT35B
-
L135C
E16
1 (TC) 1
IO
PT35C
-
L134T
G17
1 (TC) 1
IO
PT35A
-
L135T
C16
1 (TC) 1
IO
PT34D
VREF_1_01
L136C
G15
1 (TC) 1
IO
PT34B
-
L137C
C15
1 (TC) 1
IO
PT34C
-
L136T
F15
1 (TC) 1
IO
PT34A
-
L137T
D17
1 (TC) 1
IO
PT33D
-
L138C
F14
1 (TC) 1
IO
PT33B
-
L139C
D16
1 (TC) 1
IO
PT33C
-
L138T
G14
1 (TC) 1
IO
PT33A
-
L139T
F17
1 (TC) 2
IO
PT32D
-
L140C
H16
1 (TC) 2
IO
PT32B
-
L141C
F16
1 (TC) 2
IO
PT32C
VREF_1_02
L140T
G16
1 (TC) 2
IO
PT32A
-
L141T
A13
1 (TC) 2
IO
PT31D
-
L142C
F13
1 (TC) 2
IO
PT31B
-
L143C
B13
1 (TC) 2
IO
PT31C
-
L142T
F12
1 (TC) 2
IO
PT31A
-
L143T
C14
1 (TC) 2
IO
PT30D
-
L144C
G13
1 (TC) 2
IO
PT30B
-
L145C
C13
1 (TC) 2
IO
PT30C
-
L144T
H13
1 (TC) 2
IO
PT30A
-
L145T
D15
1 (TC) 3
IO
PT29D
-
L146C
G12
1 (TC) 3
IO
PT29B
-
L147C
D14
1 (TC) 3
IO
PT29C
VREF_1_03
L146T
H12
1 (TC) 3
IO
PT29A
-
L147T
A12
1 (TC) 3
IO
PT28D
-
L148C
H15
1 (TC) 3
IO
PT28B
-
L149C
B12
1 (TC) 3
IO
PT28C
-
L148T
H14
1 (TC) 3
IO
PT28A
-
L149T
D13
1 (TC) 3
IO
PT27D
-
L150C
D12
1 (TC) 3
IO
PT27C
-
L150T
E15
1 (TC) 4
IO
PT26D
-
L151C
E14
1 (TC) 4
IO
PT26C
-
L151T
A11
1 (TC) 4
IO
PT25D
-
L152C
J14
1 (TC) 4
IO
PT25B
-
L153C
A10
1 (TC) 4
IO
PT25C
-
L152T
J13
1 (TC) 4
IO
PT25A
-
L153T
C12
1 (TC) 4
IO
PT24D
-
L154C
C11
1 (TC) 4
IO
PT24C
VREF_1_04
L154T
B11
1 (TC) 5
IO
PT23D
PTCK1C
L155C
219
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
B10
1 (TC) 5
IO
PT23C
PTCK1T
L155T
E13
1 (TC) 5
IO
PT22D
PTCK0C
L156C
L156T
E12
1 (TC) 5
IO
PT22C
PTCK0T
A9
1 (TC) 5
IO
PT21D
VREF_1_05
L157C
B9
1 (TC) 5
IO
PT21C
-
L157T
C10
1 (TC) 6
IO
PT20D
-
L158C
C9
1 (TC) 6
IO
PT20C
-
L158T
D11
1 (TC) 6
IO
PT19D
-
L159C
D10
1 (TC) 6
IO
PT19C
VREF_1_06
L159T
A8
0 (TL) 1
IO
PT18D
MPI_RTRY_N
L160C
B8
0 (TL) 1
IO
PT18C
MPI_ACK_N
L160T
H11
0 (TL) 1
IO
PT17D
-
L161C
G11
0 (TL) 1
IO
PT17C
VREF_0_01
L161T
H10
0 (TL) 1
IO
PT16D
M0
L162C
G10
0 (TL) 1
IO
PT16C
M1
L162T
A7
0 (TL) 2
IO
PT15D
MPI_CLK
L163C
B7
0 (TL) 2
IO
PT15C
A21/MPI_BURST_N L163T
C8
0 (TL) 2
IO
PT14D
M2
L164C
C7
0 (TL) 2
IO
PT14C
M3
L164T
E11
0 (TL) 2
IO
PT13D
VREF_0_02
L165C
E10
0 (TL) 2
IO
PT13C
MPI_TEA_N
L165T
F11
0 (TL) 3
IO
PT12D
-
L166C
F10
0 (TL) 3
IO
PT12C
-
L166T
D9
0 (TL) 3
IO
PT11D
VREF_0_03
L167C
D8
0 (TL) 3
IO
PT11C
-
L167T
H9
0 (TL) 3
IO
PT10D
D0
L168C
G9
0 (TL) 3
IO
PT10C
TMS
L168T
H7
0 (TL) 4
IO
PT9D
A20/MPI_BDIP_N
L169C
G7
0 (TL) 4
IO
PT9C
A19/MPI_TSZ1
L169T
A6
0 (TL) 4
IO
PT8D
A18/MPI_TSZ0
L170C
B6
0 (TL) 4
IO
PT8C
D3
L170T
E9
0 (TL) 4
IO
PT7D
VREF_0_04
L171C
E8
0 (TL) 4
IO
PT7C
-
L171T
F9
0 (TL) 5
IO
PT6D
D1
L172C
F8
0 (TL) 5
IO
PT6C
D2
L172T
C6
0 (TL) 5
IO
PT5D
-
L173C
C5
0 (TL) 5
IO
PT5C
VREF_0_05
L173T
D7
0 (TL) 5
IO
PT4D
TDI
L174C
D6
0 (TL) 5
IO
PT4C
TCK
L174T
E7
0 (TL) 6
IO
PT3D
-
L175C
G8
0 (TL) 6
IO
PT3B
-
L176C
E6
0 (TL) 6
IO
PT3C
VREF_0_06
L175T
H8
0 (TL) 6
IO
PT3A
-
L176T
220
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
F7
0 (TL) 6
IO
PT2D
PLL_CK1C/PPLL
L177C
F6
0 (TL) 6
IO
PT2C
PLL_CK1T/PPLL
L177T
-
O
PCFG_MPI_IRQ
CFG_IRQ_N/MPI_I
RQ_N
-
G5
-
G6
-
-
IO
PCCLK
CCLK
-
F5
-
-
IO
PDONE
DONE
-
AA24
-
-
VDD15
VDD15
-
-
AA8
-
-
VDD15
VDD15
-
-
AA9
-
-
VDD15
VDD15
-
-
AB8
-
-
VDD15
VDD15
-
-
AB9
-
-
VDD15
VDD15
-
-
AC13
-
-
VDD15
VDD15
-
-
AC14
-
-
VDD15
VDD15
-
-
AC15
-
-
VDD15
VDD15
-
-
AC16
-
-
VDD15
VDD15
-
-
AC17
-
-
VDD15
VDD15
-
-
AC18
-
-
VDD15
VDD15
-
-
AC19
-
-
VDD15
VDD15
-
-
AC23
-
-
VDD15
VDD15
-
-
AC8
-
-
VDD15
VDD15
-
-
AC9
-
-
VDD15
VDD15
-
-
AD10
-
-
VDD15
VDD15
-
-
AD11
-
-
VDD15
VDD15
-
-
AD12
-
-
VDD15
VDD15
-
-
AD13
-
-
VDD15
VDD15
-
-
AD14
-
-
VDD15
VDD15
-
-
AD15
-
-
VDD15
VDD15
-
-
AD16
-
-
VDD15
VDD15
-
-
AD17
-
-
VDD15
VDD15
-
-
AD18
-
-
VDD15
VDD15
-
-
AD19
-
-
VDD15
VDD15
-
-
AD20
-
-
VDD15
VDD15
-
-
AD21
-
-
VDD15
VDD15
-
-
AD22
-
-
VDD15
VDD15
-
-
AD23
-
-
VDD15
VDD15
-
-
AD8
-
-
VDD15
VDD15
-
-
AE10
-
-
VDD15
VDD15
-
-
AE11
-
-
VDD15
VDD15
-
-
AE12
-
-
VDD15
VDD15
-
-
AE13
-
-
VDD15
VDD15
-
-
AE14
-
-
VDD15
VDD15
-
-
AE15
-
-
VDD15
VDD15
-
-
AE16
-
-
VDD15
VDD15
-
-
221
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AE17
-
-
VDD15
VDD15
-
-
AE18
-
-
VDD15
VDD15
-
-
AE19
-
-
VDD15
VDD15
-
-
AE20
-
-
VDD15
VDD15
-
-
AE21
-
-
VDD15
VDD15
-
-
AE22
-
-
VDD15
VDD15
-
-
AE23
-
-
VDD15
VDD15
-
-
AE9
-
-
VDD15
VDD15
-
-
K10
-
-
VDD15
VDD15
-
-
K11
-
-
VDD15
VDD15
-
-
K12
-
-
VDD15
VDD15
-
-
K9
-
-
VDD15
VDD15
-
-
L10
-
-
VDD15
VDD15
-
-
L11
-
-
VDD15
VDD15
-
-
L12
-
-
VDD15
VDD15
-
-
L13
-
-
VDD15
VDD15
-
-
L14
-
-
VDD15
VDD15
-
-
L15
-
-
VDD15
VDD15
-
-
L16
-
-
VDD15
VDD15
-
-
L8
-
-
VDD15
VDD15
-
-
M13
-
-
VDD15
VDD15
-
-
M14
-
-
VDD15
VDD15
-
-
M8
-
-
VDD15
VDD15
-
-
M9
-
-
VDD15
VDD15
-
-
N8
-
-
VDD15
VDD15
-
-
N9
-
-
VDD15
VDD15
-
-
P8
-
-
VDD15
VDD15
-
-
P9
-
-
VDD15
VDD15
-
-
R8
-
-
VDD15
VDD15
-
-
R9
-
-
VDD15
VDD15
-
-
T8
-
-
VDD15
VDD15
-
-
T9
-
-
VDD15
VDD15
-
-
U8
-
-
VDD15
VDD15
-
-
U9
-
-
VDD15
VDD15
-
-
V24
-
-
VDD15
VDD15
-
-
V8
-
-
VDD15
VDD15
-
-
V9
-
-
VDD15
VDD15
-
-
W24
-
-
VDD15
VDD15
-
-
W8
-
-
VDD15
VDD15
-
-
W9
-
-
VDD15
VDD15
-
-
Y24
-
-
VDD15
VDD15
-
-
Y8
-
-
VDD15
VDD15
-
-
Y9
-
-
VDD15
VDD15
-
-
222
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AA25
-
-
VDD33
VDD33
-
-
AB24
-
-
VDD33
VDD33
-
-
AB25
-
-
VDD33
VDD33
-
-
AC24
-
-
VDD33
VDD33
-
-
AC25
-
-
VDD33
VDD33
-
-
AD24
-
-
VDD33
VDD33
-
-
AD25
-
-
VDD33
VDD33
-
-
AE24
-
-
VDD33
VDD33
-
-
AE25
-
-
VDD33
VDD33
-
-
AF22
-
-
VDD33
VDD33
-
-
AF23
-
-
VDD33
VDD33
-
-
AF24
-
-
VDD33
VDD33
-
-
AF25
-
-
VDD33
VDD33
-
-
AG23
-
-
VDD33
VDD33
-
-
AG24
-
-
VDD33
VDD33
-
-
AG25
-
-
VDD33
VDD33
-
-
AH22
-
-
VDD33
VDD33
-
-
N24
-
-
VDD33
VDD33
-
-
N25
-
-
VDD33
VDD33
-
-
P24
-
-
VDD33
VDD33
-
-
P25
-
-
VDD33
VDD33
-
-
R24
-
-
VDD33
VDD33
-
-
R25
-
-
VDD33
VDD33
-
-
T24
-
-
VDD33
VDD33
-
-
T25
-
-
VDD33
VDD33
-
-
U24
-
-
VDD33
VDD33
-
-
U25
-
-
VDD33
VDD33
-
-
V25
-
-
VDD33
VDD33
-
-
W25
-
-
VDD33
VDD33
-
-
Y25
-
-
VDD33
VDD33
-
-
J7
-
-
VDD33
VDD33_FPGAPLL
-
-
K8
-
-
VDD33
VDD33_FPGAPLL
-
-
AE8
-
-
VDD33
VDD33_FPGAPLL
-
-
AF7
-
-
VDD33
VDD33_FPGAPLL
-
-
AH20
-
-
VDD33
VDD33_FPGAPLL
-
-
AH21
-
-
VDD33
VDD33_FPGAPLL
-
-
D20
-
-
VDD33
VDD33_FPGAPLL
-
-
D21
-
-
VDD33
VDD33_FPGAPLL
-
-
J19
-
-
VDDH
VDDH
-
-
J20
-
-
VDDH
VDDH
-
-
J21
-
-
VDDH
VDDH
-
-
J23
-
-
VDDH
VDDH
-
-
J25
-
-
VDDH
VDDH
-
-
223
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
K19
-
-
VDDH
VDDH
-
-
K20
-
-
VDDH
VDDH
-
-
K21
-
-
VDDH
VDDH
-
-
K23
-
-
VDDH
VDDH
-
-
K25
-
-
VDDH
VDDH
-
-
L18
-
-
VDDH
VDDH
-
-
L19
-
-
VDDH
VDDH
-
-
L20
-
-
VDDH
VDDH
-
-
L21
-
-
VDDH
VDDH
-
-
L23
-
-
VDDH
VDDH
-
-
M18
-
-
VDDH
VDDH
-
-
M19
-
-
VDDH
VDDH
-
-
M20
-
-
VDDH
VDDH
-
-
M21
-
-
VDDH
VDDH
-
-
M23
-
-
VDDH
VDDH
-
-
M25
-
-
VDDH
VDDH
-
-
N18
-
-
VDDH
VDDH
-
-
N19
-
-
VDDH
VDDH
-
-
N20
-
-
VDDH
VDDH
-
-
N21
-
-
VDDH
VDDH
-
-
N23
-
-
VDDH
VDDH
-
-
P18
-
-
VDDH
VDDH
-
-
P19
-
-
VDDH
VDDH
-
-
P20
-
-
VDDH
VDDH
-
-
-
-
P21
VDDH
VDDH
-
-
J10
0 (TL) -
VDDIO0
VDDIO0
-
-
J11
0 (TL) -
VDDIO0
VDDIO0
-
-
J12
0 (TL) -
VDDIO0
VDDIO0
-
-
J8
0 (TL) -
VDDIO0
VDDIO0
-
-
J9
0 (TL) -
VDDIO0
VDDIO0
-
-
K7
0 (TL) -
VDDIO0
VDDIO0
-
-
L7
0 (TL) -
VDDIO0
VDDIO0
-
-
M7
0 (TL) -
VDDIO0
VDDIO0
-
-
N7
0 (TL) -
VDDIO0
VDDIO0
-
-
P7
0 (TL) -
VDDIO0
VDDIO0
-
-
J15
0 (TL) -
VDDIO1
VDDIO1
-
-
J16
0 (TL) -
VDDIO1
VDDIO1
-
-
J17
0 (TL) -
VDDIO1
VDDIO1
-
-
J18
0 (TL) -
VDDIO1
VDDIO1
-
-
K13
0 (TL) -
VDDIO1
VDDIO1
-
-
K14
0 (TL) -
VDDIO1
VDDIO1
-
-
K15
0 (TL) -
VDDIO1
VDDIO1
-
-
K16
0 (TL) -
VDDIO1
VDDIO1
-
-
224
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
K17
0 (TL) -
VDDIO1
VDDIO1
-
-
K18
0 (TL) -
VDDIO1
VDDIO1
-
-
AF15
0 (TL) -
VDDIO5
VDDIO5
-
-
AF16
0 (TL) -
VDDIO5
VDDIO5
-
-
AF17
0 (TL) -
VDDIO5
VDDIO5
-
-
AF18
0 (TL) -
VDDIO5
VDDIO5
-
-
AF19
0 (TL) -
VDDIO5
VDDIO5
-
-
AF20
0 (TL) -
VDDIO5
VDDIO5
-
-
AF21
0 (TL) -
VDDIO5
VDDIO5
-
-
AG19
0 (TL) -
VDDIO5
VDDIO5
-
-
AG20
0 (TL) -
VDDIO5
VDDIO5
-
-
AG21
0 (TL) -
VDDIO5
VDDIO5
-
-
AC7
0 (TL) -
VDDIO6
VDDIO6
-
-
AD7
0 (TL) -
VDDIO6
VDDIO6
-
-
AE7
0 (TL) -
VDDIO6
VDDIO6
-
-
AF10
0 (TL) -
VDDIO6
VDDIO6
-
-
AF11
0 (TL) -
VDDIO6
VDDIO6
-
-
AF12
0 (TL) -
VDDIO6
VDDIO6
-
-
AF13
0 (TL) -
VDDIO6
VDDIO6
-
-
AF14
0 (TL) -
VDDIO6
VDDIO6
-
-
AF8
0 (TL) -
VDDIO6
VDDIO6
-
-
AF9
0 (TL) -
VDDIO6
VDDIO6
-
-
AA7
0 (TL) -
VDDIO7
VDDIO7
-
-
AB7
0 (TL) -
VDDIO7
VDDIO7
-
-
R7
0 (TL) -
VDDIO7
VDDIO7
-
-
T7
0 (TL) -
VDDIO7
VDDIO7
-
-
U6
0 (TL) -
VDDIO7
VDDIO7
-
-
U7
0 (TL) -
VDDIO7
VDDIO7
-
-
V6
0 (TL) -
VDDIO7
VDDIO7
-
-
V7
0 (TL) -
VDDIO7
VDDIO7
-
-
W7
0 (TL) -
VDDIO7
VDDIO7
-
-
Y7
0 (TL) -
VDDIO7
VDDIO7
-
-
B5
-
-
NC
-
-
D5
-
-
NC
-
-
C34
-
-
NC
-
-
D4
-
-
NC
-
-
D3
-
-
NC
-
-
D2
-
-
NC
-
-
E5
-
-
NC
-
-
E4
-
-
NC
-
-
E3
-
-
NC
-
-
E2
-
-
NC
-
-
E1
-
-
NC
-
-
225
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
F3
-
-
NC
-
-
B4
-
-
NC
-
-
F2
-
-
NC
-
-
F1
-
-
NC
-
-
G3
-
-
NC
-
-
P6
-
-
NC
-
-
N6
-
-
NC
-
-
M6
-
-
NC
-
-
A5
-
-
NC
-
-
L6
-
-
NC
-
-
K6
-
-
NC
-
-
AL5
-
-
NC
-
-
AL4
-
-
NC
-
-
AL3
-
-
NC
-
-
AL2
-
-
NC
-
-
AL1
-
-
NC
-
-
AK5
-
-
NC
-
-
AK4
-
-
NC
-
-
AK3
-
-
NC
-
-
A4
-
-
NC
-
-
AK2
-
-
NC
-
-
AK1
-
-
NC
-
-
AM5
-
-
NC
-
-
AM4
-
-
NC
-
-
AM3
-
-
NC
-
-
AM2
-
-
NC
-
-
AN4
-
-
NC
-
-
AN3
-
-
NC
-
-
AP4
-
-
NC
-
-
AJ5
-
-
NC
-
-
B3
-
-
NC
-
-
AJ4
-
-
NC
-
-
AH5
-
-
NC
-
-
AG5
-
-
NC
-
-
AG6
-
-
NC
-
-
AJ20
-
-
NC
-
-
AJ25
-
-
NC
-
-
AJ24
-
-
NC
-
-
AJ23
-
-
NC
-
-
AJ22
-
-
NC
-
-
AJ21
-
-
NC
-
-
C4
-
-
NC
-
-
AJ29
-
-
NC
-
-
226
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AJ28
-
-
NC
-
-
AJ27
-
-
NC
-
-
AJ26
-
-
NC
-
-
AH27
-
-
NC
-
-
AH26
-
-
NC
-
-
AG27
-
-
NC
-
-
AG26
-
-
NC
-
-
AF27
-
-
NC
-
-
AF26
-
-
NC
-
-
C3
-
-
NC
-
-
AH25
-
-
NC
-
-
AH29
-
-
NC
-
-
AH28
-
-
NC
-
-
AK29
-
-
NC
-
-
AK28
-
-
NC
-
-
AK27
-
-
NC
-
-
AK26
-
-
NC
-
-
AK25
-
-
NC
-
-
AP29
-
-
NC
-
-
AP28
-
-
NC
-
-
C2
-
-
NC
-
-
AP27
-
-
NC
-
-
AP26
-
-
NC
-
-
AN29
-
-
NC
-
-
AN28
-
-
NC
-
-
AN27
-
-
NC
-
-
AN26
-
-
NC
-
-
AM29
-
-
NC
-
-
AM28
-
-
NC
-
-
AM27
-
-
NC
-
-
AM26
-
-
NC
-
-
D1
-
-
NC
-
-
AL29
-
-
NC
-
-
AL28
-
-
NC
-
-
AL27
-
-
NC
-
-
AL26
-
-
NC
-
-
A32
-
-
NC
-
-
A33
-
-
NC
-
-
A34
-
-
NC
-
-
AL30
-
-
NC
-
-
B34
-
-
NC
-
-
B33
-
-
NC
-
-
A1
-
-
VSS
-
-
VSS
227
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
A2
-
-
VSS
VSS
-
-
A3
-
-
VSS
VSS
-
-
AA10
-
-
VSS
VSS
-
-
AA11
-
-
VSS
VSS
-
-
AA12
-
-
VSS
VSS
-
-
AA13
-
-
VSS
VSS
-
-
AA14
-
-
VSS
VSS
-
-
AA15
-
-
VSS
VSS
-
-
AA16
-
-
VSS
VSS
-
-
AA17
-
-
VSS
VSS
-
-
AA18
-
-
VSS
VSS
-
-
AA19
-
-
VSS
VSS
-
-
AA20
-
-
VSS
VSS
-
-
AA21
-
-
VSS
VSS
-
-
AA22
-
-
VSS
VSS
-
-
AA23
-
-
VSS
VSS
-
-
AB10
-
-
VSS
VSS
-
-
AB11
-
-
VSS
VSS
-
-
AB12
-
-
VSS
VSS
-
-
AB13
-
-
VSS
VSS
-
-
AB14
-
-
VSS
VSS
-
-
AB15
-
-
VSS
VSS
-
-
AB16
-
-
VSS
VSS
-
-
AB17
-
-
VSS
VSS
-
-
AB18
-
-
VSS
VSS
-
-
AB19
-
-
VSS
VSS
-
-
AB20
-
-
VSS
VSS
-
-
AB21
-
-
VSS
VSS
-
-
AB22
-
-
VSS
VSS
-
-
AB23
-
-
VSS
VSS
-
-
AC10
-
-
VSS
VSS
-
-
AC11
-
-
VSS
VSS
-
-
AC12
-
-
VSS
VSS
-
-
AC20
-
-
VSS
VSS
-
-
AC21
-
-
VSS
VSS
-
-
AC22
-
-
VSS
VSS
-
-
AD9
-
-
VSS
VSS
-
-
AM1
-
-
VSS
VSS
-
-
AM30
-
-
VSS
VSS
-
-
AM34
-
-
VSS
VSS
-
-
AN1
-
-
VSS
VSS
-
-
AN2
-
-
VSS
VSS
-
-
AN30
-
-
VSS
VSS
-
-
228
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
AN31
-
-
VSS
VSS
-
-
AN32
-
-
VSS
VSS
-
-
AN33
-
-
VSS
VSS
-
-
AN34
-
-
VSS
VSS
-
-
AP1
-
-
VSS
VSS
-
-
AP2
-
-
VSS
VSS
-
-
AP3
-
-
VSS
VSS
-
-
AP30
-
-
VSS
VSS
-
-
AP31
-
-
VSS
VSS
-
-
AP32
-
-
VSS
VSS
-
-
AP33
-
-
VSS
VSS
-
-
AP34
-
-
VSS
VSS
-
-
B1
-
-
VSS
VSS
-
-
B2
-
-
VSS
VSS
-
-
C1
-
-
VSS
VSS
-
-
L17
-
-
VSS
VSS
-
-
L9
-
-
VSS
VSS
-
-
M10
-
-
VSS
VSS
-
-
M11
-
-
VSS
VSS
-
-
M12
-
-
VSS
VSS
-
-
M15
-
-
VSS
VSS
-
-
M16
-
-
VSS
VSS
-
-
M17
-
-
VSS
VSS
-
-
N10
-
-
VSS
VSS
-
-
N11
-
-
VSS
VSS
-
-
N12
-
-
VSS
VSS
-
-
N13
-
-
VSS
VSS
-
-
N14
-
-
VSS
VSS
-
-
N15
-
-
VSS
VSS
-
-
N16
-
-
VSS
VSS
-
-
N17
-
-
VSS
VSS
-
-
P10
-
-
VSS
VSS
-
-
P11
-
-
VSS
VSS
-
-
P12
-
-
VSS
VSS
-
-
P13
-
-
VSS
VSS
-
-
P14
-
-
VSS
VSS
-
-
P15
-
-
VSS
VSS
-
-
P16
-
-
VSS
VSS
-
-
P17
-
-
VSS
VSS
-
-
R10
-
-
VSS
VSS
-
-
R11
-
-
VSS
VSS
-
-
R12
-
-
VSS
VSS
-
-
R13
-
-
VSS
VSS
-
-
229
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
R14
-
-
VSS
VSS
-
-
R15
-
-
VSS
VSS
-
-
R16
-
-
VSS
VSS
-
-
R17
-
-
VSS
VSS
-
-
T10
-
-
VSS
VSS
-
-
T11
-
-
VSS
VSS
-
-
T12
-
-
VSS
VSS
-
-
T13
-
-
VSS
VSS
-
-
T14
-
-
VSS
VSS
-
-
T15
-
-
VSS
VSS
-
-
T16
-
-
VSS
VSS
-
-
T17
-
-
VSS
VSS
-
-
U10
-
-
VSS
VSS
-
-
U11
-
-
VSS
VSS
-
-
U12
-
-
VSS
VSS
-
-
U13
-
-
VSS
VSS
-
-
U14
-
-
VSS
VSS
-
-
U15
-
-
VSS
VSS
-
-
U16
-
-
VSS
VSS
-
-
U17
-
-
VSS
VSS
-
-
U18
-
-
VSS
VSS
-
-
V10
-
-
VSS
VSS
-
-
V11
-
-
VSS
VSS
-
-
V12
-
-
VSS
VSS
-
-
V13
-
-
VSS
VSS
-
-
V14
-
-
VSS
VSS
-
-
V15
-
-
VSS
VSS
-
-
V16
-
-
VSS
VSS
-
-
V17
-
-
VSS
VSS
-
-
V18
-
-
VSS
VSS
-
-
V19
-
-
VSS
VSS
-
-
V20
-
-
VSS
VSS
-
-
V21
-
-
VSS
VSS
-
-
V22
-
-
VSS
VSS
-
-
V23
-
-
VSS
VSS
-
-
W10
-
-
VSS
VSS
-
-
W11
-
-
VSS
VSS
-
-
W12
-
-
VSS
VSS
-
-
W13
-
-
VSS
VSS
-
-
W14
-
-
VSS
VSS
-
-
W15
-
-
VSS
VSS
-
-
W16
-
-
VSS
VSS
-
-
W17
-
-
VSS
VSS
-
-
230
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
W18
-
-
VSS
VSS
-
-
W19
-
-
VSS
VSS
-
-
W20
-
-
VSS
VSS
-
-
W21
-
-
VSS
VSS
-
-
W22
-
-
VSS
VSS
-
-
W23
-
-
VSS
VSS
-
-
Y10
-
-
VSS
VSS
-
-
Y11
-
-
VSS
VSS
-
-
Y12
-
-
VSS
VSS
-
-
Y13
-
-
VSS
VSS
-
-
Y14
-
-
VSS
VSS
-
-
Y15
-
-
VSS
VSS
-
-
Y16
-
-
VSS
VSS
-
-
Y17
-
-
VSS
VSS
-
-
Y18
-
-
VSS
VSS
-
-
Y19
-
-
VSS
VSS
-
-
Y20
-
-
VSS
VSS
-
-
Y21
-
-
VSS
VSS
-
-
Y22
-
-
VSS
VSS
-
-
Y23
-
-
VSS
VSS
-
-
J22
-
-
VSS
VSS
-
-
J24
-
-
VSS
VSS
-
-
J26
-
-
VSS
VSS
-
-
K22
-
-
VSS
VSS
-
-
K24
-
-
VSS
VSS
-
-
L22
-
-
VSS
VSS
-
-
L24
-
-
VSS
VSS
-
-
L25
-
-
VSS
VSS
-
-
M22
-
-
VSS
VSS
-
-
M24
-
-
VSS
VSS
-
-
N22
-
-
VSS
VSS
-
-
P22
-
-
VSS
VSS
-
-
P23
-
-
VSS
VSS
-
-
R18
-
-
VSS
VSS
-
-
R19
-
-
VSS
VSS
-
-
R20
-
-
VSS
VSS
-
-
R21
-
-
VSS
VSS
-
-
R22
-
-
VSS
VSS
-
-
R23
-
-
VSS
VSS
-
-
T18
-
-
VSS
VSS
-
-
T19
-
-
VSS
VSS
-
-
T20
-
-
VSS
VSS
-
-
T21
-
-
VSS
VSS
-
-
231
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 86. 1156 fpBGA Pin Table (Continued)
F1156 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
F1156 Pair
T22
-
-
VSS
VSS
-
-
T23
-
-
VSS
VSS
-
-
U19
-
-
VSS
VSS
-
-
U20
-
-
VSS
VSS
-
-
U21
-
-
VSS
VSS
-
-
U22
-
-
VSS
VSS
-
-
U23
-
-
VSS
VSS
-
-
Note: All differential pairs use adjacent balls.
232
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
J44
-
-
VDD33
VDD33_FPGAPLL
-
-
K42
-
-
O
PRD_DATA
RD_DATA/TDO
-
J43
-
-
I
PRESET_N
RESET_N
-
K43
-
-
I
PRD_CFG_N
RD_CFG_N
-
K44
-
-
I
PPRGRM_N
PRGRM_N
-
M42
0 (TL) 7
IO
PL2D
PLL_CK0C/HPPLL
L1C
M41
0 (TL) 7
IO
PL2C
PLL_CK0T/HPPLL
L1T
M40
0 (TL) 7
IO
PL3D
-
L3C
L38
0 (TL) 7
IO
PL3B
-
L4C
VSS
VSS
-
-
IO
PL3C
VREF_0_07
L3T
A1
M39
-
-
0 (TL) 7
L39
0 (TL) 7
IO
PL3A
-
L4T
N42
0 (TL) 7
IO
PL4D
D5
L5C
G30
0 (TL) -
VDDIO0
VDDIO0
-
-
N41
0 (TL) 7
IO
PL4C
D6
L5T
N40
0 (TL) 8
IO
PL5D
-
L7C
L40
0 (TL) 8
IO
PL5B
-
L8C
VSS
VSS
-
-
IO
PL5C
VREF_0_08
L7T
A2
N39
-
-
0 (TL) 8
L41
0 (TL) 8
IO
PL5A
-
L8T
P44
0 (TL) 8
IO
PL6D
HDC
L9C
C42
VDD15
VDD15
-
-
P43
0 (TL) 8
-
-
IO
PL6C
LDC_N
L9T
P42
0 (TL) 8
IO
PL7D
-
L11C
L42
0 (TL) 8
IO
PL7B
-
L12C
G31
0 (TL) -
VDDIO0
VDDIO0
-
-
P41
0 (TL) 8
IO
PL7C
-
L11T
L43
0 (TL) 8
IO
PL7A
-
L12T
R44
0 (TL) 9
IO
PL8D
TESTCFG
L13C
VSS
VSS
-
-
R43
A11
0 (TL) 9
IO
PL8C
D7
L13T
R42
0 (TL) 9
IO
PL9D
VREF_0_09
L15C
M43
0 (TL) 9
IO
PL9B
-
L16C
VDD15
VDD15
-
-
IO
PL9C
A17/PPC_A31
L15T
D42
R41
-
-
-
-
0 (TL) 9
M44
0 (TL) 9
IO
PL9A
-
L16T
T44
0 (TL) 9
IO
PL10D
CS0_N
L17C
G36
0 (TL) -
VDDIO0
VDDIO0
-
-
T43
0 (TL) 9
IO
PL10C
CS1
L17T
T42
0 (TL) 10
IO
PL11D
-
L19C
N44
0 (TL) 10
IO
PL11B
-
L20C
VSS
VSS
-
-
A22
-
-
233
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
T41
0 (TL) 10
IO
PL11C
-
L19T
N43
0 (TL) 10
IO
PL11A
-
L20T
U44
0 (TL) 10
E40
-
-
IO
PL12D
INIT_N
L21C
VDD15
VDD15
-
-
U43
0 (TL) 10
IO
PL12C
DOUT
L21T
U42
0 (TL) 10
IO
PL13D
VREF_0_10
L23C
P40
0 (TL) 10
IO
PL13B
-
L24C
U41
0 (TL) 10
IO
PL13C
A16/PPC_A30
L23T
P39
0 (TL) 10
IO
PL13A
-
L24T
V44
7 (CL) 1
IO
PL14D
A15/PPC_A29
L25C
VSS
VSS
-
-
IO
PL14C
A14/PPC_A28
L25T
VSS
VSS
-
-
IO
PL15D
-
L27C
B2
V43
G34
-
-
7 (CL) 1
-
-
V42
7 (CL) 1
R40
7 (CL) 1
G35
-
-
IO
PL15B
-
L28C
VDD15
VDD15
-
-
V41
7 (CL) 1
IO
PL15C
-
L27T
R39
7 (CL) 1
IO
PL15A
-
L28T
W44
7 (CL) 1
IO
PL16D
VREF_7_01
L29C
T40
7 (CL) 1
IO
PL16B
-
L30C
W38
7 (CL) -
VDDIO7
VDDIO7
-
-
W43
7 (CL) 1
IO
PL16C
D4
L29T
T39
7 (CL) 1
IO
PL16A
-
L30T
W42
7 (CL) 2
IO
PL17D
-
L31C
U40
7 (CL) 2
B43
-
-
IO
PL17B
-
L32C
VSS
VSS
-
-
W41
7 (CL) 2
IO
PL17C
-
L31T
U39
7 (CL) 2
IO
PL17A
-
L32T
Y44
7 (CL) 2
IO
PL18D
RDY/BUSY_N/RCLK L33C
V40
7 (CL) 2
IO
PL18B
-
L34C
G37
VDD15
VDD15
-
-
Y43
7 (CL) 2
-
-
IO
PL18C
VREF_7_02
L33T
V39
7 (CL) 2
IO
PL18A
-
L34T
Y42
7 (CL) 2
IO
PL19D
A13/PPC_A27
L35C
W40
7 (CL) 2
IO
PL19B
-
L36C
Y38
7 (CL) -
VDDIO7
VDDIO7
-
-
Y41
7 (CL) 2
IO
PL19C
A12/PPC_A26
L35T
W39
7 (CL) 2
IO
PL19A
-
L36T
AA44
7 (CL) 3
IO
PL20D
-
L37C
Y40
7 (CL) 3
IO
PL20B
-
L38C
VSS
VSS
-
-
AA43
B44
7 (CL) 3
-
-
IO
PL20C
-
L37T
Y39
7 (CL) 3
IO
PL20A
-
L38T
234
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AA42
7 (CL) 3
IO
PL21D
A11/PPC_A25
L39C
AA40
7 (CL) 3
IO
PL21B
-
L40C
-
VDD15
VDD15
-
AA41
H38
7 (CL) 3
IO
PL21C
VREF_7_03
L39T
AA39
7 (CL) 3
IO
PL21A
-
L40T
AB44
7 (CL) 3
IO
PL22D
-
L41C
AB40
7 (CL) 3
IO
PL22B
-
L42C
AB38
7 (CL) -
VDDIO7
VDDIO7
-
-
AB43
7 (CL) 3
IO
PL22C
-
L41T
AB39
7 (CL) 3
IO
PL22A
-
L42T
AB42
7 (CL)
4
IO
PL23D
RD_N/MPI_STRB_
N
L43C
AC40
7 (CL) 4
IO
PL23B
-
L44C
G20
-
-
-
VSS
VSS
-
-
AB41
7 (CL) 4
-
IO
PL23C
VREF_7_04
L43T
AC39
7 (CL) 4
IO
PL23A
-
L44T
AC44
7 (CL) 4
IO
PL24D
PLCK0C
L45C
AD40
7 (CL) 4
IO
PL24B
-
L46C
AC43
7 (CL) 4
IO
PL24C
PLCK0T
L45T
AD39
7 (CL) 4
IO
PL24A
-
L46T
AC42
7 (CL) 5
IO
PL25D
A10/PPC_A24
L47C
AE40
7 (CL) 5
IO
PL25B
-
L48C
AC38
7 (CL) -
VDDIO7
VDDIO7
-
-
AC41
7 (CL) 5
IO
PL25C
A9/PPC_A23
L47T
AE39
7 (CL) 5
IO
PL25A
-
L48T
AD44
7 (CL) 5
IO
PL26D
A8/PPC_A22
L49C
AF40
7 (CL) 5
G23
-
-
IO
PL26B
-
L50C
VSS
VSS
-
-
AD43
7 (CL) 5
IO
PL26C
VREF_7_05
L49T
AF39
7 (CL) 5
IO
PL26A
-
L50T
AD42
7 (CL) 5
IO
PL27D
-
L51C
AG44
7 (CL) 5
IO
PL27B
-
L52C
VDD15
VDD15
-
-
IO
PL27C
-
L51T
J38
AD41
-
-
7 (CL) 5
AG43
7 (CL) 5
IO
PL27A
-
L52T
AE44
7 (CL) 6
IO
PL28D
PLCK1C
L53C
AG42
7 (CL) 6
IO
PL28B
-
L54C
AE38
7 (CL) -
VDDIO7
VDDIO7
-
-
AE43
7 (CL) 6
IO
PL28C
PLCK1T
L53T
AG41
7 (CL) 6
IO
PL28A
-
L54T
AE42
7 (CL) 6
IO
PL29D
VREF_7_06
L55C
AG40
7 (CL) 6
IO
PL29B
-
L56C
VSS
VSS
-
-
G26
-
-
235
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AE41
7 (CL) 6
IO
PL29C
A7/PPC_A21
L55T
AG39
7 (CL) 6
IO
PL29A
-
L56T
AF44
7 (CL) 6
IO
PL30D
A6/PPC_A20
L57C
AH40
7 (CL) 6
IO
PL30B
-
L58C
VDD15
VDD15
-
-
AF43
N38
7 (CL) 6
-
-
IO
PL30C
A5/PPC_A19
L57T
AH39
7 (CL) 6
IO
PL30A
-
L58T
AF42
7 (CL) 7
IO
PL31D
-
L59C
AJ40
7 (CL) 7
IO
PL31B
-
L60C
AF38
7 (CL) -
VDDIO7
VDDIO7
-
-
AF41
7 (CL) 7
IO
PL31C
-
L59T
AJ39
7 (CL) 7
IO
PL31A
-
L60T
AH44
7 (CL) 7
IO
PL32D
WR_N/MPI_RW
L61C
AK42
7 (CL) 7
IO
PL32B
-
L62C
VSS
VSS
-
-
AH43
G29
7 (CL) 7
-
-
IO
PL32C
VREF_7_07
L61T
AK41
7 (CL) 7
IO
PL32A
-
L62T
AH42
7 (CL) 7
IO
PL33D
-
L63C
AK40
7 (CL) 7
R7
-
-
IO
PL33B
-
L64C
VDD15
VDD15
-
-
AH41
7 (CL) 7
IO
PL33C
-
L63T
AK39
7 (CL) 7
IO
PL33A
-
L64T
AJ44
7 (CL) 8
IO
PL34D
A4/PPC_A18
L65C
AJ43
7 (CL) 8
IO
PL34C
VREF_7_08
L65T
AJ42
7 (CL) 8
IO
PL35D
A3/PPC_A17
L67C
AM44
7 (CL) 8
IO
PL35B
-
L68C
VSS
VSS
-
-
IO
PL35C
A2/PPC_A16
L67T
G32
AJ41
-
-
7 (CL) 8
AM43
7 (CL) 8
IO
PL35A
-
L68T
AK44
7 (CL) 8
IO
PL36D
A1/PPC_A15
L69C
AL40
7 (CL) 8
T38
-
-
IO
PL36B
-
L70C
VDD15
VDD15
-
-
AK43
7 (CL) 8
IO
PL36C
A0/PPC_A14
L69T
AL39
7 (CL) 8
IO
PL36A
-
L70T
AL44
7 (CL) 8
IO
PL37D
DP0
L71C
AN43
7 (CL) 8
IO
PL37B
-
L72C
AL43
7 (CL) 8
IO
PL37C
DP1
L71T
AP43
7 (CL) 8
IO
PL37A
-
L72T
AL42
6 (BL) 1
IO
PL38D
D8
L73C
AR43
6 (BL) 1
IO
PL38B
-
L74C
VSS
VSS
-
-
AL41
AB1
6 (BL) 1
-
-
IO
PL38C
VREF_6_01
L73T
AR42
6 (BL) 1
IO
PL38A
-
L74T
236
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AM42
6 (BL) 1
IO
PL39D
D9
L75C
AN40
6 (BL) 1
IO
PL39B
-
L76C
VDD15
VDD15
-
-
AM41
U7
6 (BL) 1
-
-
IO
PL39C
D10
L75T
AN39
6 (BL) 1
IO
PL39A
-
L76T
AM40
6 (BL) 2
IO
PL40D
-
L77C
AP40
6 (BL) 2
IO
PL40B
-
L78C
AJ38
6 (BL) -
VDDIO6
VDDIO6
-
-
AM39
6 (BL) 2
IO
PL40C
VREF_6_02
L77T
AP39
6 (BL) 2
IO
PL40A
-
L78T
AP44
6 (BL) 2
IO
PL41D
-
L79C
AN42
6 (BL) 2
IO
PL41B
-
L80C
VSS
VSS
-
-
AR44
AD7
6 (BL) 2
IO
PL41C
-
L79T
AN41
6 (BL) 2
IO
PL41A
-
L80T
AP42
6 (BL) 3
IO
PL42D
D11
L81C
AT44
6 (BL) 3
Y7
-
-
-
-
IO
PL42B
-
L82C
VDD15
VDD15
-
-
AP41
6 (BL) 3
IO
PL42C
D12
L81T
AT43
6 (BL) 3
IO
PL42A
-
L82T
AU44
6 (BL) 3
IO
PL43D
-
L83C
AV44
6 (BL) 3
IO
PL43B
-
L84C
AM38
6 (BL) -
VDDIO6
VDDIO6
-
-
AU43
6 (BL) 3
IO
PL43C
-
L83T
AV43
6 (BL) 3
IO
PL43A
-
L84T
AU42
6 (BL) 3
IO
PL44D
VREF_6_03
L85C
AW44
6 (BL) 4
AD38
-
-
IO
PL44B
-
L86C
VSS
VSS
-
-
AT42
6 (BL) 3
IO
PL44C
D13
L85T
AY44
6 (BL) 4
IO
PL44A
-
L86T
AR41
6 (BL) 4
IO
PL45D
-
L87C
BB44
6 (BL) 4
IO
PL45B
-
L88C
VDD15
VDD15
-
-
AR40
AC7
6 (BL) 4
-
-
IO
PL45C
VREF_6_04
L87T
BA44
6 (BL) 4
IO
PL45A
-
L88T
AU41
6 (BL) 4
IO
PL46D
-
L89C
AR38
6 (BL) -
VDDIO6
VDDIO6
-
-
AT41
6 (BL) 4
IO
PL46C
-
L89T
AT40
6 (BL) 4
AG7
AT39
-
-
6 (BL) 4
IO
PL47D
PLL_CK7C/HPPLL
L91C
VSS
VSS
-
-
IO
PL47C
PLL_CK7T/HPPLL
L91T
AG38
-
-
VSS
VSS
-
-
AR39
-
-
I
PTEMP
PTEMP
-
237
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
AV29
VREF Group
Additional
Function
Pin Description
FTE1036 Pair
VDDIO6
VDDIO6
-
-
AE7
-
-
VDD15
VDD15
-
-
BC33
-
-
IO
LVDS_R
LVDS_R
-
BA42
-
-
VDD33
VDD33_FPGAPLL
-
-
AK7
-
-
VSS
VSS
-
-
AV42
-
-
VDD33
VDD33_FPGAPLL
-
-
-
-
AH38
6 (BL) -
I/O
VDD15
VDD15
-
-
BB43
6 (BL) 5
IO
PB2A
DP2
L93T
BC42
6 (BL) 5
IO
PB2C
PLL_CK6T/PPLL
L94T
AV32
6 (BL) -
VDDIO6
VDDIO6
-
-
BA43
6 (BL) 5
IO
PB2B
-
L93C
BD42
6 (BL) 5
IO
PB2D
PLL_CK6C/PPLL
L94C
BC41
6 (BL) 5
AK38
-
-
IO
PB3C
-
L96T
VSS
VSS
-
-
BD41
6 (BL) 5
IO
PB3D
-
L96C
BC40
6 (BL) 5
IO
PB4C
VREF_6_05
L98T
VDD15
VDD15
-
-
IO
PB4D
DP3
L98C
AJ7
BD40
-
-
6 (BL) 5
AW43
6 (BL) 6
IO
PB5A
-
L99T
BA37
6 (BL) 6
IO
PB5C
-
L100T
AV35
6 (BL) -
VDDIO6
VDDIO6
-
-
AY43
6 (BL) 6
IO
PB5B
-
L99C
BB37
6 (BL) 6
IO
PB5D
-
L100C
AW42
6 (BL) 6
IO
PB6A
-
L101T
BC37
6 (BL) 6
AN1
-
-
IO
PB6C
VREF_6_06
L102T
VSS
VSS
-
-
AY42
6 (BL) 6
IO
PB6B
-
L101C
BD37
6 (BL) 6
IO
PB6D
D14
L102C
AW41
6 (BL) 6
IO
PB7A
-
L103T
BA36
6 (BL) 6
IO
PB7C
-
L104T
VDD15
VDD15
-
-
AV41
AL38
6 (BL) 6
IO
PB7B
-
L103C
BB36
6 (BL) 6
IO
PB7D
-
L104C
AY41
6 (BL) 7
IO
PB8A
-
L105T
BC36
6 (BL) 7
IO
PB8C
D15
L106T
BA41
6 (BL) 7
IO
PB8B
-
L105C
BD36
6 (BL) 7
IO
PB8D
D16
L106C
AU40
6 (BL) 7
IO
PB9A
-
L107T
BA35
6 (BL) 7
AN7
-
-
-
-
IO
PB9C
D17
L108T
VSS
VSS
-
-
AU39
6 (BL) 7
IO
PB9B
-
L107C
BB35
6 (BL) 7
IO
PB9D
D18
L108C
AW40
6 (BL) 7
IO
PB10A
-
L109T
238
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
BC35
6 (BL) 7
IO
PB10C
VREF_6_07
L110T
AV40
6 (BL) 7
IO
PB10B
-
L109C
BD35
6 (BL) 7
IO
PB10D
D19
L110C
BA34
6 (BL) 8
IO
PB11C
D20
L112T
BB34
6 (BL) 8
IO
PB11D
D21
L112C
BA40
6 (BL) 8
IO
PB12A
-
L113T
BC34
6 (BL) 8
IO
PB12C
VREF_6_08
L114T
BB40
6 (BL) 8
IO
PB12B
-
L113C
BD34
6 (BL) 8
IO
PB12D
D22
L114C
AV39
6 (BL) 9
IO
PB13A
-
L115T
BA33
6 (BL) 9
IO
PB13C
D23
L116T
AW39
6 (BL) 9
IO
PB13B
-
L115C
BB33
6 (BL) 9
IO
PB13D
D24
L116C
BB39
6 (BL) 9
IO
PB14A
-
L117T
BA32
6 (BL) 9
IO
PB14C
VREF_6_09
L118T
BA39
6 (BL) 9
IO
PB14B
-
L117C
BB32
6 (BL) 9
IO
PB14D
D25
L118C
BC39
6 (BL) 9
IO
PB15A
-
L119T
BC32
6 (BL) 9
IO
PB15C
-
L120T
BD39
6 (BL) 9
IO
PB15B
-
L119C
BD32
6 (BL) 9
IO
PB15D
-
L120C
BB38
6 (BL) 10
IO
PB16A
-
L121T
BA31
6 (BL) 10
IO
PB16C
D26
L122T
BA38
6 (BL) 10
IO
PB16B
-
L121C
BB31
6 (BL) 10
IO
PB16D
D27
L122C
AW38
6 (BL) 10
IO
PB17A
-
L123T
BC31
6 (BL) 10
IO
PB17C
-
L124T
AY38
6 (BL) 10
IO
PB17B
-
L123C
BD31
6 (BL) 10
IO
PB17D
-
L124C
BC38
6 (BL) 10
IO
PB18A
-
L125T
BA30
6 (BL) 10
IO
PB18C
VREF_6_10
L126T
BD38
6 (BL) 10
IO
PB18B
-
L125C
BB30
6 (BL) 10
IO
PB18D
D28
L126C
AW37
6 (BL) 11
IO
PB19A
-
L127T
BC30
6 (BL) 11
IO
PB19C
D29
L128T
AY37
6 (BL) 11
IO
PB19B
-
L127C
BD30
6 (BL) 11
IO
PB19D
D30
L128C
AW36
6 (BL) 11
IO
PB20A
-
L129T
BA29
6 (BL) 11
IO
PB20C
VREF_6_11
L130T
AY36
6 (BL) 11
IO
PB20B
-
L129C
BB29
6 (BL) 11
IO
PB20D
D31
L130C
AW35
5 (BC) 1
IO
PB21A
-
L131T
BC29
5 (BC) 1
IO
PB21C
-
L132T
239
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
AN38
-
VREF Group
-
I/O
Additional
Function
Pin Description
FTE1036 Pair
VSS
VSS
-
-
AY35
5 (BC) 1
IO
PB21B
-
L131C
BD29
5 (BC) 1
IO
PB21D
-
L132C
AW34
5 (BC) 1
IO
PB22A
-
L133T
BA28
5 (BC) 1
AM7
-
-
IO
PB22C
VREF_5_01
L134T
VDD15
VDD15
-
-
AY34
5 (BC) 1
IO
PB22B
-
L133C
BB28
5 (BC) 1
IO
PB22D
-
L134C
AW33
5 (BC) 2
IO
PB23A
-
L135T
BC28
5 (BC) 2
IO
PB23C
PBCK0T
L136T
AV17
5 (BC) -
VDDIO5
VDDIO5
-
-
BD28
5 (BC) 2
IO
PB23D
PBCK0C
L136C
BA27
5 (BC) 2
IO
PB24C
VREF_5_02
L138T
AY33
5 (BC) 2
IO
PB24B
-
L137C
BB27
5 (BC) 2
IO
PB24D
-
L138C
AW32
5 (BC) 2
IO
PB25A
-
L139T
BC27
5 (BC) 2
AP38
-
-
IO
PB25C
-
L140T
VDD15
VDD15
-
-
AY32
5 (BC) 2
IO
PB25B
-
L139C
BD27
5 (BC) 2
IO
PB25D
-
L140C
AW31
5 (BC) 3
IO
PB26A
-
L141T
BA26
5 (BC) 3
IO
PB26C
-
L142T
AV20
5 (BC) -
VDDIO5
VDDIO5
-
-
AY31
5 (BC) 3
IO
PB26B
-
L141C
BB26
5 (BC) 3
IO
PB26D
VREF_5_03
L142C
AW30
5 (BC) 3
IO
PB27A
-
L143T
BC26
5 (BC) 3
AN44
-
-
IO
PB27C
-
L144T
VSS
VSS
-
-
AY30
5 (BC) 3
IO
PB27B
-
L143C
BD26
5 (BC) 3
IO
PB27D
-
L144C
AW29
5 (BC) 3
IO
PB28A
-
L145T
BA25
5 (BC) 3
IO
PB28C
PBCK1T
L146T
VDD15
VDD15
-
-
AY29
AR7
5 (BC) 3
-
-
IO
PB28B
-
L145C
BB25
5 (BC) 3
IO
PB28D
PBCK1C
L146C
AW28
5 (BC) 3
IO
PB29A
-
L147T
BC25
5 (BC) 4
IO
PB29C
-
L148T
AV21
5 (BC) -
VDDIO5
VDDIO5
-
-
AY28
5 (BC) 3
IO
PB29B
-
L147C
BD25
5 (BC) 4
IO
PB29D
-
L148C
AW27
5 (BC) 4
IO
PB30A
-
L149T
BA24
5 (BC) 4
IO
PB30C
-
L150T
VSS
VSS
-
-
AV7
-
-
240
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AY27
5 (BC) 4
IO
PB30B
-
L149C
BB24
5 (BC) 4
IO
PB30D
VREF_5_04
L150C
AW26
5 (BC) 4
IO
PB31A
-
L151T
BC24
5 (BC) 4
IO
PB31C
-
L152T
VDD15
VDD15
-
-
AY26
AT7
5 (BC) 4
-
-
IO
PB31B
-
L151C
BD24
5 (BC) 4
IO
PB31D
-
L152C
AW25
5 (BC) 5
IO
PB32A
-
L153T
BA23
5 (BC) 5
IO
PB32C
-
L154T
AV23
5 (BC) -
VDDIO5
VDDIO5
-
-
AY25
5 (BC) 5
IO
PB32B
-
L153C
BB23
5 (BC) 5
IO
PB32D
VREF_5_05
L154C
AW23
5 (BC) 5
IO
PB33A
-
L155T
BC23
5 (BC) 5
IO
PB33C
-
L156T
AV18
VSS
VSS
-
-
AY23
5 (BC) 5
-
-
IO
PB33B
-
L155C
BD23
5 (BC) 5
IO
PB33D
-
L156C
AW24
5 (BC) 5
IO
PB34A
-
L157T
BA22
5 (BC) 5
AT38
-
-
IO
PB34C
-
L158T
VDD15
VDD15
-
-
AY24
5 (BC) 5
IO
PB34B
-
L157C
BB22
5 (BC) 5
IO
PB34D
-
L158C
AW22
5 (BC) 6
IO
PB35A
-
L159T
BD21
5 (BC) 6
IO
PB35C
-
L160T
AV25
5 (BC) -
VDDIO5
VDDIO5
-
-
AY22
5 (BC) 6
IO
PB35B
-
L159C
BC21
5 (BC) 6
IO
PB35D
VREF_5_06
L160C
BD20
5 (BC) 6
IO
PB36C
-
L162T
AV22
VSS
VSS
-
-
5 (BC) 6
IO
PB36D
-
L162C
AY21
5 (BC) 7
IO
PB37A
-
L163T
BB20
5 (BC) 7
IO
PB37C
-
L164T
BC20
AU7
-
-
-
VDD15
VDD15
-
-
AW21
5 (BC) 7
-
IO
PB37B
-
L163C
BA20
5 (BC) 7
IO
PB37D
-
L164C
BA21
5 (BC) 7
IO
PB38A
-
L165T
BD19
5 (BC) 7
IO
PB38C
VREF_5_07
L166T
AV26
5 (BC) -
VDDIO5
VDDIO5
-
-
BB21
5 (BC) 7
IO
PB38B
-
L165C
BC19
5 (BC) 7
IO
PB38D
-
L166C
AY20
5 (BC) 7
IO
PB39A
-
L167T
BB19
5 (BC) 7
IO
PB39C
-
L168T
VSS
VSS
-
-
AV24
-
-
241
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AW20
5 (BC) 7
IO
PB39B
-
L167C
BA19
5 (BC) 7
IO
PB39D
-
L168C
AY19
5 (BC) 8
IO
PB40A
-
L169T
BD18
5 (BC) 8
IO
PB40C
-
L170T
AW19
5 (BC) 8
IO
PB40B
-
L169C
BC18
5 (BC) 8
IO
PB40D
VREF_5_08
L170C
AY18
5 (BC) 8
IO
PB41A
-
L171T
BB18
5 (BC) 8
IO
PB41C
-
L172T
AW18
5 (BC) 8
IO
PB41B
-
L171C
BA18
5 (BC) 8
IO
PB41D
-
L172C
AY17
5 (BC) 8
IO
PB42A
-
L173T
BD17
5 (BC) 8
IO
PB42C
-
L174T
VSS
VSS
-
-
AW17
AV27
5 (BC) 8
-
-
IO
PB42B
-
L173C
BC17
5 (BC) 8
IO
PB42D
-
L174C
AY16
5 (BC) 9
IO
PB43A
-
L175T
BB17
5 (BC) 9
IO
PB43C
-
L176T
AW16
5 (BC) 9
IO
PB43B
-
L175C
BA17
5 (BC) 9
IO
PB43D
-
L176C
BD13
5 (BC) 9
IO
PB44A
-
L177T
BD16
5 (BC) 9
IO
PB44C
-
L178T
BC13
5 (BC) 9
IO
PB44B
-
L177C
BC16
5 (BC) 9
IO
PB44D
VREF_5_09
L178C
BB16
5 (BC) 9
IO
PB45C
-
L180T
VSS
VSS
-
-
BA16
AV30
5 (BC) 9
-
-
IO
PB45D
-
L180C
BD12
5 (BC) 10
IO
PB46A
-
L181T
BD14
5 (BC) 10
IO
PB46C
-
L182T
BC12
5 (BC) 10
IO
PB46B
-
L181C
BD15
5 (BC) 10
IO
PB46D
VREF_5_10
L182C
BC15
5 (BC) 10
IO
PB47C
PLL_CK5T/PPLL
L184T
BC14
5 (BC) 10
IO
PB47D
PLL_CK5C/PPLL
L184C
BC11
-
-
VDD33
VDD33_FPGAPLL
-
-
AV33
-
-
VSS
VSS
-
-
BD7
-
-
VDD33
VDD33_FPGAPLL
-
-
BD8
-
-
I
SPARE_1
-
-
BB1
-
-
I
RESETN
-
-
BB2
-
-
I
TRISTN
-
-
AV15
-
-
I
TESTMD1N
-
-
BD6
-
-
VDDGB
VDDGB
-
-
BC8
-
-
I
TESTMD0N
-
-
AV38
-
-
VSS
VSS
-
-
BC7
-
-
I
PDN
-
-
242
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
BD5
-
-
I
ATREFCLK
-
-
BD4
-
-
I
TESTCLK
-
-
BD3
-
-
I
BTREFCLK
-
-
BC3
-
-
I
TSTAT1B
-
-
AV13
-
-
I
TSTAT0B
-
-
BB7
-
-
I
TSCLKB
-
-
BC6
-
-
O
RSTAT1B
-
-
BC4
-
-
O
RSTAT0B
-
-
BC5
-
-
O
RSCLKB
-
-
AW8
-
-
VSS
VSS
-
-
AW15
-
-
VDDOB
VDDOB_D
-
-
AY15
-
-
O
HDOUTP_D
-
HSP_1
BA15
-
-
O
HDOUTN_D
-
HSN_1
BB15
-
-
VDDOB
VDDOB_D
-
-
AY14
-
-
I
HDINP_D
-
HSP_2
AW10
-
-
VSS
VSS
-
-
BA14
-
-
I
HDINN_D
-
HSN_2
AV10
-
-
VDD_ANA
VDD_ANA
-
-
BB14
-
-
VDDIB
VDDIB_D
-
-
AW12
-
-
VSS
VSS
-
-
AW13
-
-
VDDOB
VDDOB_C
-
-
AY13
-
-
O
HDOUTP_C
-
HSP_3
BA13
-
-
O
HDOUTN_C
-
HSN_3
BB13
-
-
VDDOB
VDDOB_C
-
-
AY12
-
-
I
HDINP_C
-
HSP_4
AW14
-
-
VSS
VSS
-
-
BA12
-
-
I
HDINN_C
-
HSN_4
AV12
-
-
VDD_ANA
VDD_ANA
-
-
BB12
-
-
VDDIB
VDDIB_C
-
-
BC9
-
-
VSS
VSS
-
-
AW11
-
-
VDDOB
VDDOB_B
-
-
AY11
-
-
O
HDOUTP_B
-
HSP_5
BA11
-
-
O
HDOUTN_B
-
HSN_5
BB11
-
-
VDDOB
VDDOB_B
-
-
AV14
-
-
VDD_ANA
VDD_ANA
-
-
AY10
-
-
I
HDINP_B
-
HSP_6
BC10
-
-
VSS
VSS
-
-
BA10
-
-
I
HDINN_B
-
HSN_6
BB10
-
-
VDDIB
VDDIB_B
-
-
BD9
-
-
VSS
VSS
-
-
AW9
-
-
VDDOB
VDDOB_A
-
-
AY9
-
-
O
HDOUTP_A
-
HSP_7
BA9
-
-
O
HDOUTN_A
-
HSN_7
243
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
BB9
-
-
VDDOB
VDDOB_A
-
-
AV8
-
-
VDD_ANA
VDD_ANA
-
-
AY8
-
-
I
HDINP_A
-
HSP_8
BD10
-
-
VSS
VSS
-
-
BA8
-
-
I
HDINN_A
-
HSN_8
BB8
-
-
VDDIB
VDDIB_A
-
-
AW7
-
-
I
REFCLKP
-
HSP_9
AY7
-
-
I
REFCLKN
-
HSN_9
BA7
-
-
O
REXTN
-
-
AV11
-
-
O
REXT
-
-
AW4
-
-
I
ATSTAT1N
-
R1C
AU6
-
-
I
ATSTAT0N
-
R2C
AW3
-
-
I
ATSTAT1P
-
R1T
AV6
-
-
I
ATSTAT0P
-
R2T
AV3
-
-
I
ATSCLKN
-
R3C
T6
-
-
VDD33
VDD33
-
-
AV9
-
-
I/O
ALVCTAP5
-
-
T7
-
-
VDD33
VDD33
-
-
AV2
-
-
I
ATSCLKP
-
R3T
AY2
-
-
I
BTSCLKN
-
R4C
AR6
-
-
I/O
BLVCTAP5
-
-
AW2
-
-
I
BTSCLKP
-
R4T
BC1
-
-
VSS
VSS
-
-
AT4
-
-
I
BTSTAT1N
-
R5C
BC2
-
-
VSS
VSS
-
-
BB5
-
-
I
BTSTAT0N
-
R6C
AT3
-
-
I
BTSTAT1P
-
R5T
BB6
-
-
I
BTSTAT0P
-
R6T
AU38
-
-
VDD15
VDD15
-
-
AV16
-
-
VDD15
VDD15
-
-
AR5
-
-
O
BRSTAT1N
-
R7C
BC22
-
-
VSS
VSS
-
-
BA1
-
-
O
BRSTAT0N
-
R8C
AR4
-
-
O
BRSTAT1P
-
R7T
AY1
-
-
O
BRSTAT0P
-
R8T
AP5
-
-
O
BRSCLKN
-
R9C
W6
-
-
VDD33
VDD33
-
-
AW1
-
-
O
ARSCLKN
-
R10C
W7
-
-
VDD33
VDD33
-
-
AP4
-
-
O
BRSCLKP
-
R9T
AV1
-
-
O
ARSCLKP
-
R10T
BC43
-
-
VSS
VSS
-
-
AN6
-
-
O
ARSTAT1N
-
R11C
244
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
BA5
-
-
O
ARSTAT0N
-
R12C
BC44
-
-
VSS
VSS
-
-
AN5
-
-
O
ARSTAT1P
-
R11T
BA6
-
-
O
ARSTAT0P
-
R12T
AV19
-
-
VDD15
VDD15
-
-
AV28
-
-
VDD15
VDD15
-
-
AU1
-
-
I
RESLO
-
-
AP1
-
-
I
RESHI
-
-
BD1
-
-
VSS
VSS
-
-
AR1
-
-
I
REF14
-
-
BA2
-
-
I
REF10
-
-
AB6
-
-
VDD33
VDD33
-
-
AB7
-
-
VDD33
VDD33
-
-
AM6
-
-
O
BTDAT15N
-
R13C
BD2
-
-
VSS
VSS
-
-
BA4
-
-
O
BTDAT14N
-
R14C
AM5
-
-
O
BTDAT15P
-
R13T
BA3
-
-
O
BTDAT14P
-
R14T
AM4
-
-
O
BTDAT13N
-
R15C
AV31
-
-
VDD15
VDD15
-
-
AY4
-
-
O
BTDAT12N
-
R16C
AM3
-
-
O
BTDAT13P
-
R15T
AV34
-
-
VDD15
VDD15
-
-
AY3
-
-
O
BTDAT12P
-
R16T
AL5
-
-
O
BTDAT11N
-
R17C
BD11
-
-
VSS
VSS
-
-
AW5
-
-
O
BTDAT10N
-
R18C
AL4
-
-
O
BTDAT11P
-
R17T
AW6
-
-
O
BTDAT10P
-
R18T
AF6
-
-
VDD33
VDD33
-
-
AL3
-
-
O
BTDAT9N
-
R19C
AF7
-
-
VDD33
VDD33
-
-
AV5
-
-
O
BTDAT8N
-
R20C
AL2
-
-
O
BTDAT9P
-
R19T
AV4
-
-
O
BTDAT8P
-
R20T
BD22
-
-
VSS
VSS
-
-
AK6
-
-
O
BTCTLN
-
R21C
BD33
-
-
VSS
VSS
-
-
AU5
-
-
O
BTDCLKN
-
R22C
AK5
-
-
O
BTCTLP
-
R21T
AU4
-
-
O
BTDCLKP
-
R22T
AV36
-
-
VDD15
VDD15
-
-
AK4
-
-
VDDA_SPIA
VDDA_SPIA
-
-
245
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AV37
-
-
VDD15
VDD15
-
-
AK3
-
-
VSS
VSS
-
-
AU3
-
-
O
BTDAT7N
-
R23C
AJ6
-
-
O
BTDAT6N
-
R24C
BD43
-
-
VSS
VSS
-
-
AU2
-
-
O
BTDAT7P
-
R23T
AJ5
-
-
O
BTDAT6P
-
R24T
AJ4
-
-
O
BTDAT5N
-
R25C
AH6
-
-
VDD33
VDD33
-
-
AT6
-
-
O
BTDAT4N
-
R26C
AJ3
-
-
O
BTDAT5P
-
R25T
AH7
-
-
VDD33
VDD33
-
-
AT5
-
-
O
BTDAT4P
-
R26T
AH5
-
-
O
BTDAT3N
-
R27C
AT2
-
-
O
BTDAT2N
-
R28C
BD44
-
-
VSS
VSS
-
-
AH4
-
-
O
BTDAT3P
-
R27T
AT1
-
-
O
BTDAT2P
-
R28T
AH3
-
-
O
BTDAT1N
-
R29C
AY5
-
-
VDD15
VDD15
-
-
AR3
-
-
O
BTDAT0N
-
R30C
AH2
-
-
O
BTDAT1P
-
R29T
AY6
-
-
VDD15
VDD15
-
-
AP3
-
-
O
BTDAT0P
-
R31T
AG6
-
-
I
BRDCLKN
-
R32C
AR2
-
-
I
BRDAT15N
-
R33C
AG5
-
-
I
BRDCLKP
-
R32T
AP2
-
-
I
BRDAT15P
-
R33T
AF1
-
-
I/O
BLVCTAP1
-
-
AL6
-
-
VDD33
VDD33
-
-
AN4
-
-
I
BRDAT14N
-
R34C
AL7
-
-
VDD33
VDD33
-
-
AG4
-
-
I
BRDAT13N
-
R35C
AN3
-
-
I
BRDAT14P
-
R34T
AG3
-
-
I
BRDAT13P
-
R35T
AM2
-
-
I
BRDAT12N
-
R36C
AF3
-
-
I
BRDAT11N
-
R37C
AM1
-
-
I
BRDAT12P
-
R36T
AF2
-
-
I
BRDAT11P
-
R37T
AL1
-
-
I
BRDAT10N
-
R38C
AF4
-
-
I/O
BLVCTAP2
-
-
AK1
-
-
I
BRDAT10P
-
R38T
AE6
-
-
I
BRDAT9N
-
R39C
246
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AK2
-
-
I
BRDAT8N
-
R40C
AE5
-
-
I
BRDAT9P
-
R39T
AJ2
-
-
I
BRDAT8P
-
R40T
AE4
-
-
I
BRCTLN
-
R41C
AN2
-
-
I/O
BLVCTAP3
-
-
AE3
-
-
I
BRCTLP
-
R41T
AP6
-
-
VDD33
VDD33
-
-
AJ1
-
-
I
BRDAT7N
-
R42C
AP7
-
-
VDD33
VDD33
-
-
AD6
-
-
I
BRDAT6N
-
R43C
AH1
-
-
I
BRDAT7P
-
R42T
AD5
-
-
I
BRDAT6P
-
R43T
AG2
-
-
I
BRDAT5N
-
R44C
AD4
-
-
I
BRDAT4N
-
R45C
AG1
-
-
I
BRDAT5P
-
R44T
AD3
-
-
I
BRDAT4P
-
R45T
AF5
-
-
I/O
BLVCTAP4
-
-
AC6
-
-
I
BRDAT3N
-
R46C
AE2
-
-
I
BRDAT2N
-
R47C
AC5
-
-
I
BRDAT3P
-
R46T
AE1
-
-
I
BRDAT2P
-
R47T
AC4
-
-
I
BRDAT1N
-
R48C
AD2
-
-
I
BRDAT0N
-
R49C
AC3
-
-
I
BRDAT1P
-
R48T
AD1
-
-
I
BRDAT0P
-
R49T
W1
-
-
VSS
VSS
-
-
V1
-
-
VDDA_SPIB
VDDA_SPIB
-
-
AC1
-
-
O
ATDAT15N
-
R50C
U1
-
-
VSS
VSS
-
-
AC2
-
-
O
ATDAT15P
-
R50T
AA1
-
-
O
ATDAT14N
-
R51C
AA2
-
-
O
ATDAT14P
-
R51T
AB2
-
-
O
ATDAT13N
-
R52C
AA3
-
-
O
ATDAT12N
-
R53C
AB3
-
-
O
ATDAT13P
-
R52T
AA4
-
-
O
ATDAT12P
-
R53T
Y1
-
-
O
ATDAT11N
-
R54C
V2
-
-
O
ATDAT10N
-
R55C
Y2
-
-
O
ATDAT11P
-
R54T
U2
-
-
O
ATDAT10P
-
R55T
Y3
-
-
O
ATDAT9N
-
R56C
AB5
-
-
O
ATDAT8N
-
R57C
Y4
-
-
O
ATDAT9P
-
R56T
247
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
AB4
-
-
O
ATDAT8P
-
R57T
W2
-
-
O
ATCTLN
-
R58C
AA5
-
-
O
ATDCLKN
-
R59C
W3
-
-
O
ATCTLP
-
R58T
Y5
-
-
O
ATDCLKP
-
R59T
W4
-
-
O
ATDAT7N
-
R60C
AA6
-
-
O
ATDAT6N
-
R61C
W5
-
-
O
ATDAT7P
-
R60T
Y6
-
-
O
ATDAT6P
-
R61T
T1
-
-
O
ATDAT5N
-
R62C
V3
-
-
O
ATDAT4N
-
R63C
R1
-
-
O
ATDAT5P
-
R62T
U3
-
-
O
ATDAT4P
-
R63T
T2
-
-
O
ATDAT3N
-
R64C
V4
-
-
O
ATDAT2N
-
R65C
R2
-
-
O
ATDAT3P
-
R64T
U4
-
-
O
ATDAT2P
-
R65T
T3
-
-
O
ATDAT1N
-
R66C
R4
-
-
O
ATDAT0N
-
R67C
R3
-
-
O
ATDAT1P
-
R66T
R5
-
-
O
ATDAT0P
-
R67T
T4
-
-
VSS
VSS
-
-
U5
-
-
VDDA_SPIC
VDDA_SPIC
-
-
U6
-
-
VSS
VSS
-
-
P1
-
-
I
ARDCLKN
-
R68C
V5
-
-
I
ARDAT15N
-
R69C
P2
-
-
I
ARDCLKP
-
R68T
V6
-
-
I
ARDAT15P
-
R69T
T5
-
-
I/O
ALVCTAP1
-
-
M3
-
-
I
ARDAT14N
-
R70C
P3
-
-
I
ARDAT13N
-
R71C
M4
-
-
I
ARDAT14P
-
R70T
P4
-
-
I
ARDAT13P
-
R71T
P5
-
-
I
ARDAT12N
-
R72C
N1
-
-
I
ARDAT11N
-
R73C
P6
-
-
I
ARDAT12P
-
R72T
N2
-
-
I
ARDAT11P
-
R73T
R6
-
-
I/O
ALVCTAP2
-
-
N3
-
-
I
ARDAT10N
-
R74C
N5
-
-
I
ARDAT9N
-
R75C
N4
-
-
I
ARDAT10P
-
R74T
N6
-
-
I
ARDAT9P
-
R75T
M1
-
-
I
ARDAT8N
-
R76C
248
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
L2
-
-
I
ARCTLN
-
R77C
M2
-
-
I
ARDAT8P
-
R76T
L3
-
-
I
ARCTLP
-
R77T
G1
-
-
I/O
ALVCTAP3
-
-
M6
-
-
I
ARDAT7N
-
R78C
K1
-
-
I
ARDAT6N
-
R79C
M5
-
-
I
ARDAT7P
-
R78T
K2
-
-
I
ARDAT6P
-
R79T
K3
-
-
I
ARDAT5N
-
R80C
J1
-
-
I
ARDAT4N
-
R81C
J3
-
-
I
ARDAT5P
-
R80T
J2
-
-
I
ARDAT4P
-
R81T
H3
-
-
I/O
ALVCTAP4
-
-
H1
-
-
I
ARDAT3N
-
R82C
L5
-
-
I
ARDAT2N
-
R83C
H2
-
-
I
ARDAT3P
-
R82T
L4
-
-
I
ARDAT2P
-
R83T
G2
-
-
I
ARDAT1N
-
R84C
K4
-
-
I
ARDAT0N
-
R85C
G3
-
-
I
ARDAT1P
-
R84T
J4
-
-
I
ARDAT0P
-
R85T
L6
-
-
VDDA_SPID
VDDA_SPID
-
-
K5
-
-
VSS
VSS
-
-
F1
-
-
I
TSTAT1A
-
-
L7
-
-
I
TSTAT0A
-
-
E1
-
-
I
TSCLKA
-
-
D4
-
-
VSS
VSS
-
-
H4
-
-
O
RSTAT1A
-
-
D1
-
-
O
RSTAT0A
-
-
K6
-
-
O
RSCLKA
-
-
F2
-
-
I/O
PMIA17
-
-
J5
-
-
I/O
PMIA16
-
-
C4
-
-
I/O
PMIA15
-
-
G4
-
-
I/O
PMIA14
-
-
E2
-
-
I/O
PMIA13
-
-
E5
-
-
VSS
VSS
-
-
G5
-
-
I/O
PMIA12
-
-
F3
-
-
I/O
PMIA11
-
-
G9
-
-
VSS
VSS
-
-
J6
-
-
I/O
PMIA10
-
-
F4
-
-
I/O
PMIA9
-
-
H5
-
-
I/O
PMIA8
-
-
F6
-
-
VDDH
VDDH
-
-
249
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
E3
-
-
I/O
PMIWN
-
-
D2
-
-
I/O
PMIRN
-
-
E4
-
-
I/O
PMIA7
-
-
D3
-
-
VREF
REFI_1
-
-
G13
-
-
VSS
VSS
-
-
G6
-
-
I/O
PMIA6
-
-
G15
-
-
VSS
VSS
-
-
H6
-
-
I/O
PMIA5
-
-
H7
-
-
I/O
PMIA4
-
-
C1
-
-
I/O
PMIA3
-
-
G7
-
-
VDDH
VDDH
-
-
C3
-
-
I/O
PMIA2
-
-
F5
-
-
I/O
PMIA1
-
-
E6
-
-
I/O
PMIA0
-
-
K7
-
-
VSS
VSS
-
-
C2
-
-
I
EXT_1K
-
-
G10
-
-
VDDH
VDDH
-
-
M7
-
-
VSS
VSS
-
-
P7
-
-
VSS
VSS
-
-
D7
-
-
I/O
PMID35
-
-
D5
-
-
I/O
PMID34
-
-
G12
-
-
VDDH
VDDH
-
-
C5
-
-
I/O
PMID33
-
-
D6
-
-
I/O
PMID32
-
-
G8
-
-
I/O
PMID31
-
-
F7
-
-
I/O
PMID30
-
-
C6
-
-
I/O
PMID29
-
-
E7
-
-
I/O
PMID28
-
-
G14
-
-
VDDH
VDDH
-
-
D8
-
-
I/O
PMID27
-
-
B3
-
-
I/O
PMID26
-
-
E8
-
-
I/O
PMID25
-
-
B4
-
-
I/O
PMID24
-
-
B9
-
-
I/O
PMID23
-
-
A3
-
-
I/O
PMID22
-
-
C7
-
-
I/O
PMID21
-
-
A4
-
-
I/O
PMID20
-
-
G16
-
-
VDDH
VDDH
-
-
C8
-
-
I/O
PMID19
-
-
A9
-
-
I/O
PMID18
-
-
B5
-
-
I/O
PMID17
-
-
C10
-
-
I/O
PMID16
-
-
D10
-
-
VREF
REFI_2
-
-
250
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
F8
-
-
I/O
PMIK
-
-
B10
-
-
I/O
PMIKN
-
-
D9
-
-
I/O
PMID15
-
-
A10
-
-
I/O
PMID14
-
-
E9
-
-
I/O
PMID13
-
-
B11
-
-
I/O
PMID12
-
-
C9
-
-
I/O
PMID11
-
-
C11
-
-
I/O
PMID10
-
-
J7
-
-
VDDH
VDDH
-
-
F9
-
-
I/O
PMID9
-
-
D11
-
-
I/O
PMID8
-
-
B6
-
-
I/O
PMID7
-
-
E11
-
-
I/O
PMID6
-
-
B7
-
-
I/O
PMID5
-
-
C12
-
-
I/O
PMID4
-
-
N7
-
-
VDDH
VDDH
-
-
A5
-
-
I/O
PMID3
-
-
D12
-
-
I/O
PMID2
-
-
B8
-
-
I/O
PMID1
-
-
B12
-
-
I/O
PMID0
-
-
A12
-
-
VREF
REFI_3
-
-
C13
-
-
I/O
PMIC
-
-
D13
-
-
I/O
PMICN
-
-
A7
-
-
I/O
PMIQ35
-
-
B13
-
-
I/O
PMIQ34
-
-
A8
-
-
I/O
PMIQ33
-
-
A13
-
-
I/O
PMIQ32
-
-
A6
-
-
I/O
PMIQ31
-
-
C14
-
-
I/O
PMIQ30
-
-
F11
-
-
I/O
PMIQ29
-
-
D14
-
-
I/O
PMIQ28
-
-
G11
-
-
I/O
PMIQ27
-
-
B14
-
-
I/O
PMIQ26
-
-
F10
-
-
I/O
PMIQ25
-
-
A14
-
-
I/O
PMIQ24
-
-
E10
-
-
I/O
PMIQ23
-
-
C15
-
-
I/O
PMIQ22
-
-
F12
-
-
I/O
PMIQ21
-
-
D15
-
-
I/O
PMIQ20
-
-
E12
-
-
I/O
PMIQ19
-
-
B15
-
-
I/O
PMIQ18
-
-
F13
-
-
I/O
PMIQ17
-
-
A15
-
-
I/O
PMIQ16
-
-
251
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
E13
-
-
I/O
MCREFCLK
-
-
C16
-
-
I/O
SPARE_2
-
-
F14
-
-
I/O
PMIQ15
-
-
D16
-
-
VREF
REFI_4
-
-
E14
-
-
I/O
PMIQ14
-
-
B16
-
-
I/O
PMIQ13
-
-
F15
-
-
I/O
PMIQ12
-
-
A16
-
-
VDDA_PLL
VDDA_PLL
-
-
E15
-
-
I/O
PMIQ11
-
-
C17
-
-
VSS
VSS
-
-
F16
-
-
I/O
PMIQ10
-
-
D17
-
-
I/O
PMIQ9
-
-
E16
-
-
I/O
PMIQ8
-
-
B17
-
-
I/O
PMIQ7
-
-
F17
-
-
I/O
PMIQ6
-
-
A17
-
-
I/O
PMIQ5
-
-
E17
-
-
I/O
PMIQ4
-
-
A18
-
-
I/O
PMIQ3
-
-
D18
-
-
I/O
PMIQ2
-
-
B18
-
-
I/O
PMIQ1
-
-
C18
-
-
I/O
PMIQ0
-
-
A19
-
-
VDD33
VDD33_FPGAPLL
-
-
-
-
VDD33
VDD33_FPGAPLL
-
-
IO
PT47D
PLL_CK2C/PPLL
L185C
B19
E18
1 (TC) 7
G17
1 (TC) -
VDDIO1
VDDIO1
-
-
F18
1 (TC) 7
IO
PT47C
PLL_CK2T/PPLL
L185T
C19
1 (TC) 7
AY39
-
-
IO
PT46D
-
L187C
VDD15
VDD15
-
-
E21
1 (TC) 7
IO
PT46B
-
L188C
D19
1 (TC) 7
IO
PT46C
-
L187T
F21
1 (TC) 7
IO
PT46A
-
L188T
E19
1 (TC) 7
IO
PT45D
VREF_1_07
L189C
VSS
VSS
-
-
F19
L1
1 (TC) 7
-
-
IO
PT45C
-
L189T
C20
1 (TC) 8
IO
PT44D
-
L191C
G18
1 (TC) -
VDDIO1
VDDIO1
-
-
E23
1 (TC) 8
IO
PT44B
-
L192C
D20
1 (TC) 8
IO
PT44C
-
L191T
F23
1 (TC) 8
IO
PT44A
-
L192T
E20
1 (TC) 8
IO
PT43D
-
L193C
AY40
VDD15
VDD15
-
-
E24
1 (TC) 8
-
-
IO
PT43B
-
L194C
F20
1 (TC) 8
IO
PT43C
-
L193T
252
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
F24
1 (TC) 8
IO
PT43A
-
L194T
B20
1 (TC) 8
IO
PT42D
VREF_1_08
L195C
VSS
VSS
-
-
F22
L44
1 (TC) 8
-
-
IO
PT42B
-
L196C
A20
1 (TC) 8
IO
PT42C
-
L195T
G22
1 (TC) 8
IO
PT42A
-
L196T
C21
1 (TC) 9
IO
PT41D
-
L197C
G21
1 (TC) -
VDDIO1
VDDIO1
-
-
E26
1 (TC) 9
IO
PT41B
-
L198C
D21
1 (TC) 9
IO
PT41C
-
L197T
F26
1 (TC) 9
IO
PT41A
-
L198T
B21
1 (TC) 9
IO
PT40D
-
L199C
BB3
VDD15
VDD15
-
-
E25
1 (TC) 9
IO
PT40B
-
L200C
A21
1 (TC) 9
IO
PT40C
VREF_1_09
L199T
F25
1 (TC) 9
IO
PT40A
-
L200T
D22
1 (TC) 9
M38
-
-
-
-
IO
PT39D
-
L201C
VSS
VSS
-
-
E28
1 (TC) 9
IO
PT39B
-
L202C
E22
1 (TC) 9
IO
PT39C
-
L201T
F28
1 (TC) 9
IO
PT39A
-
L202T
C22
1 (TC) 10
IO
PT38D
-
L203C
G24
1 (TC) -
VDDIO1
VDDIO1
-
-
E29
1 (TC) 10
IO
PT38B
-
L204C
B22
1 (TC) 10
IO
PT38C
VREF_1_10
L203T
F29
1 (TC) 10
IO
PT38A
-
L204T
C23
1 (TC) 10
BB4
-
-
IO
PT37D
-
L205C
VDD15
VDD15
-
-
E27
1 (TC) 10
IO
PT37B
-
L206C
D23
1 (TC) 10
IO
PT37C
-
L205T
F27
1 (TC) 10
IO
PT37A
-
L206T
B23
1 (TC) 10
IO
PT36D
-
L207C
R38
VSS
VSS
-
-
A23
1 (TC) 10
-
-
IO
PT36C
-
L207T
C24
1 (TC) 1
IO
PT35D
-
L209C
G27
1 (TC) -
VDDIO1
VDDIO1
-
-
C31
1 (TC) 1
IO
PT35B
-
L210C
D24
1 (TC) 1
IO
PT35C
-
L209T
D31
1 (TC) 1
IO
PT35A
-
L210T
B24
1 (TC) 1
IO
PT34D
VREF_1_01
L211C
BB41
VDD15
VDD15
-
-
E31
1 (TC) 1
-
-
IO
PT34B
-
L212C
A24
1 (TC) 1
IO
PT34C
-
L211T
253
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
F31
1 (TC) 1
IO
PT34A
-
L212T
C25
1 (TC) 1
IO
PT33D
-
L213C
VSS
VSS
-
-
E30
V7
1 (TC) 1
-
-
IO
PT33B
-
L214C
D25
1 (TC) 1
IO
PT33C
-
L213T
F30
1 (TC) 1
IO
PT33A
-
L214T
B25
1 (TC) 2
IO
PT32D
-
L215C
G28
1 (TC) -
VDDIO1
VDDIO1
-
-
E32
1 (TC) 2
IO
PT32B
-
L216C
A25
1 (TC) 2
IO
PT32C
VREF_1_02
L215T
F32
1 (TC) 2
IO
PT32A
-
L216T
C26
1 (TC) 2
IO
PT31D
-
L217C
BB42
VDD15
VDD15
-
-
D33
1 (TC) 2
IO
PT31B
-
L218C
D26
1 (TC) 2
IO
PT31C
-
L217T
E33
1 (TC) 2
IO
PT31A
-
L218T
B26
1 (TC) 2
V38
-
-
-
-
IO
PT30D
-
L219C
VSS
VSS
-
-
F33
1 (TC) 2
IO
PT30B
-
L220C
A26
1 (TC) 2
IO
PT30C
-
L219T
G33
1 (TC) 2
IO
PT30A
-
L220T
C27
1 (TC) 3
IO
PT29D
-
L221C
E34
1 (TC) 3
IO
PT29B
-
L222C
D27
1 (TC) 3
IO
PT29C
VREF_1_03
L221T
F34
1 (TC) 3
IO
PT29A
-
L222T
B27
1 (TC) 3
IO
PT28D
-
L223C
E35
1 (TC) 3
IO
PT28B
-
L224C
A27
1 (TC) 3
IO
PT28C
-
L223T
F35
1 (TC) 3
IO
PT28A
-
L224T
C28
1 (TC) 3
IO
PT27D
-
L225C
AA7
VSS
VSS
-
-
C35
1 (TC) 3
-
-
IO
PT27B
-
L226C
D28
1 (TC) 3
IO
PT27C
-
L225T
D35
1 (TC) 3
IO
PT27A
-
L226T
B28
1 (TC) 4
IO
PT26D
-
L227C
A37
1 (TC) 4
IO
PT26B
-
L228C
A28
1 (TC) 4
IO
PT26C
-
L227T
B37
1 (TC) 4
IO
PT26A
-
L228T
C29
1 (TC) 4
IO
PT25D
-
L229C
E36
1 (TC) 4
IO
PT25B
-
L230C
D29
1 (TC) 4
IO
PT25C
-
L229T
F36
1 (TC) 4
IO
PT25A
-
L230T
B29
1 (TC) 4
IO
PT24D
-
L231C
254
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
AA38
-
VREF Group
-
I/O
Additional
Function
Pin Description
FTE1036 Pair
VSS
VSS
-
-
C37
1 (TC) 4
IO
PT24B
-
L232C
A29
1 (TC) 4
IO
PT24C
VREF_1_04
L231T
D37
1 (TC) 4
IO
PT24A
-
L232T
A30
1 (TC) 5
IO
PT23D
PTCK1C
L233C
E37
1 (TC) 5
IO
PT23B
-
L234C
B30
1 (TC) 5
IO
PT23C
PTCK1T
L233T
F37
1 (TC) 5
IO
PT23A
-
L234T
D30
1 (TC) 5
IO
PT22D
PTCK0C
L235C
A38
1 (TC) 5
IO
PT22B
-
L236C
C30
1 (TC) 5
IO
PT22C
PTCK0T
L235T
B38
1 (TC) 5
IO
PT22A
-
L236T
A31
1 (TC) 5
IO
PT21D
VREF_1_05
L237C
C38
1 (TC) 5
IO
PT21B
-
L238C
B31
1 (TC) 5
IO
PT21C
-
L237T
D38
1 (TC) 5
IO
PT21A
-
L238T
A32
1 (TC) 6
IO
PT20D
-
L239C
E38
1 (TC) 6
IO
PT20B
-
L240C
B32
1 (TC) 6
IO
PT20C
-
L239T
F38
1 (TC) 6
IO
PT20A
-
L240T
C32
1 (TC) 6
IO
PT19D
-
L241C
E43
1 (TC) 6
IO
PT19B
-
L242C
D32
1 (TC) 6
IO
PT19C
VREF_1_06
L241T
E44
1 (TC) 6
IO
PT19A
-
L242T
A34
0 (TL) 1
A33
-
-
IO
PT18D
MPI_RTRY_N
L243C
VSS
VSS
-
-
F44
0 (TL) 1
IO
PT18B
-
L244C
B34
0 (TL) 1
IO
PT18C
MPI_ACK_N
L243T
F43
0 (TL) 1
IO
PT18A
-
L244T
B33
0 (TL) 1
IO
PT17D
-
L245C
G38
0 (TL) -
VDDIO0
VDDIO0
-
-
F41
0 (TL) 1
IO
PT17B
-
L246C
C33
0 (TL) 1
IO
PT17C
VREF_0_01
L245T
F42
0 (TL) 1
IO
PT17A
-
L246T
C34
0 (TL) 1
F40
-
-
IO
PT16D
M0
L247C
VDD15
VDD15
-
-
G39
0 (TL) 2
IO
PT16B
-
L248C
D34
0 (TL) 1
IO
PT16C
M1
L247T
G40
0 (TL) 2
IO
PT16A
-
L248T
A35
0 (TL) 2
IO
PT15D
MPI_CLK
L249C
VSS
VSS
-
-
H40
A43
0 (TL) 2
-
-
IO
PT15B
-
L250C
B35
0 (TL) 2
IO
PT15C
A21/MPI_BURST_N L249T
255
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
H39
0 (TL) 2
IO
PT15A
-
L250T
A36
0 (TL) 2
IO
PT14D
M2
L251C
P38
0 (TL) -
VDDIO0
VDDIO0
-
-
B36
0 (TL) 2
IO
PT14C
M3
L251T
C36
0 (TL) 2
G19
-
-
IO
PT13D
VREF_0_02
L253C
VDD15
VDD15
-
-
G41
0 (TL) 2
IO
PT13B
-
L254C
D36
0 (TL) 2
IO
PT13C
MPI_TEA_N
L253T
G42
0 (TL) 2
IO
PT13A
-
L254T
A39
0 (TL) 3
IO
PT12D
-
L255C
A44
VSS
VSS
-
-
A40
0 (TL) 3
-
-
IO
PT12C
-
L255T
A41
0 (TL) 3
IO
PT11D
VREF_0_03
L257C
U38
0 (TL) -
VDDIO0
VDDIO0
-
-
G43
0 (TL) 3
IO
PT11B
-
L258C
A42
0 (TL) 3
IO
PT11C
-
L257T
G44
0 (TL) 3
IO
PT11A
-
L258T
B39
0 (TL) 3
IO
PT10D
D0
L259C
VDD15
VDD15
-
-
IO
PT10C
TMS
L259T
G25
-
-
B40
0 (TL) 3
B41
0 (TL) 4
B1
-
-
IO
PT9D
A20/MPI_BDIP_N
L261C
VSS
VSS
-
-
H44
0 (TL) 4
IO
PT9B
-
L262C
B42
0 (TL) 4
IO
PT9C
A19/MPI_TSZ1
L261T
H43
0 (TL) 4
IO
PT9A
-
L262T
C39
0 (TL) 4
IO
PT8D
A18/MPI_TSZ0
L263C
C40
0 (TL) 4
IO
PT8C
D3
L263T
D39
0 (TL) 4
IO
PT7D
VREF_0_04
L265C
J42
0 (TL) 4
IO
PT7B
-
L266C
D40
0 (TL) 4
IO
PT7C
-
L265T
J41
0 (TL) 4
IO
PT7A
-
L266T
E39
0 (TL) 5
IO
PT6D
D1
L267C
F39
0 (TL) 5
IO
PT6C
D2
L267T
C41
0 (TL) 5
IO
PT5D
-
L269C
J40
0 (TL) 5
IO
PT5B
-
L270C
D41
0 (TL) 5
IO
PT5C
VREF_0_05
L269T
J39
0 (TL) 5
IO
PT5A
-
L270T
E41
0 (TL) 5
IO
PT4D
TDI
L271C
E42
0 (TL) 5
IO
PT4C
TCK
L271T
C43
0 (TL) 6
IO
PT3D
-
L273C
H42
0 (TL) 6
IO
PT3B
-
L274C
D43
0 (TL) 6
IO
PT3C
VREF_0_06
L273T
H41
0 (TL) 6
IO
PT3A
-
L274T
256
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 87. 1036 ftSBGA Pin Table (Continued)
FTE1036 VDDIO
Ball
Bank
VREF Group
I/O
Additional
Function
Pin Description
FTE1036 Pair
C44
0 (TL) 6
IO
PT2D
PLL_CK1C/PPLL
L275C
D44
0 (TL) 6
IO
PT2C
PLL_CK1T/PPLL
L275T
-
O
PCFG_MPI_IRQ
CFG_IRQ_N/MPI_I
RQ_N
-
K38
-
K39
-
-
IO
PCCLK
CCLK
-
K40
-
-
IO
PDONE
DONE
-
K41
-
-
VDD33
VDD33_FPGAPLL
-
-
Note: All differential pairs use adjacent balls.
257
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Package Information
Package Thermal Characteristics Summary
There are three thermal parameters that are in common use: ΘJA, ψJC, and ΘJC. It should be noted that all the
parameters are affected, to varying degrees, by package design (including paddle size) and choice of materials,
the amount of copper in the test board or system board, and system airflow.
ΘJA
This is the thermal resistance from junction to ambient (theta-JA, R-theta, etc.):
TJ – TA
Θ JA = ------------------
(1)
Q
where TJ is the junction temperature, TA, is the ambient air temperature, and Q is the chip power.
Experimentally, ΘJA is determined when a special thermal test die is assembled into the package of interest, and
the part is mounted on the thermal test board. The diodes on the test chip are separately calibrated in an oven. The
package/board is placed either in a JEDEC natural convection box or in the wind tunnel, the latter for forced convection measurements. A controlled amount of power (Q) is dissipated in the test chip’s heater resistor, the chip’s
temperature (TJ) is determined by the forward drop on the diodes, and the ambient temperature (TA) is noted. Note
that ΘJA is expressed in units of °C/W.
ψJC
This JEDEC designated parameter correlates the junction temperature to the case temperature. It is generally
used to infer the junction temperature while the device is operating in the system. It is not considered a true thermal
resistance and it is defined by:
ψ JC = T J – T C
------------------Q
(2)
where TC is the case temperature at top dead center, TJ is the junction temperature, and Q is the chip power. During the ΘJA measurements described above, besides the other parameters measured, an additional temperature
reading, TC, is made with a thermocouple attached at top-dead-center of the case. ψJC is also expressed in units
of °C/W.
ΘJC
This is the thermal resistance from junction to case. It is most often used when attaching a heat sink to the top of
the package. It is defined by:
TJ – TC
Θ JC = -------------------
(3)
Q
The parameters in this equation have been defined above. However, the measurements are performed with the
case of the part pressed against a water-cooled heat sink to draw most of the heat generated by the chip out the
top of the package. It is this difference in the measurement process that differentiates ΘJC from ψJC. ΘJC is a true
thermal resistance and is expressed in units of °C/W.
ΘJB
This is the thermal resistance from junction to board. It is defined by:
TJ – TB
Θ JB = ------------------
(4)
Q
where TB is the temperature of the board adjacent to a lead measured with a thermocouple. The other parameters
on the right-hand side have been defined above. This is considered a true thermal resistance, and the measure258
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
ment is made with a water-cooled heat sink pressed against the board to draw most of the heat out of the leads.
Note that ΘJB is expressed in units of °C/W and that this parameter and the way it is measured are still being discussed by the JEDEC committee.
FPSC Maximum Junction Temperature
Once the power dissipated by the FPSC has been determined, the maximum junction temperature of the FPSC
can be found. This is needed to determine if speed derating of the device from the 85 °C junction temperature used
in all of the delay tables is needed. Using the maximum ambient temperature, TAmax, and the power dissipated by
the device, Q (expressed in °C), the maximum junction temperature is approximated by:
TJmax = TAmax + (Q • ΘJA)
Package Thermal Characteristics
The thermal characteristics of the 1036-ball ftSBGA and the 1156-ball fpBGA used for the ORSPI4 are available at
the Thermal Management section of the Lattice Semiconductor web site at www.latticesemi.com.
Heat Sink Vendors for BGA Packages
The estimated worst-case power requirements for the ORSPI4 is in the 8 W to 10 W range. Consequently, for most
applications an external heat sink will be required. Table 88 lists, in alphabetical order, heat sink vendors who
advertise heat sinks aimed at the BGA market.
Table 88. Heat Sink Vendors
Vendor
Location
Phone
Aavid Thermalloy
Concord, NH
(603) 224-9988
Chip Coolers
Warwick, RI
(800) 227-0254
IERC
Burbank, CA
(818) 842-7277
R-Theta
Buffalo, NY
(800) 388-5428
Sanyo Denki
Torrance, CA
(310) 783-5400
Wakefield Thermal Solutions
Pelham, NH
(800) 325-1426
Package Parasitics
The electrical performance of an IC package, such as signal quality and noise sensitivity, is directly affected by the
package parasitics.
Figure 102. Package Parasitics
LSW
RW
LSL
Pad N
PAD N
C1
Package
Pads
LMW CM
C2
LML
Circuit
Board Pads
Pad N+1
PAD N + 1
LSW
RW
LSL
C1
259
C2
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Package Outline Drawings
Package Outline Drawings for the 1036-ball ftSBGA and the 1156-ball fpBGA used for the ORSPI4 are available in
the Package Diagrams section of the Lattice Semiconductor web site at www.latticesemi.com.
260
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Ordering Information
ORSPI4 - X XXXXXX X XX
Optional Suffix
Blank = Production
ES = Engineering Samples
Device Family
Grade
C = Commercial
I = Industrial
Speed Grade
Package
FTE1036 = 1036-ball ftSBGA (Thermally Enhanced
Fine-Pitch Thin BGA)
FE1036 = 1036-ball fpSBGA (Thermally Enhanced
Fine-Pitch BGA) - Replaced by FTE1036
F1156 = 1156-ball fpBGA (Fine-Pitch BGA)
FN1156 = Lead-Free1156-ball fpBGA (Fine-Pitch BGA)
Table 89. Device Type Options
Device
Voltage
1.5 V internal
3.3 V/2.5 V/1.8 V/ 1.5 V I/O
ORSPI4
Table 90. Commercial Ordering Information1
Device Family
ORSPI4
Speed
Grade
Part Number
ORSPI4-3FTE1036C
3
ORSPI4-2FTE1036C
2
ORSPI4-1FTE1036C
1
Package Type
Ball Count
Grade
C
ftSBGA
1036
C
C
2
ORSPI4-3FE1036C
3
ORSPI4-2FE1036C2
2
2
ORSPI4-1FE1036C
1
C
ORSPI4-3F1156C
3
C
ORSPI4-2F1156C
2
ORSPI4-1F1156C
1
C
fpSBGA
fpBGA
1036
1156
C
C
C
Table 91. Industrial Ordering Information1
Device Family
ORSPI4
Speed
Grade
Part Number
ORSPI4-2FTE1036I
2
ORSPI4-1FTE1036I
1
2
ORSPI4-2FE1036I
2
ORSPI4-1FE1036I2
1
ORSPI4-2F1156I
2
ORSPI4-1F1156I
1
Package Type
Ball Count
ftSBGA
1036
fpSBGA
1036
fpBGA
1156
Package Type
Ball Count
Grade
I
I
I
I
I
I
Table 92. Pb-free Commercial Ordering Information1
Device Family
ORSPI4
Part Number
Speed
Grade
ORSPI4-3FN1156C
3
ORSPI4-2FN1156C
2
ORSPI4-1FN1156C
1
261
Grade
C
Pb-free fpBGA
1156
C
C
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Table 93. Pb-free Industrial Ordering Information1
Device Family
ORSPI4
Speed
Grade
Part Number
ORSPI4-2FN1156I
2
ORSPI4-1FN1156I
1
Package Type
Ball Count
Pb-free fpBGA
1156
Grade
I
I
1. For all but the slowest commercial speed grade, the speed grades on these devices are dual marked. For example, the commercial speed grade -3XXXXXC is also marked with the industrial grade -2XXXXXI. The commercial grade is always one speed
grade faster than the associated dual mark industrial grade. The slowest commercial speed grade is marked as commercial
grade only.
2. Convert to FTE package per PCN#16A-07.
Revision History
Date
Version
–
–
July 2004
02.0
Change Summary
Previous Lattice releases.
Phase-Locked Loops description has been updated.
ORSPI Transmit FPGA/Embedded Core Interface description has been updated.
SPIA Core Transmit FPGA Interface in 32-Bit Mode.
SPIA Core Transmit FPGA Interface in 64-Bit Mode, and Table 4. SPIA Core Transmit
FPGA Interface in 128-Bit Mode have been updated.
Link Disable section has been updated.
TX DPRAM section has been updated.
Port Credit Field Update Flow Chart has been added and the description has been
updated.
Calendar Programming section has been updated to "After programming the calendar
memory, the TX_CAL_MEM_SEL bit is set to '0'."
SPIA Core Receive FPGA Interface in 32-Bit Mode has been updated.
RDI Block description has been updated.
Far End Loopback Setup section has been added.
ORSPI4 QDRII Memory Controller Block Diagram has been updated.
FPGA/Embedded Core Signals has been updated.
ORSPI4 Memory Controller Interface to FPGA - Write Timing Diagram has been updated.
ORSPI4 Memory Controller Interface to QDRII: 4-Word Burst Mode has been updated.
ORSPI4 Memory Controller Interface to FPGA - Read Timing Diagram has been updated.
Memory Controller Instruction Latency section has been updated.
Memory Map has been updated.
ORSPI4 Post configuration Standby Current has been added.
ORSPI4 SERDES Worst Case Power Table has been updated with footnote 2.
Supported Data Rates has been updated.
SPI4.2 Data Interface has been added."
Timing Reference Points with Respect to Clock Edge has been updated.
Data Path Interface Timing for Static Alignment has been updated.
Status Path Interface OIF-SPI4-02.2 Specification Timing (Reference) has been updated.
Status Path Interface ORSPI4 Timing in Centered (OIF) Mode has been updated.
Status Channel Reference Points with Respect to Clock Edge has been updated.
Status Path Interface ORSPI4 Timing in Legacy Mode has been updated.
Channel Output Jitter (3.125 Gbits/s) has been updated.
Channel Output Jitter (2.5 Gbits/s) has been updated."
Memory Controller Input/Output Timing Specification has been added.
Memory Controller Output Timing Specification has been added.
Memory Controller Input Timing Specification has been added.
262
Lattice Semiconductor
ORCA ORSPI4 Data Sheet
Date
Version
Change Summary
October 2004
03.0
Datasheet is now Final Status for production release of the device.
Clock Rates under High Performance Memory Controller for Interface to External Buffer
Memory has been updated to 175MHz
DDR performance has been updated to 175MHz in the introduction section.
FPGA Logic Overview section has been updated.
Recommended Operating Conditions has been updated.
ORSPI4 Post-Configuration Stabdby CurrentTable has been updated.
ORSPI4 Combined SPIA and SPIB Worst Case Power Table has been updated.
ORSPI4 QDR Memory Controller Worst Case Power Table has been updated.
ORSPI4 SERDES Worst Case Power Table has been updated with footnote 2.
Supported Data Rates Table has been updated.
System Timing Reference Points has been updated.
SPI4.2 Timing Points with Respect to Clock Edge has been added.
SPI4.2 Data Interface Table has been updated.
SPI4.2 Receive Timing Points with Respect to Clock Edge has been added."
SPI4.2 Receive Data Interface Timing has been updated.
Data Path Interface Timing for Static Alignment has been updated.
Data Path Parameters for Dynamic Alignment has been updated.
Status Channel Reference Points with Respect to Clock Edge (LVDS and LVTTL I/Os)
has been updated.
Status Path Interface ORSPI4 Timing in Centered (OIF) Mode
February 2005
04.0
Status Channel Reference Points with Respect to Clock Edge (Edge Aligned Legacy
Mode) has been updated.
Status Path Interface ORSPI4 Timing in Legacy Mode has been updated.
Channel Output Jiffer (3.125 Gbits/s) has been updated.
Channel Output Jitter (2.5 Gbits/s) has been updated.
HSTL Class I and II section has been updated.
HSTL Class II DC Operating Specifications has been updated.
Supported Data Rtes (36-Bit QDR-II, 32 bit Considered Data) Table has been updated.
Memory Controller Output Timing Specifications has been updated.
Memory Controller Input Timing Specifications have been updated.
Memory Controller Input Timing Specifications have been updated.
Recommended Power Supply Connections section has been updated.
Recommended Power Supply Filtering Scheme section has been updated.
Commercial Ordering Information Table and Industrial Ordering Information Table have
been updated for production release of the ORSPI4.
April 2005
05.0
Released 1156-fpBGA Pb-free devices.
October 2007
06.0
Added 1036-ball ftSBGA information per PCN#16A-07 (package conversion from 1036fpSBGA to 1036-ftSBGA).
263