PolarFire FPGA and PolarFire SoC FPGA PCI Express User Guide VC
PolarFire FPGA and PolarFire SoC FPGA PCI Express User Guide VC
The PCIESS supports AMBA AXI4 master/slave user interface functionality between the AXI4 and PCIe systems.
Electrical Intf.
Word Alignmt P Flow Ctrl (InitFC) AXI Master/
To/From Ack/Nak, Seq # AXI4 Slave User
Clk Comp I Virtual Channel (1)
PCIE Link LCRC and Interface
Channel Alignmt P Extended CRC (ECRC)
Ordered Set Enc/dec Retry Buffer DMA Controller
E
LTSSM Flow Ctrl (UpdateFC)
Data Scramb/descram
Config Registers
1 Each device supports two PCIESS blocks, which shares four lanes within a transceiver block. This
permits two x1 PCIESS or two x2 PCIESS that can run simultaneously, or one PCIESS that can run
as x4 and the other PCIESS is left unused.
1. Functional Descriptions................................................................................................................................................ 5
1.1. Physical Layer Interface.....................................................................................................................................5
1.2. Data-link and Transaction Layers.....................................................................................................................8
1.3. Bridge Layer......................................................................................................................................................11
1.4. AXI4 Layer......................................................................................................................................................... 21
1.5. PCIESS Configuration Interface...................................................................................................................... 23
1.6. PCIESS Port List................................................................................................................................................ 23
2. PCIe MSS.......................................................................................................................................................................29
3. Implementation........................................................................................................................................................... 33
3.1. Libero Configurators........................................................................................................................................34
3.2. PCIe Configurator.............................................................................................................................................34
3.3. Design Constraints...........................................................................................................................................44
3.4. PCIe Simulation................................................................................................................................................ 45
3.5. PCIe Subsystem Performance........................................................................................................................ 47
3.6. Initialization...................................................................................................................................................... 49
4. Configuration Registers.............................................................................................................................................. 50
8. Revision History........................................................................................................................................................... 57
Microchip Information....................................................................................................................................................... 60
The Microchip Website............................................................................................................................................... 60
Product Change Notification Service........................................................................................................................ 60
Customer Support.......................................................................................................................................................60
Microchip Devices Code Protection Feature............................................................................................................ 60
Legal Notice..................................................................................................................................................................61
Trademarks.................................................................................................................................................................. 61
Quality Management System.....................................................................................................................................62
Worldwide Sales and Service..................................................................................................................................... 63
Physical
PCIe DL and TL Bridge Layer AXI Layer
Layer
Address
Translation AXI4 Master FPGA Fabric
PCIe
XCVR_TXP TX/RX
XCVR_TXN
Bridge Interconnect
Transceiver
PIPE
XCVR_RXP
PCIe Registers
XCVR_RXN
PCIe
Misc
DMA Engine 0
APB
FPGA Fabric
DMA Engine 1 APB Master
FPGA Fabric
DRI DRI Master
The data rate can be modulated from 0% to 0.5% of the nominal data rate frequency at a
modulation rate ranging from 30 to 33 KHz. Along with the ±300 ppm tolerance limit, both ports
require the same bit-rate clock when the data is modulated using spread-spectrum clocking (SSC).
The PolarFire family of devices support the following clocking topologies defined by the PCIe
specifications: common Refclk and separate Refclk.
• The Common Refclk is the most widely supported clocking method in open systems where
the root port or root complex provides a clock to the endpoint. An advantage of this clocking
architecture is that it supports SSC, which reduces electromagnetic interference (EMI).
• The Separate Refclk uses two independent clock sources: one each for the root and the endpoint.
The clock sources must maintain ± 300 ppm frequency accuracy and cannot use SSC.
Important: PCIe Link Training and Status State Machine (LTSSM) hardware blocks
of PolarFire transceiver do not support the L2/P2 power management link state.
The L2/P2 power management link state does not achieve further operational
power-savings for the PolarFire device.
To achieve further operational power savings, on top of the already power-optimized PolarFire
device architecture, the FPGA designer must employ power management techniques directly to the
FPGA fabric design.
• Software-driven L2/P2 entry commands issued by the PolarFire PCIESS Root Port to the
downstream endpoints are not supported to the down-stream end-points. As a Root Port, this
causes the link to be completely disrupted and only recoverable by re-initializing the link with
side-band PERSTn (fundamental reset) or a power cycle.
• PolarFire PCIESS endpoint must not be commanded by the host to enter L2/P2 link state. As
an endpoint, the link might be disruptive and only recoverable by re-initializing the link with
side-band PERSTn (fundamental reset) or a power cycle.
Important: The following are the debug recommendations when LTSSM does not
reach L0.
• Power OFF the host PC while inserting the PCIe Edge connector. If it is not
powered OFF, the PCIe device detection and the selection of Gen1 or Gen2
mode may fail. The device detection and selection depend on the host PC PCIe
configuration. When the host PC is powered ON, check if the PCIe is detected
in the device manager of the host PC. For more information about Board to the
host PC PCIe slot connection, see PolarFire FPGA PCIe EndPoint DDR3L DDR4
Memory Controller Data Plane.
• Using SmartDebug, you can check LTSSM state status. For more information,
see SmartDebug User Guide.
• A third-party logic analyzer for PCI Express records the traffic on the physical
link and decodes traffic. A third party logic analyzer can show the two way
traffic at different levels for different requirements. For high-level diagnostics,
the analyzer shows the LTSSM flows for devices on both side of the link side-
by-side. This display can help you see the link training handshake behavior and
identify where the traffic is stuck. You can also verify the contents of packets
displayed on traffic analyzer.
replay buffer stores the read data payload from the AXI4 master and write data payload from the
AXI4 slave.
Transaction Layer – The transaction layer is responsible for the transfer of transaction layer
packets (TLP). The transaction layer disassembles the transaction and transfers data to the
application layer in a form that it can recognize. The transaction layer generates a TLP from
information sent by the application layer. This TLP includes a header and can also include a data
payload. The application communicates to the PCIe link using AXI4 master and slave interface
through bridge layer.
TL DL
PCIe Write
Req
AXI Read and PCIE to AXI
Read AXI S Rx Buffer
Buffer
Response PCIe Read
Response
Fabric
AXI M AXI Write
System
Memory
In SG transfer mode, the DMA source and/or destination start address is a pointer to a chained list
of page descriptors. Each descriptor contains the address and size of a data block (page), and a
pointer to the next descriptor block to enable circular buffers.
System Memory
Page Address
Page Size
DMA Start Address (bytes) Page 1
Next Descriptor
Pointer
Page Address
Page Size Page 2
(bytes)
Next Descriptor
Pointer
Scatter-Gather DMA
PCIe Link or
PCIe Link AXI Master
Page 1 Page 1
Descriptor 1
Descriptor 2
Page 2 Page 2
Descriptor 3
Descriptor 4
Page 3 Page 3
Page 4 Page 4
Note: For DMA0, addresses and length must be multiples of 4 bytes. Source and destination start
addresses must be 32 byte aligned. For example, if the start address is 0xXX14 and the destination
address can be 0xXX14, 0xXX34, 0xXX54 and so on.
SGDMA Transfer in DMA1
Source and destination addresses are set by two independent Scatter-Gather descriptors all DMA
destination is always PCIe and source is AXI IF.
Scatter-Gather DMA
Page 1 Page 1
Descriptor 1 Descriptor 1
Descriptor 2 Descriptor 2
Page 2 Page 2
Descriptor 3 Descriptor 3
Descriptor 4 Descriptor 4
Page 3 Page 3
Page 4 Page 4
Note: For DMA1, addresses and length must be multiple of 32 bytes. Source and destination start
addresses must be 32 byte aligned.
...........continued
Name Byte Offset R/W Description
DESC_CONTROL 0x04 - 0x07 RO DESC_CONTROL enables dynamic control of the SGDMA transfer.
Bit [0]: Defines whether the DMA engine provides a status report
by writing to DESC_STATUS when the current SGDMA descriptor
has been processed.
Bits [3:1]: Reserved
Bits [7:4]: Defines when an interrupt must be issued.
Bit 4: Indicates an IRQ is issued when this SGDMA descriptor has
been processed.
Bit 5: Indicates an IRQ is issued if an error occurs.
Bit 6: Indicates an IRQ is issued if the source of the transfer
reports an EOP condition.
Bit 7: Reserved
Bits [31:8]: Provides the page size in bytes, from
1 to 16 M bytes.
DESC_NEXT_ADDR[63:32] 0x0C - 0x0F RO Indicates next descriptor address. This field must be aligned on a
32-byte boundary.
DESC_NEXT_ADDR[31:5] 0x08 - 0x0B RO Indicates next descriptor address.
DESC_NEXT_RDY[4] Indicates if the next SGDMA Descriptor is ready and fetch-able.
DESC_SE_COND[3:0] Defines the Start and End conditions for SGDMA descriptor
processing.
Bit 0: Indicates end the DMA transfer after this SGDMA descriptor
has been processed (equivalent to an End Of Chain).
Bit 1: Indicates to abort this SGDMA descriptor processing if an
error occurs.
Bit 2: Reserved
Bit 3: Indicates to start this SGDMA descriptor processing when
the source of the transfer reports a SOP reception.
DESC_SRC_ADDR[31:0] 0x10 - 0x13 RO Indicates the source address of the descriptors. It must be 32 byte
aligned.
DESC_SRC_ADDR[63:32] 0x14 - 0x17 RO
DESC_DEST_ADDR[31:0] 0x18 - 0x1B RO Indicates the destination address of the descriptors. It must be
32 byte aligned.
DESC_DEST_ADDR[63:32] 0x1C - 0x1F RO
Figure 1-7. PCIe to AXI4 Master Address Translation Endpoint Mode for 32-Bit BAR
BAR0 ATR0
BAR1 ATR1
Space0
BAR2 ATR2
Space3
Space1
BAR3 ATR3
Space2
Space4
BAR5 ATR5
Figure 1-8. PCIe to AXI4 Master Address Translation Endpoint Mode for 64-Bit BAR
The PCIESS Configurator in Libero SoC software provides a GUI to configure the BAR settings for an
endpoint application.
The following figure shows an example of configuring Master settings to map the BAR0 transactions
to PCIe AXI master IF transactions for AXI address 0xBB000000.
If BAR0 receives write/read request with offset 1010, then ATR0 translates this address to
0xBB001010.
Figure 1-10. PCIe to AXI4 Master Address Translation Endpoint Mode Example
PCI Express Address Space AXI4 Master Address Space
0xAAAAAAAA00000000 0x00000 0xBB000000
0xAAAAAAAA00001010 0xBB001010
Figure 1-11. PCIe to AXI4 Master Address Translation Root Port Mode
Space #0 ATR0
Space #4
Space #3
Space #2
Space #0
Space #3
Space #4
Space #1
The following figure shows an example of configuring Master settings to map the PCIe RP address
space to PCIe AXI master IF address space for AXI address 0xBB000000.
When PCIe receives write/read request at address 0x00001010, this address is mapped to ATR0,
which removes the upper 44 bits (depending on table size) and adds the translation address
0xBB000000 to offset 0x1010.
Figure 1-13. PCIe to AXI4 Master Address Translation Root Port Mode Example
PCI Express Address Space AXI4 Master Address Space
0x00000000 0x00000 0xBB000000
0x00001010 0xBB001010
SLV0 - Table #1
ATR0 Space #0
The following figure shows an example of configuring Slave settings to map AXI IF slave requests to
PCIE requests for AXI address 0xBB000000 and PCIe address 0xAAAAAAAA00000000.
When PCIe receives write/read request at address 0xBB001010, this address is mapped to Table0,
which removes the upper 12 bits (depending on table size) and adds the translation address
0xAAAAAAAA0000000 to offset 0x1010.
1.4.4.1 Conversion from PCIe Write to AXI Write Transactions (Ask a Question)
A single PCIe write transaction is converted into multiple AXI write transactions at the fabric interface
whenever the AXI write address space crosses the negotiated maximum payload size boundary.
For example, the negotiated maximum payload size is 256 Bytes, then the address boundaries are
0x000, 0x100, 0x200, 0x300, …, 0xE00, 0xF00. In this case, a PCIe write transaction writes a TLP with
payload of 24 Double-Words, that is, 24 × 4 = 96 Bytes. The write transaction targets the contiguous
AXI write addresses starting from 0x0005AAF0. With a payload size of 96 Bytes, the ending write
address is 0x0005AAF0 + 0x50 = 0x0005AB50, which crosses the 256 Byte boundary. The bridge
breaks it into two AXI write transactions—AXI write transaction starting at 0x0005AAF0 with 16 Bytes
and AXI write transaction starting at 0x0005AB00 with the remaining 80 Bytes.
1.4.4.2 Conversion from PCIe Read to AXI Read Transactions (Ask a Question)
A single PCIe read transaction is converted into multiple AXI read transactions when the bridge
complies with the following two constraints:
• When the PCIe read transaction targets AXI address space that crosses the negotiated maximum
payload boundary, the fabric logic may still return with one single AXI burst transaction. In this
case, the PCIe bridge breaks it into multiple separate PCIe read completions with AXI read data
broken at the negotiated maximum payload boundary in AXI address space.
Read requests, which cross the address boundaries at integer multiples of RCB bytes may be
completed using more than one completion, but the data must not be fragmented except along
the following:
• The first completion starts with the address specified in the request, and ends at one of the
following:
– The address specified in the request plus the length specified by the request, that is, the
entire request.
– An address boundary between the start and end of the request at an integer multiple of RCB
bytes.
• The final completion ends with the address specified in the request plus the length specified by
the request.
• All completions between, but no including, the first and final completions will be an integer
multiple of RCB bytes in length.
Note: For a root complex, RCB can be configured to 64 Bytes or 128 Bytes using PCIE_PEX_SPC[15]
register bit. For an Endpoint, RCB is always 128 bytes.
The following are the examples of AXI split transactions:
• Assume the negotiated maximum payload size is 256 Bytes. Memory read request with address
of 0x10000 and length of 192 bytes can be completed by a root complex with a RCB value of 64
Bytes with one of the following combination of completions (bytes):
– 192
– 128, 64
– 64, 128
– 64, 64, 64
• Assume the negotiated maximum payload size is 256 Bytes. Memory read request with address
of 0x10200h and length of 256 bytes can be completed by an Endpoint in one of the following
combination of completions (bytes):
– 256
– 96, 160
– 96, 128, 32
– 224, 32
...........continued
Port Name Direction Description
PCIESS_AXI_#_M_ARADDR[31:0] Output Read address. The address of the first transfer in a read burst
transaction.
PCIESS_AXI_#_M_ARBURST[1:0] Output Read burst type. The burst type and the size details determine how
the address for each transfer within the burst is calculated.
PCIESS_AXI_#_M_ARID[3:0] Output Read address ID. Identification tag for the read address group of
signals.
PCIESS_AXI_#_M_ARLEN[7:0] Output Burst length. Indicates the exact number of transfers in a burst.
PCIESS_AXI_#_M_ARREADY Input Read address ready. Indicates that the slave is ready to accept an
address and associated control signals.
PCIESS_AXI_#_M_ARSIZE[1:0] Output Burst size. Indicates the size of each transfer in the burst.
PCIESS_AXI_#_M_ARVALID Output Read address valid. Indicates that the channel is signaling valid read
address and control information.
PCIESS_AXI_#_M_AWADDR[31:0] Output Write address. The address of the first transfer in a write burst
transaction.
PCIESS_AXI_#_M_AWBURST[1:0] Output Write burst type. The burst type and the size of information determine
how the address for each transfer within the burst is calculated.
PCIESS_AXI_#_M_AWID[3:0] Output Write address ID. Identification tag for the write address group of
signals.
PCIESS_AXI_#_M_AWLEN[7:0] Output Burst length. Indicates the exact number of transfers in a burst, which
determines the number of data transfers associated with the address.
PCIESS_AXI_#_M_AWREADY Input Write address ready. Indicates that the slave is ready to accept an
address and associated control signals.
PCIESS_AXI_#_M_AWSIZE Output Burst size. Indicates the size of each transfer in the burst.
PCIESS_AXI_#_M_AWVALID Output Write address valid. Indicates that the channel is signaling valid write
address and control information.
PCIESS_AXI_#_M_BID[3:0] Input Response ID tag. Identification tag for the write response.
PCIESS_AXI_#_M_BREADY Output Response ready. Indicates that the master is ready to accept a write
response.
PCIESS_AXI_#_M_BRESP[1:0] Input Write response. Indicates the status of the write transaction.
when it is asserted to 2'b10 (SLVERR/DECERR), unsupported request to
PCIe is reported.
PCIESS_AXI_#_M_BVALID Input Write response valid. Indicates that the channel is signaling a valid
write response.
PCIESS_AXI_#_M_RDATA[63:0] Input Read data.
PCIESS_AXI_#_M_RID[3:0] Input Read ID tag. Identification tag for the read data group of signals
generated by the slave.
PCIESS_AXI_#_M_RLAST Input Read last. Indicates the last transfer in a read burst.
PCIESS_AXI_#_M_RREADY Output Read ready. Indicates that the master can accept the read data and
associated control signals, along with response information.
PCIESS_AXI_#_M_RRESP[1:0] Input Read response. Indicates the status of the read transfer.
• When it is asserted to 2'b10(SLVERR), completion with
unsupported request status is returned.
• When it is asserted to 2'b11(DECERR), completion with Completion
Abort status is returned.
PCIESS_AXI_#_M_RVALID Input Read valid. Indicates that the channel is signaling the required read
data.
PCIESS_AXI_#_M_WDATA[63:0] Output Write data.
PCIESS_AXI_#_M_WLAST Output Write last. Indicates the last transfer in a write burst.
PCIESS_AXI_#_M_WREADY Input Write ready. Indicates that the slave can accept the write data.
PCIESS_AXI_#_M_WSTRB[7:0] Output Write strobes. Indicates the byte lanes that hold valid data. There is
one write strobe bit for every eight bits of the write data bus.
...........continued
Port Name Direction Description
PCIESS_AXI_#_M_WVALID Output Write valid. Indicates that valid write data and strobes are available.
Slave
PCIESS_AXI_#_S_ARADDR[31:0] Input Read address. The address of the first transfer in a read burst
transaction.
PCIESS_AXI_#_S_ARBURST[1:0] Input Burst type. The burst type and the size of information determine how
the address for each transfer within the burst is calculated.
PCIESS_AXI_#_S_ARID[3:0] Input Read address ID. Identification tag for the read address group of
signals.
PCIESS_AXI_#_S_ARLEN[7:0] Input Burst length. Indicates the exact number of transfers in a burst.
PCIESS_AXI_#_S_ARREADY Output Write address ready. Indicates that the slave is ready to accept an
address and the associated control signals.
PCIESS_AXI_#_S_ARSIZE[1:0] Input Burst size. Indicates the size of each transfer in the burst.
PCIESS_AXI_#_S_ARVALID Input Read address valid. Indicates that the channel is signaling valid read
address and control information.
PCIESS_AXI_#_S_AWADDR[31:0] Input Write address. Address of the first transfer in a write burst
transaction.
PCIESS_AXI_#_S_AWBURST[1:0] Input Burst type. The burst type and the size information determine how
the address for each transfer within the burst is calculated.
PCIESS_AXI_#_S_AWID[3:0] Input Write address ID. Identification tag for the write address group of
signals.
PCIESS_AXI_#_S_AWLEN[7:0] Input Burst length. Indicates the exact number of transfers in a burst, which
determines the number of data transfers associated with the address.
PCIESS_AXI_#_S_AWREADY Output Write address ready. Indicates that the slave is ready to accept an
address and associated control signals.
PCIESS_AXI_#_S_AWSIZE[1:0] Input Burst size. Indicates the size of each transfer in the burst.
PCIESS_AXI_#_S_AWVALID Input Write address valid. Indicates that the channel is signaling valid write
address and control information.
PCIESS_AXI_#_S_BID[3:0] Output Response ID tag. Identification tag for the write response.
PCIESS_AXI_#_S_BREADY Input Response ready. Indicates that the master can accept a write
response.
PCIESS_AXI_#_S_BRESP[1:0] Output Write response. Indicates the status of the write transaction.
It is asserted to 2'b10(SLVERR), when:
• an AXI Write Completion Timeout (128 ms in hardware and 128 µs
in simulation) cannot be transferred to the PCIe link due to an AXI
write transaction, because the link is down or in low-power mode.
• ECRC error occurs in TLP/Poisoned TLP
It is asserted to 2'b11(DECERR) when no address translation table
is matched (Unsupported Address).
PCIESS_AXI_#_S_BVALID Output Write response valid. Indicates that the channel is signaling a valid
write response.
PCIESS_AXI_#_S_RDATA[63:0] Output Read data.
PCIESS_AXI_#_S_RID[3:0] Output Read ID tag. Identification tag for the read data group of signals
generated by the slave.
PCIESS_AXI_#_S_RLAST Output Read last. Indicates the last transfer in a read burst.
PCIESS_AXI_#_S_RREADY Input Read ready. Indicates that the master can accept the read data and
response information.
...........continued
Port Name Direction Description
PCIESS_AXI_#_S_RRESP[1:0] Output Read response. Indicates the status of the read transfer.
It is asserted to 2'b10(SLVERR), when:
• PCIe Completion TLP with Unsupported Request (UR) Status
• ECRC error/Poisoned TLP occurs.
It is asserted to 2'b11(DECERR), when:
– no address translation table is matched (Unsupported
Address)
– PCIe Completion TLP with Completer Abort (CA) status.
PCIESS_AXI_#_S_RVALID Output Read valid. Indicates that the channel is signaling the required read
data.
PCIESS_AXI_#_S_WDATA[63:0] Input Write data.
PCIESS_AXI_#_S_WLAST Input Write last. Indicates the last transfer in a write burst.
PCIESS_AXI_#_S_WREADY Output Write ready. Indicates that the slave can accept the write data.
PCIESS_AXI_#_S_WSTRB[7:0] Input Write strobes. Indicates the byte lanes that hold valid data. There is
one write strobe bit for each eight bits of the write data bus.
PCIESS_AXI_#_S_WVALID Input Write valid. Indicates that valid write data and strobes are available.
PCIe
PCIE_#_M_RDERR Input Tie to 0
PCIE_#_M_WDERR Output Not connected
PCIE_#_S_RDERR Output Not connected
PCIE_#_S_WDERR Input Tie to 0
PCIE_#_HOT_RST_EXIT Output Hot reset exit. Asserted for one clock cycle when the LTSSM exits hot
reset state. Prompts the application layer to perform a global reset.
PCIE_#_DLUP_EXIT Output DL-up exit. Indicates transition from DL_UP to DL_DOWN.
• dlup_exit = 1'b0, data link layer is down
• dlup_exit = 1'b1, data link layer is up
only valid when LTSSM is in L0 state
PCIE_#_INTERUPT[7:0] Input Local interrupt input ports. The fabric logic can drive up to eight
interrupt sources by generating a pulse (high) on the ports and the
clock pluses are asserted. [7:0] can be used for MSI. [0] is also
available for INTx. Used only for endpoints. PCIESS uses TL_CLK to
monitor this signal.
MSI offsets are [negotiated interrupt-1:negotiated interrupt-8]
PCIE_#_INTERUPT_OUT Output Local interrupt output port. Indicates that one of the possible
interrupt sources was detected and the user can read the
interrupt through the DRI. It is a level sensitive signal whenever
an interrupt described in ISTATUS_LOCAL, SEC_ERROR_INT register,
DED_ERROR_INT register, and PCIE_EVENT_INT register is active, the
PCIE_#_INTERUPT_OUT signal gets asserted and remains high. It is low
when the corresponding interrupts in the registers are cleared.
...........continued
Port Name Direction Description
PCIE_#_LTSSM[4:0] Output LTSSM state encoding:
0x0: LTSSM_DET_QUIET
0x1: LTSSM_DET_ACT
0x2: LTSSM_POL_ACT
0x3: LTSSM_POL_COMP
0x4: LTSSM_POL_CFG
0x5: LTSSM_CFG_LWSTR
0x6: LTSSM_CFG_LWACC
0x7: LTSSM_CFG_LWAIT
0x8: LTSSM_CFG_LNACC
0x9: LTSSM_CFG_CPLT
0xa: LTSSM_CFG_IDLE
0xb: LTSSM_RCV_RLOCK
0xc: LTSSM_RCV_EQL
0xd: LTSSM_RCV_SPEED
0xe: LTSSM_RCV_RCFG
0xf: LTSSM_RCV_IDLE
0x10: LTSSM_L0
0x11: LTSSM_L0S
0x12: LTSSM_L1_ENTRY
0x13: LTSSM_L1_IDLE
0x14: Reserved
0x15: Reserved
0x16: LTSSM_DISABLED
0x17: LTSSM_LOOPBACK_ENTRY
0x18: LTSSM_LOOPBACK_ACTIVE
0x19: LTSSM_LOOPBACK_EXIT
0x1a: LTSSM_HOTRESET
Transceiver
CLKS_FROM_TXPLL_TO_PCIE_# Input PCIE_#_TX_BIT_CLK_#: This port must be driven by the BIT_CLK output
of the Tx PLL. Gen1 2.5 G, Gen2 5 G, and mix of Gen 1 and Gen 2 is 2.5
G.
PCIE_#_TX_PLL_REF_CLK_#: Reference clock from TX_PLL.
PCIE_#_TX_PLL_LOCK_#: Lock status input to PCIESS. Connects to the
lock output of the TX_PLL.
PCIESS_LANE#_CDR_REF_CLK_# Input Reference clock to lane CDR. Connects to the REF_CLK input of the
TX_PLL.
PCIESS_LANE_TXDn_P Output Transceiver differential output transmit data. n = 0, 1, 2, 3.
PCIESS_LANE_TXDn_N
...........continued
Port Name Direction Description
PCIESS_LANE_RXDn_P Output Transceiver differential input receive data. n = 0, 1, 2, 3.
PCIESS_LANE_RXDn_N
Figure 2-1. Top-Level Block Diagram of the PCIe Root Port Design
GPIO_2_26
GPIO_2_27
GPIO_2_28
SW2 GPIO_2_INT[...
GPIO_2_INT[... GPIO_2_[16:19]
SW3 LED[0:3]
E51_IRQ
MSS_INT_F2M[... MSS_INT_F2M[...
SW1
U54_1_IRQ
MSS_INT_F2M[...
U54_2_IRQ
IHC_SUBSYSTEM MSS_INT_F2M[...
U54_3_IRQ
MSS_INT_F2M[...
MSS_CAN_0
MSS_INT_F2M[... U54_4_IRQ
MSS_GPIO2_[0:15] MSS_INT_F2M[...
MSS_INT_F2M[... MSS_I2C_0
MSS_MMUART_[0:4]
MSS_INT_F2M[...
MSS_QSPI
MSS_INT_F2M[... MSS_IO_CAN_1
MSS_IO_DDR
MSS_INT_F2M[... MSS_IO_eMMC_SD
MSS_IO_I2C_1
MSS_RESET_N... MSS_IO_MAC0
SW4
MSS_IO_MAC1
GPIO_OUT[0:3]
CoreGPIO LED[0:3]
MSS_IO_SPI_1
MSS_IO_USB
MSS
COREUART_RX
APB_MASTER_H...
FIC_3 RX
FIC_0 COREUART_RX
APB_ARBITER CoreUART TX COREUART_TX
APB_MASTER_L...
MSS_INT[1]
FIC_1
APBmslave2
MSS_INT[2]
FIC3_INITIATOR APBmslave5
APBmslave16
RECONFIGURATION_... Q0_LANE[0:3]...
AXI_1_MASTER
PCIE PCIE_ROOTPOR...
AXI4mslave0
FIC_0
FIC0_INITIATOR AXI4mslave1
MSS_LSRAM
AXI4MasterDM...
AXI4mslave2 DMA_INITIATOR AXI4mslave0
DMA_CONTROLLER
INTERRUPT[0]
The following figure shows the PCIe IP configurator settings for PCIe Root Port in PolarFire SoC FPGA.
The following figure shows the Identification tab in the PCI Express configurator.
The following figure shows the Power Management tab in the PCI Express configurator.
The following figure shows the Interrupts and Auxiliary Settings tab in the PCI Express configurator.
The following figure shows the Master Settings tab in the PCI Express configurator.
The following figure shows the Slave Settings tab in the PCI Express configurator.
References
• For information about DRI, see PolarFire Family DRI User Guide.
• For information about PolarFire SoC PCIe Root Port Linux reference design, see GitHub.
• For information about PolarFire SoC HSS, see GitHub.
• For information about Yocto BSP, see GitHub.
PCIE1 PCIE1
PCIE1 PCIE1
Unused Unused
XCVR
Q0_LANE3
XCVR
XCVR
Q0_LANE2
XCVR
Q0_LANE1
Q0_LANE1 Unavailable Unavailable
Unused PCIE1
Q0_LANE0
XCVR
Q0_LANE1
PCIE1 PCIE1 PCIE1 PCIE1
x1 PCIE AXI Interface
Q0_LANE0*
Q0_LANE3 Unavailable Unavailable
Unavailable
PCIE0
Unused
Q0_LANE2* Q0_LANE2 Q0_LANE2 Q0_LANE2
x2 PCIE AXI Interface
x1 PCIE AXI Interface
x2 PCIE AXI Interface
XCVR
Unavailable Q0_LANE1
Q0_LANE1 Q0_LANE1
Unused
Q0_LANE0
XCVR
PCIE0
PCIE0 PCIE0 PCIE0
Unused
PCI Express PF_PCIE Configures the requested number of lanes with the
same PMA and PCS settings—location of each lane and
CDRPLL settings.
The configurator has presets for all the supported
protocols.
(1) It is not advisable to share the TxPLL with other serial protocols that have a tight transmit jitter specification.
Each transceiver module configurator guides the user through a sequential selection of choices and
defaults. Each configurator maintains a macro diagram that displays module ports based on the
current configuration. When all of the choices are made, the configurator generates a macro specific
to the requirements of the design. Only the relevant ports appear in the generated macro.
A PCIe design requires the transceiver reference clock and transceivers transmit PLL blocks to be
configured and instantiated in the design.
For more information on TX_REF_CLK and TX_PLL block configurators, see PolarFire Family
Transceiver User Guide.
For information about how to debug PCIe, see SmartDebug User Guide.
2. Enter the name of the component and then click OK to launch the configurator, as shown in the
following figure. The GUI allows you to select the related PCIe properties.
The following table lists the options available in the General tab.
...........continued
PCIE General Settings Options Default
(PCIe 0 and PCIe 1)
DRI Slave Interface4 Enabled and Disabled Disabled
(1) The PCIe Slot Capabilities register of PolarFire SoC FPGA is a read-only register and the Slot Power Limit and Slot Power
Scale fields are hardwired to zeros. Hence, the PCIe Root Port advertises the Slot Power Limit as zero to the add-in card.
However, the PCIe endpoints whose power requirement is 25W or below work as expected. For PCIe endpoints whose
power requirement is more than 25W or needs a strict adherence to PCIe spec, it is recommended to connect the endpoint
through a Microchip SwitchTec Gen3 PCIe Switch.
(2) AXI clock frequency must be greater than or equal to 125 MHz when the embedded DLL is enabled. Select the Use
embedded DLL in the fabric interface option for removing clock insertion delay.
(3) APB interface is used to configure PCIe control registers.
(4) For PolarFire SoC FPGA, DRI interface is used to configure lane related registers.
(5) The PCIe APB_S_CLK supports a maximum frequency of 125 MHz.
Number of Lanes: PCIe requires selection of the initial lane width. Wider lane-width cores are
capable of training down to smaller lane widths if attached to smaller lane-width devices. The
configurations, x2 and x4 support automatic lane reversal, allowing the PCIe link to permit board
interconnections with reversed lane numbers, and the PCIESS continues to link train successfully
and operate normally.
Reference Clock Frequency: PCIESS requires a 100 MHz, 125 MHz, or 156.25 MHz clock input. The
specified clock frequency must match with the TXPLL clock frequency.
Optional Interfaces (APB Slave/DRI Slave): Enabling these options, exposes the particular bus on
the PCIESS component for connecting to the FPGA fabric of the APB and DRI.
The following figure shows the options available in the Identification tab.
The following table lists the options available in the Identification tab.
Vendor ID: It identifies the manufacturer of the device or application. The default value (0x11AA) is
the vendor ID of Microchip and is registered with PCI-Sig. Customized vendor identification IDs can
also be used.
Sub-System Vendor ID: This ID further qualifies the manufacturer of the device or application. The
default value is 0x0000 matching the vendor ID. Customized vendor identification IDs can also be
used.
Important:
• 0x0000 is not recommended for vendor IDs or sub-system vendor ID.
• SSVID/SSDID value of 0x0000 causes the Endpoint to fail the PCIECV
compliance tests when non-zero SSVID/SSDID is a requirement by the PCIe
specification.
Revision ID: This indicates the revision of the device or application; an extension of the device ID.
The default value is 0x0000. Customized revision IDs can also be used.
Device ID: A unique identifier for the application. This can be any value based on the input.
Sub-System Device ID: This is similar to sub-system vendor ID and further qualifies the device
application.
Class Code: The class code identifies the general function of a device, and is divided into three
byte-size fields:
• Base Class: Broadly identifies the type of the function performed by the device.
• Sub-Class: More specifically identifies the device function.
• Interface: Defines a specific register-level programming interface.
Class code encoding details can be found at www.pcisig.com.
The following figure shows the options available in the Power Management tab. Selecting the power
management option allows loading settings to the PCIe config space headers.
The following table lists the options available in the Power Management tab.
...........continued
PCIE Power Management Settings (PCIe 0 and PCIe 1) Options Default
L0 Standby (L0s) Acceptable Latency No Limit No Limit
Maximum of 64 ns
Maximum of 128 ns
Maximum of 256 ns
Maximum of 512 ns
Maximum of 1 µs
Maximum of 2 µs
Maximum of 4 µs
The PCIe base specification defines two levels of active state power management (ASPM) that are
designed to provide options for trading off increased power conservation with rapid recovery to the
L0 state.
Number of fast training sequences (FTS): The specific number to be repeated is defined by
the receiving device and broadcast during training sequences at the link up time. The more FTS
transmitted, the easier it is to obtain a receiver lock on the transmitted signal. By default, the
number of FTS is grayed out, fixed to 63, and is not configurable by the user.
L0s Acceptable Latency: This state is required by all the PCIe devices and applies to a single
direction on the link. The latency to return to L0 from L0s is specified to be very short. When
entering L0s, the device moving into the power saving state sends an electrical idle ordered set
(EIOS) to the receiving device, and then turn off the power to its transmitter. When returning from
L0s to L0, the device must first generate a specific number of small order known as FTS. However,
the purpose of L0s is to regain receiver lock and be able to receive traffic as quickly as possible,
so the receiving device selects the lowest number of FTS that ensure clock recovery based on its
specific design. This selection is used to choose a time interval to achieve L0s.
Enable L1 Compatibility: The L1 ASPM is optionally enabled and can be entered to achieve a
greater degree of power conservation. In this state, both directions of the link are placed in the L1
state. Return to L0 requires both devices to go through the link recovery process which results in a
greater latency to return to L0, so that the power state can typically be used when activity on the link
is not expected for some significant time period.
L1 Acceptable Latency: To enter the L1 state, the downstream device must first request
permission from the upstream device for entering in to a deeper power conservation state. Upon
acknowledgement, both devices turn off their transmitters and enter an electrical idle state. This
settings gives the allowable time to wait to achieve L1.
L1 Exit Latency: Returning from L1 requires, that both devices must now go through the link
recovery process. The link recovery process uses TS1 and TS2 standard ordered sets as opposed to
the smaller FTSs used by L0s. This setting selects the time interval to exit from L1.
The following figure shows the options available in the Interrupts and Auxiliary Settings tab.
The following table lists the options available in the Interrupt and Auxiliary Settings tab.
(1) Enabled for End Point port type and disabled for Root Port by default.
PHY Reference Clock Slot: Select this option, if the PHY reference clock is either from a PCIe slot
or is generated separately. Slot is a clock source shared in the PCIe system between the host and
endpoint link. An Independent slot is used in a system that uses the independent clock sources on
either side of the link. This setting changes the PCIe configuration space register, to advertise the
used clocked topology to the system root. It makes no other functional changes to the endpoint.
Interrupts: The PCIe EP implementation supports 32 MSI interrupt and INTx interrupts. It cannot
simultaneously support both the interrupts. The PCIe EP supports legacy INT A interrupt as PolarFire
is a single-function device.
Expose Wake Signals: Enabling this option, exposes the WAKE_N input signal on the PCIESS
component allowing connection to the FPGA fabric.
De-Emphasis: This sets the de-emphasis (3.5 dB and 6.0 dB) for PCIe GEN 2 speed.
The following figure shows the options available in the Master Settings tab.
The following table lists the options available in the Master Settings tab.
BAR Size 4 KB, 8 KB, 16 KB, 32 KB, 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 KB
4 MB, 8 MB, 16 MB, 32 MB, 64 MB, 128 MB, 256 MB, 512 MB,1 GB, 2 GB, and 4 GB
AXI Address [32 bit] User Input, 32-bit address to be entered, lower 12 bits must be zero. 0x0000
Important: At least one Master Bar must be enabled for PCIe 0 and PCIe 1
controllers.
The following figure shows the options available in the Slave Settings tab.
The following table lists the options available in the Slave Settings tab.
Size 4 KB, 8 KB, 16 KB, 32 KB, 64 KB, 128 KB, 256 KB, 512 KB, 1 MB, 2 MB, 4 MB, 8 4 KB
MB, 16 MB, 32 MB, 64 MB,128 MB, 256 MB, 512 MB, 1 GB, 2 GB, and 4 GB
AXI Address [32 bit] User Input, 32-bit address to be entered, lower 12 bits must be zero. 0x0000
Translation Address [64 bit] User Input, 64-bit address to be entered, lower 12 bits must be zero. 0x0000
Important: When State is enabled, the size, AXI address, and translation address
settings are available.
After making all selections in the PCIe configurator, complete the generation by
clicking OK.
The next step is to create the XCVR_REFCLK and TX_PLL modules to be
instantiated and connected to the PCIe block. Typically, the REF_CLK output of
the PF_XCVR_REF_CLK is connected to the respective inputs of the PF_PCIE as well
as the input REF_CLK of the PF_TX_PLL. For information on XCVR block generation,
see PolarFire Family Transceiver User Guide.
The following table lists the key connections of the SmartDesign PCIe example.
Note: For information about how to demonstrate the high-speed data transfer capability of
PolarFire FPGA using the hardened PCIe EndPoint, Soft DDR3, and DDR4 controller IP, see PolarFire
FPGA PCIe EndPoint DDR3L DDR4 Memory Controller Data Plane.
Note: For information about Root Port capabilities of the PolarFire FPGA PCIe controller using Mi-V
soft processor, see PolarFire FPGA PCIe Root Port Application Note (Earlier DG0802).
Note: For information about PolarFire SoC PCIe Root Port Linux reference design, see GitHub.
3.2.1 Using PERSTn When PCIe is Configured as a Root Port (Ask a Question)
PERSTn is a fundamental reset signal defined in both PCI Express Base Specification and PCI
Express Card Electromechanical Specification. Root port issues this reset signal through PCIe slots
to reset the entire PCIe fabric hierarchy. The APB Master can assert PCIe PERSTn signal through
PCIe APB register space. When the host is power cycled, the PERSTn signal is asserted by the
PCIe_INIT_MONITOR until the PCIe controller in the Root port is initialized.
The following figure shows the PCIe configurator when PCIe is configured as a PCIe Root port.
Figure 3-10. PCIe Configurator When PCIe is Configured as a PCIe Root Port
The following figure shows the example of PCIe interface with the PERSTn signal.
CoreAXI
Fabric Slave PCIE1 BFM Model
CoreAXI
Fabric Slave PCIE0 BFM Model
Note: There are additional BFM commands that are only used for the PCIe AXI BFM simulation, to
emulate 64-bit AXI transactions.
The command, write64 w <base_address> <base_address_offset> <32-bit MSB> <32-
bit LSB>, makes the bus master start a 64-bit write transaction on the external bus for a slave with
address given by the <base_address> and <base_address_offset>, using the data generated by
<32-bit MSB> and <32-bit LSB >.
For example: write64 w 0x00000000 0x0 0xA0A1A2A3 0xB0B1B2B3;
The command, readcheck64 w <base_address> <base_address_offset> <32-bit MSB>
<32-bit LSB>, makes the bus master start a 64-bit read transaction for the address given by the
<base_address> and <base_address_offset>. It compares the 64-bit read data to the data.
The command setup 0x8 <source address> <destination address> is used to set source and
destination address for DMA.
The command setup 0xA <data> is used to set DMA data source.
<data> =0 ==> Data increment by 1 starting from 0x1
<data> =1 ==> Random data
<data> =2 ==> Data from DMADATA.vec file
For example, setup 0xA 0x2 data_in.vec. In this command, DMA data source is data_in.vec
file.
The command setup 0x9 <DMA_Length> <Control> is used for DMA control.
set control bit0 to '1' => start DMA
set control bit1 to '1' => sets transfer from PCIe domain to Fabric domain
set control bit2 to '1' => sets transfer from Fabric domain to PCIe domain
When control = 0x3, BFM starts DMA transfer from PCIe to Fabric and when control = 0x5, BFM
starts DMA transfers from Fabric to PCIe.
• The receiver pin for VIP model must not be in an unused state. The following example code
snippet is used in the testbench to prevent the transmitter pin from going into an unused state.
rx_1b[i] <=(txp[i]==txn[i] || txp[i]===1'bX) ? 1'bZ : txp[i];
Where,
– i – Number of BFM lanes
– txp and txn – Transmitter pins from XCVR
– rxp and rxn – Receiver pins from XCVR
– tx_1b – Transmitter pin from VIP model
– rx_1b – Receiver pin from VIP model
...........continued
Link Width Link Speed PC to LSRAM (Memory Read from LSRAM to PC (Memory Write Maximum
PC) to PC) Theoretical
Maximum % of Theoretical Throughput % of Theoretical Throughput
(MBps)
Throughput Throughput (MBps) Throughput
(MBps)
x2 Gen1 410 82 439 87.8 500
Gen2 814 81.4 875 87.5 1000
x4 Gen1 811 81.1 830 83 1000
Gen2 1181 59.05 1508 75.4 2000
Table 3-11. Relation Between Maximum Transaction Payload Size and Efficiency
Maximum Transaction Payload Size (Byte) Efficiency
128 86%
256 92%
• A_ATR_EVT Bit [19:16]: reports AXI Address Translation events (see ISTATUS_LOCAL for the same
definition)
• P_ATR_EVT Bit [23:20]: reports PCIe Address Translation events (see ISTATUS_LOCAL for the same
definition)
• INT_REQUEST Bit [31:24]: reports interrupt requests from the local processor (in this endpoint) to
the Host Processor
When the PCIe is in Endpoint Mode, the local processor can drive up to eight interrupt sources high
by generating a pulse (high) on the local_interrupt_in [7:0] input port and can drive those interrupt
sources low by writing 1 to corresponding bits in this field.
For information about Configuration registers, see respective PolarFire Device Register Map or
PolarFire SoC Register Map.
Figure 6-1. Connectivity Between XCVR Interface and PCIe Edge Connector
0.1 µF
XCVR Lane1/TXD Tx 0.1 µF Rx
0.1 µF
XCVR Lane2/TXD Tx 0.1 µF Rx
XCVR Lane0/RXD Rx Tx
XCVR Lane1/RXD Rx Tx
XCVR Lane2/RXD Rx Tx
XCVR Lane3/RXD Rx Tx
XCVR REFCLK0 Rx Tx
Tx
On-board
Rx Tx 100 MHz
XCVR REFCLK1
differential
clock source
Note: Between the fabric I/O and the host may require additional components to match 3.3 V
levels.
C 04/2022 Added information about PERSTn signal when PCIe is configured as Root port. See 3.2.1. Using PERSTn
When PCIe is Configured as a Root Port.
B 01/2022 The following is a summary of changes made in the revision.
• Information about Figure 1-8 was updated.
• Information about low-power operation state L2/P2 was removed as it is defeatured.
• The revision history tables of both the user guides are retained here for the future reference. For
information, see Table 8-2and Table 8-3.
The following revision history table describes the changes that were implemented in the UG0685:
PolarFire FPGA PCI Express User Guide document. The changes are listed by revision.
Note: UG0685: PolarFire FPGA PCI Express User Guide document is now obsolete and the
information in the document has been migrated to PolarFire Family PCI Express User Guide.
Table 8-2. Revision History of UG0685: PolarFire FPGA PCI Express User Guide
Revision Date Description
Revision 4/21 The following is a summary of the changes in the revision.
10.0 • Information about PCIE_#_INTERUPT[7:0] port description was updated. See PCIESS Port List table.
• Information about Bus Functional Model was updated.
• Information about MSI Capability Structure was updated. See MSI Capability Structure table.
• Information about PERST_N signal was added. See PCIe Power-Up.
• Reference to information about how to debug PCIe was added. See Libero Configurators.
Revision 9.0 9/20 The following is a summary of the changes in the revision.
• Information about signal width of AWBURST, ARBURST, AWID, and AWLEN was updated. See PCIESS
Port List table.
• Information about using of embedded DLL in fabric interface was updated. See PCIe General
Settings table.
Revision 8.0 5/20 The following is a summary of the changes in the revision.
• Information about SEC_ERROR_EVENT_CNT and DED_ERROR_EVENT_CNT counter registers was
updated. See ECC.
• Information about unused PCIe lanes were updated. See Legal Combinations of PCIe and XCVR
Protocols figure.
• Information about DLUP_EXIT signal was updated. See PCIESS Port List table.
Revision 7.0 4/19 The following is a summary of the changes in the revision.
• Structural changes were made throughout the document.
• Information about PCIe general settings was updated.
• Information about PCIESS_AXI_#_M_BRESP[1:0] was updated. See PCIESS Port List table.
• Information about PCIE_#_M_RDERR and PCIE_#_M_WDERR was updated. See PCIESS Port List table.
• Information about PCIE_#_INTERUPT[7:0] port was updated. See PCIESS Port List table.
Revision 6.0 10/18 The following is a summary of the changes in the revision.
• Information about port description was updated. See PCIESS Port List table.
• Information about DMA source and destination address register descriptions was updated. See
Scatter-Gather DMA Descriptors table.
• Information about user-supplied clock constraint was added. See Design Constraints.
• Information about Transmitter was updated.
• Information about how to enable ECC after PCIe enumeration was added. See ECC.
Revision 5.0 7/18 The document was updated for Libero SoC PolarFire v2.2 release.
Revision 4.0 4/18 The following is a summary of the changes in the revision.
• Information about AXI split transactions was added. See Conversion Between PCIe and AXI
Transactions.
• Information about AXI limitation was added. See AXI4 Limitations.
• Information about AXI Master and Slave Throughput was added. See PCIe AXI Master IF Throughput
and PCIe AXI Slave IF Throughput.
• Information about wake signals was updated. See PCIe Interrupts and Auxiliary Settings table.
• Information about PCIe translation address was updated. See PCIe Master Settings and PCIe Slave
Settings tables.
...........continued
Revision Date Description
Revision 3.0 11/17 The following is a summary of the changes in the revision.
• Information about PCIe Subsystem memory buffers was added. See ECC.
• Information about PCIE_#_TL_CLK_125MHz port name was updated. See PCIESS Port List table.
• Information about register content of the PCIe configuration space was added. See PCIe
Configuration Space.
• Updated Configuration Registers chapter.
• A note about PCIe BFM simulation model was added in PCIe Simulation section.
Revision 2.0 6/17 The following is a summary of the changes in the revision.
• Information about how to use VIP models was added. See PCIe Simulation.
• Information about DMA Descriptors was added. See DMA Transfers.
• Updated PCIe Configurator screen shots.
Revision 1.0 2/17 The first publication of UG0685: PolarFire FPGA PCI Express User Guide
The following revision history table describes the changes that were implemented in the UG0920:
PolarFire SoC FPGA PCI Express User Guide document. The changes are listed by revision.
Note: UG0920: PolarFire SoC FPGA PCI Express User Guide document is now obsolete and the
information in the document has been migrated to PolarFire Family PCI Express User Guide.
Table 8-3. Revision History of UG0920: PolarFire SoC FPGA PCI Express User Guide
Revision Date Description
Revision 3.0 5/21 The following is a summary of the changes in the revision.
• Information about PCIE_#_INTERUPT[7:0] port description was updated. See PCIESS Port List table.
• Information about Bus Functional Model was updated.
• Information about MSI Capability Structure was updated. See MSI Capability Structure table.
• Information about PERST_N signal was added. See PCIe Power-Up.
• Reference to information about how to debug PCIe was added. See Libero Configurators.
Revision 2.0 9/20 The following is a summary of the changes in the revision.
• Information about signal width of AWBURST, ARBURST, AWID, and AWLEN was updated. See PCIESS
Port List table.
• Information about using of embedded DLL in fabric interface was updated. See PCIe General Settings
table.
Revision 1.0 5/20 The first publication of UG0920: PolarFire SoC FPGA PCI Express User Guide
Microchip Information
The Microchip Website
Microchip provides online support via our website at www.microchip.com/. This website is used to
make files and information easily available to customers. Some of the content available includes:
• Product Support – Data sheets and errata, application notes and sample programs, design
resources, user’s guides and hardware support documents, latest software releases and archived
software
• General Technical Support – Frequently Asked Questions (FAQs), technical support requests,
online discussion groups, Microchip design partner program member listing
• Business of Microchip – Product selector and ordering guides, latest Microchip press releases,
listing of seminars and events, listings of Microchip sales offices, distributors and factory
representatives
Customer Support
Users of Microchip products can receive assistance through several channels:
• Distributor or Representative
• Local Sales Office
• Embedded Solutions Engineer (ESE)
• Technical Support
Customers should contact their distributor, representative or ESE for support. Local sales offices are
also available to help customers. A listing of sales offices and locations is included in this document.
Technical support is available through the website at: www.microchip.com/support
Legal Notice
This publication and the information herein may be used only with Microchip products, including
to design, test, and integrate Microchip products with your application. Use of this information
in any other manner violates these terms. Information regarding device applications is provided
only for your convenience and may be superseded by updates. It is your responsibility to ensure
that your application meets with your specifications. Contact your local Microchip sales office for
additional support or, obtain additional support at www.microchip.com/en-us/support/design-help/
client-support-services.
THIS INFORMATION IS PROVIDED BY MICROCHIP "AS IS". MICROCHIP MAKES NO REPRESENTATIONS
OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY
OR OTHERWISE, RELATED TO THE INFORMATION INCLUDING BUT NOT LIMITED TO ANY IMPLIED
WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR
PURPOSE, OR WARRANTIES RELATED TO ITS CONDITION, QUALITY, OR PERFORMANCE.
IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE, INCIDENTAL, OR
CONSEQUENTIAL LOSS, DAMAGE, COST, OR EXPENSE OF ANY KIND WHATSOEVER RELATED TO THE
INFORMATION OR ITS USE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS BEEN ADVISED OF THE
POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE FULLEST EXTENT ALLOWED BY LAW,
MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN ANY WAY RELATED TO THE INFORMATION OR
ITS USE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY, THAT YOU HAVE PAID DIRECTLY TO
MICROCHIP FOR THE INFORMATION.
Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk,
and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages,
claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise,
under any Microchip intellectual property rights unless otherwise stated.
Trademarks
The Microchip name and logo, the Microchip logo, Adaptec, AVR, AVR logo, AVR Freaks, BesTime,
BitCloud, CryptoMemory, CryptoRF, dsPIC, flexPWR, HELDO, IGLOO, JukeBlox, KeeLoq, Kleer,
LANCheck, LinkMD, maXStylus, maXTouch, MediaLB, megaAVR, Microsemi, Microsemi logo, MOST,
MOST logo, MPLAB, OptoLyzer, PIC, picoPower, PICSTART, PIC32 logo, PolarFire, Prochip Designer,
QTouch, SAM-BA, SenGenuity, SpyNIC, SST, SST Logo, SuperFlash, Symmetricom, SyncServer,
Tachyon, TimeSource, tinyAVR, UNI/O, Vectron, and XMEGA are registered trademarks of Microchip
Technology Incorporated in the U.S.A. and other countries.
AgileSwitch, ClockWorks, The Embedded Control Solutions Company, EtherSynch, Flashtec, Hyper
Speed Control, HyperLight Load, Libero, motorBench, mTouch, Powermite 3, Precision Edge,
ProASIC, ProASIC Plus, ProASIC Plus logo, Quiet-Wire, SmartFusion, SyncWorld, TimeCesium,
TimeHub, TimePictra, TimeProvider, and ZL are registered trademarks of Microchip Technology
Incorporated in the U.S.A.
Adjacent Key Suppression, AKS, Analog-for-the-Digital Age, Any Capacitor, AnyIn, AnyOut,
Augmented Switching, BlueSky, BodyCom, Clockstudio, CodeGuard, CryptoAuthentication,
CryptoAutomotive, CryptoCompanion, CryptoController, dsPICDEM, dsPICDEM.net, Dynamic