User guide
Table Of Contents
- Cyclone V Hard IP for PCI Express User Guide
- Contents
- 1. Datasheet
- 2. Getting Started with the Cyclone V Hard IP for PCI Express
- 3. Getting Started with the Avalon-MM Cyclone Hard IP for PCI Express
- Running Qsys
- Customizing the Cyclone VHard IP for PCI Express IP Core
- Adding the Remaining Components to the Qsys System
- Completing the Connections in Qsys
- Specifying Clocks and Interrupts
- Specifying Exported Interfaces
- Specifying Address Assignments
- Simulating the Example Design
- Simulating the Single DWord Design
- Understanding Channel Placement Guidelines
- Adding Synopsis Design Constraints
- Creating a Quartus II Project
- Compiling the Design
- Programming a Device
- 4. Parameter Settings for the Cyclone V Hard IP for PCI Express
- 5. Parameter Settings for the Avalon-MM Cyclone V Hard IP for PCI Express
- 6. IP Core Architecture
- Key Interfaces
- Protocol Layers
- Multi-Function Support
- PCI Express Avalon-MM Bridge
- Avalon-MM Bridge TLPs
- Avalon-MM-to-PCI Express Write Requests
- Avalon-MM-to-PCI Express Upstream Read Requests
- PCI Express-to-Avalon-MM Read Completions
- PCI Express-to-Avalon-MM Downstream Write Requests
- PCI Express-to-Avalon-MM Downstream Read Requests
- Avalon-MM-to-PCI Express Read Completions
- PCI Express-to-Avalon-MM Address Translation for Endpoints
- Minimizing BAR Sizes and the PCIe Address Space
- Avalon-MM-to-PCI Express Address Translation Algorithm
- Single DWord Completer Endpoint
- 7. IP Core Interfaces
- Cyclone V Hard IP for PCI Express
- Avalon-MM Hard IP for PCI Express
- Physical Layer Interface Signals
- Test Signals
- 8. Register Descriptions
- Configuration Space Register Content
- Altera-Defined Vendor Specific Extended Capability (VSEC)
- PCI Express Avalon-MM Bridge Control Register Access Content
- Avalon-MM to PCI Express Interrupt Registers
- PCI Express Mailbox Registers
- Avalon-MM-to-PCI Express Address Translation Table
- Root Port TLP Data Registers
- Programming Model for Avalon-MM Root Port
- PCI Express to Avalon-MM Interrupt Status and Enable Registers for Root Ports
- PCI Express to Avalon-MM Interrupt Status and Enable Registers for Endpoints
- Avalon-MM Mailbox Registers
- Correspondence between Configuration Space Registers and the PCIe Spec 2.1
- 9. Reset and Clocks
- 10. Transaction Layer Protocol (TLP) Details
- 11. Interrupts
- Interrupts for Endpoints Using the Avalon-ST Application Interface
- Interrupts for Root Ports Using the Avalon-ST Interface to the Application Layer
- Interrupts for Endpoints Using the Avalon-MM Interface to the Application Layer
- Interrupts for End Points Using the Avalon-MM Interface with Multiple MSI/MSI-X Support
- 12. Optional Features
- 13. Flow Control
- 14. Error Handling
- 15. Transceiver PHY IP Reconfiguration
- 16. SDC Timing Constraints
- 17. Testbench and Design Example
- Endpoint Testbench
- Root Port Testbench
- Chaining DMA Design Examples
- Test Driver Module
- Root Port Design Example
- Root Port BFM
- BFM Procedures and Functions
- 18. Debugging
- A. Transaction Layer Packet (TLP) Header Formats
- Additional Information

Chapter 7: IP Core Interfaces 7–31
Cyclone V Hard IP for PCI Express
December 2013 Altera Corporation Cyclone V Hard IP for PCI Express
User Guide
f For a description of the completion rules, the completion header format, and
completion status field values, refer to Section 2.2.9 of the PCI Express Base
Specification, Rev. 2.1.
Transaction Layer Configuration Space Signals
Table 7–10 describes the Transaction Layer Configuration Space signals.
cpl_err[6:0]
(continued)
■
cpl_err[6]
: Log header. If header logging is required, this bit must be set in
every cycle in which any of
cpl_err[2]
,
cpl_err[3]
,
cpl_err[4]
, or
cpl_err[5]
is asserted. The Application Layer presents the header to the
Hard IP by writing the following values to the following 4 registers using LMI
before asserting
cpl_err[6]
:
■ lmi_addr: 12'h81C,
lmi_din
:
err_desc_func0[127:96]
■ lmi_addr: 12'h820,
lmi_din
:
err_desc_func0[95:64]
■ lmi_addr: 12'h824,
lmi_din
:
err_desc_func0[63:32]
■ lmi_addr: 12'h828,
lmi_din
:
err_desc_func0[31:0]
Refer to the “LMI Signals” on page 7–39 for more information about LMI
signalling.
Due to clock-domain synchronization circuitry,
cpl_err
is limited to at most 1
assertion every 8
pld_clk
cycles. Whenever
cpl_err
is asserted,
cpl_err_func[2:0]
should be updated in the same cycle.
cpl_err_func[2:0]
I
Specifies which function is requesting the
cpl_err
. Must be asserted when
cpl_err
asserts. Due to clock-domain synchronization circuitry,
cpl_err
is
limited to at most 1 assertion every 8
pld_clk
cycles. Whenever
cpl_err
is
asserted,
cpl_err_func[2:0]
should be updated in the same cycle.
cpl_pending[7:0]
I
Completion pending. The Application Layer must assert this signal when a
master block is waiting for completion, for example, when a transaction is
pending. This is a level sensitive input. A bit is provided for each function, where
bit 0 corresponds to function 0, and so on.
Table 7–9. Completion Signals for the Avalon-ST Interface (Part 2 of 2)
Signal I/O Description
Table 7–10. Configuration Space Signals (Hard IP Implementation) (Part 1 of 2)
Signal Dir Description
tl_cfg_add[6:0]
0
Address of the register that has been updated. This signal is an index indicating which
Configuration Space register information is being driven onto
tl_cfg_ctl.
The indexing
is defined inTable 7–12 on page 7–35.The index increments every 8
coreclkout_hip
cycles. The index consists of the following 2 pars:
■ [6:4] - indicates the function number whose information is being presented on
tl_cfg_ctl
■ [3:0] - the
tl_cfg_ctl
multiplexor index
tl_cfg_ctl[31:0]
0
The
tl_cfg_ctl
signal is multiplexed and contains the contents of the Configuration
Space registers. The information presented on this bus depends on the
tl_cfg_add
index
according toTable 7–12 on page 7–35.
tl_cfg_ctl_wr
0
Write signal. This signal toggles when
tl_cfg_ctl
has been updated (every 8
core_clk
cycles). The toggle edge marks where the
tl_cfg_ctl
data changes. You can use this
edge as a reference to determine when the data is safe to sample.