User manual
Table Of Contents
- Zynq-7000 All Programmable SoC
- Table of Contents
- Ch. 1: Introduction
- Ch. 2: Signals, Interfaces, and Pins
- Ch. 3: Application Processing Unit
- Ch. 4: System Addresses
- Ch. 5: Interconnect
- Ch. 6: Boot and Configuration
- Ch. 7: Interrupts
- Ch. 8: Timers
- Ch. 9: DMA Controller
- Introduction
- Functional Description
- DMA Transfers on the AXI Interconnect
- AXI Transaction Considerations
- DMA Manager
- Multi-channel Data FIFO (MFIFO)
- Memory-to-Memory Transfers
- PL Peripheral AXI Transactions
- PL Peripheral Request Interface
- PL Peripheral - Length Managed by PL Peripheral
- PL Peripheral - Length Managed by DMAC
- Events and Interrupts
- Aborts
- Security
- IP Configuration Options
- Programming Guide for DMA Controller
- Programming Guide for DMA Engine
- Programming Restrictions
- System Functions
- I/O Interface
- Ch. 10: DDR Memory Controller
- Introduction
- AXI Memory Port Interface (DDRI)
- DDR Core and Transaction Scheduler (DDRC)
- DDRC Arbitration
- Controller PHY (DDRP)
- Initialization and Calibration
- DDR Clock Initialization
- DDR IOB Impedance Calibration
- DDR IOB Configuration
- DDR Controller Register Programming
- DRAM Reset and Initialization
- DRAM Input Impedance (ODT) Calibration
- DRAM Output Impedance (RON) Calibration
- DRAM Training
- Write Data Eye Adjustment
- Alternatives to Automatic DRAM Training
- DRAM Write Latency Restriction
- Register Overview
- Error Correction Code (ECC)
- Programming Model
- Ch. 11: Static Memory Controller
- Ch. 12: Quad-SPI Flash Controller
- Ch. 13: SD/SDIO Controller
- Ch. 14: General Purpose I/O (GPIO)
- Ch. 15: USB Host, Device, and OTG Controller
- Introduction
- Functional Description
- Programming Overview and Reference
- Device Mode Control
- Device Endpoint Data Structures
- Device Endpoint Packet Operational Model
- Device Endpoint Descriptor Reference
- Programming Guide for Device Controller
- Programming Guide for Device Endpoint Data Structures
- Host Mode Data Structures
- EHCI Implementation
- Host Data Structures Reference
- Programming Guide for Host Controller
- OTG Description and Reference
- System Functions
- I/O Interfaces
- Ch. 16: Gigabit Ethernet Controller
- Ch. 17: SPI Controller
- Ch. 18: CAN Controller
- Ch. 19: UART Controller
- Ch. 20: I2C Controller
- Ch. 21: Programmable Logic Description
- Ch. 22: Programmable Logic Design Guide
- Ch. 23: Programmable Logic Test and Debug
- Ch. 24: Power Management
- Ch. 25: Clocks
- Ch. 26: Reset System
- Ch. 27: JTAG and DAP Subsystem
- Ch. 28: System Test and Debug
- Ch. 29: On-Chip Memory (OCM)
- Ch. 30: XADC Interface
- Ch. 31: PCI Express
- Ch. 32: Device Secure Boot
- Appx. A: Additional Resources
- Appx. B: Register Details
- Overview
- Acronyms
- Module Summary
- AXI_HP Interface (AFI) (axi_hp)
- CAN Controller (can)
- DDR Memory Controller (ddrc)
- CoreSight Cross Trigger Interface (cti)
- Performance Monitor Unit (cortexa9_pmu)
- CoreSight Program Trace Macrocell (ptm)
- Debug Access Port (dap)
- CoreSight Embedded Trace Buffer (etb)
- PL Fabric Trace Monitor (ftm)
- CoreSight Trace Funnel (funnel)
- CoreSight Intstrumentation Trace Macrocell (itm)
- CoreSight Trace Packet Output (tpiu)
- Device Configuration Interface (devcfg)
- DMA Controller (dmac)
- Gigabit Ethernet Controller (GEM)
- General Purpose I/O (gpio)
- Interconnect QoS (qos301)
- NIC301 Address Region Control (nic301_addr_region_ctrl_registers)
- I2C Controller (IIC)
- L2 Cache (L2Cpl310)
- Application Processing Unit (mpcore)
- On-Chip Memory (ocm)
- Quad-SPI Flash Controller (qspi)
- SD Controller (sdio)
- System Level Control Registers (slcr)
- Static Memory Controller (pl353)
- SPI Controller (SPI)
- System Watchdog Timer (swdt)
- Triple Timer Counter (ttc)
- UART Controller (UART)
- USB Controller (usb)

Zynq-7000 AP SoC Technical Reference Manual www.xilinx.com 317
UG585 (v1.11) September 27, 2016
Chapter 10: DDR Memory Controller
As final parameters, pick the values that are in the center of the successful tests region. Note that
each data byte lane (aka data slice) has its own independent parameters, and should be tested
independently in the memory tests.
The estimated time for a training iteration is 1-2 ms plus the duration of the memory test. Assuming
a simple 1,000 word read-write test and an average access time of 30 cycles, test duration is on the
order of 60,000 cycles or about 0.12 ms at 500 MHz. Thus, a 25-iteration semi-automatic training
might last 25-50 ms.
Multi-Set Semi-Automatic Training
RECOMMENDED: Before resorting to manual training, a multi-set semi automatic training method is
recommended.
The DDR PHY contains five adjustable delay elements, four of which are per byte lane (so the actual
number of unique adjustable delay elements is 17). Of these five elements, only three are adjusted by
the automatic training. These three elements are the write DQS delay, read DQS delay, and read data
delay. The remaining two elements are the write data delay, and the control path delay, which take
their value from a programmable register, and the value is not adjusted by the automatic training.
The automatic training process varies the delay of those three elements over a wide range, and the
semi-automatic procedure increases that range. If both automatic and semi-automatic procedures
fail, it is highly likely that one or both of the remaining two delay elements require adjustment.
Therefore, multiple sets of semi-automatic training procedures can be run, each set using different
values of the two remaining delay values. Thus we still take advantage of the efficiency of the
automatic training, and reduce the total number of experiments compared to all-manual training.
Manual Training
This method is useful when nothing is known, or if the semi-automatic method has failed. In its
simplest form, this method consists of:
• Disabling the automatic training
• Performing a manual sweep of all delay parameters over their entire range. For each setting:
°
Initialize the DDRC with training disabled
°
Perform a memory test
• Keeping a scoreboard of results
• Locating the mid-point of all delay parameters (which might be different for each data lane)
The recommended delay increment value per iteration is 1/32 of a clock cycle, thus requiring 32
iterations to cover a one-cycle delay range per parameter.
The estimated time for a manual training iteration is 700 us (500 us are required as part of the DRAM
reset/initialization procedure for DDR3/DDR3L) plus the duration of the memory test, or about
0.8 ms. Simplifying assumptions can be used to reduce the search range, but even then the number
of iterations might be on the order of 1,000, bringing the manual training time to about one second.










