PHY Lite for Parallel Interfaces FPGA IP User Guide

ID 683716
Date 3/31/2025
Public
Document Table of Contents

4.2.2.3. Register Map

When you generate the IP, the IP automatically creates the address register map file (addr_map.vh) and the corresponding C header file. It contains the Avalon® memory-mapped interface registers that you can read and write to use the AXI4-Lite IP interface of the Calibration IP.

Since these registers include multiple fields for different settings, only change them with a read-modify-write cycle to preserve the other fields in the register. The address of a register is 24 bits, consists of an 11-bit base address right-padded with 13’b0, and an 11-bit offset address left-padded with 13’b0. The padding is done to make the base address and offset address 24 bits.

In the hardware, the addresses are automatically right-shifted by 2 bits. In the software view, the 24 bits addresses are padded by two zeros at the right. In the hardware view, the zero paddings are discarded and the address width gets reduced to 22 bits.

The base address is calculated as:

Base address = {3’b011, 3 bits instance ID, 2 bits atom ID, 3 bits lane ID},

where atom ID is 2’b00 for Byte control and 2’b01 for Byte. All the reconfigurable PHY Lite for Parallel Interfaces IP settings are in Byte control. The offset voltage for different registers in the address map, as well as bit-field description of the registers, is provided in the table below. As an example, suppose that the PHY Lite for Parallel Interfaces Instance ID is 0 and group 0 is assigned to lane 0. To change the output delay of pin 0, you need to modify the INSTANCE_0_GROUP_0_PIN_00_DDRCRTIMINGCONTROL register.

The base and offset addresses are derived as:

Base address = {3’b011, 3’b000, 2’b00, 3’b000, 13’b0} = 24’h600000

Offset address = {11’b0, 0x100} = 24’h000100

Full address = Base address + Offset address = 24’h0060_0100

Do not attempt to write to an invalid memory address as it leads to data corruption in other registers. For guidance, refer to the following table of Avalon® memory-mapped interface address registers. The Avalon® memory-mapped interface registers are 32-bit wide.

Table 82.  Address Register MapThis table shows the relevant bit-fields in the registers as they appear in the generated address map.
Register Name

Offset Address

(13 bit)

Description Bit Field Bit Field Description
INSTANCE_<n>_GROUP_<n>_PIN_00_DDRCRTIMINGCONTROL 0x100 DQ and DQS timing [31:21] TxDqDelay
INSTANCE_<n>_GROUP_<n>_PIN_01_DDRCRTIMINGCONTROL 0xfc
INSTANCE_<n>_GROUP_<n>_PIN_02_DDRCRTIMINGCONTROL 0xf8
INSTANCE_<n>_GROUP_<n>_PIN_03_DDRCRTIMINGCONTROL 0xf4
INSTANCE_<n>_GROUP_<n>_PIN_04_DDRCRTIMINGCONTROL 0xf0 [13:7] RxDqsNDelayPi
INSTANCE_<n>_GROUP_<n>_PIN_05_DDRCRTIMINGCONTROL 0xec
INSTANCE_<n>_GROUP_<n>_PIN_06_DDRCRTIMINGCONTROL 0xe8
INSTANCE_<n>_GROUP_<n>_PIN_07_DDRCRTIMINGCONTROL 0xe4
INSTANCE_<n>_GROUP_<n>_PIN_08_DDRCRTIMINGCONTROL 0xe0 [6:0] RxDqsPDelayPi
INSTANCE_<n>_GROUP_<n>_PIN_09_DDRCRTIMINGCONTROL 0xdc
INSTANCE_<n>_GROUP_<n>_PIN_10_DDRCRTIMINGCONTROL 0xd8
INSTANCE_<n>_GROUP_<n>_PIN_11_DDRCRTIMINGCONTROL 0xd4
INSTANCE_<n>_PHY_LANE_<n>_UPPER_NIBBLE_RCVEN 0x114 RcvEn delay for upper nibble [10:0] RxRcvEnPiRank0
INSTANCE_<n>_PHY_LANE_<n>_LOWER_NIBBLE_RCVEN 0x11c RcvEn delay for lower nibble [10:0] RxRcvEnPiRank0
INSTANCE_<n>_PHY_LANE_<n>_UPPER_NIBBLE_DATACONTROL2 0x10c DQ/DQS ODT, DQ sense amp delay and duration upper nibble [31:27] DqsSenseAmpDelay
[26:23] DqSenseAmpDuration
[22:18] DqSenseAmpDelay
[17:14] DqOdtDuration
[13:9] DqOdtDelay
[8:5] DqsOdtDuration
[4:0] DqsOdtDelay
INSTANCE_<n>_PHY_LANE_<n>_LOWER_NIBBLE_DATACONTROL2 0x110 DQ/DQS ODT, DQ sense amp delay and duration lower nibble [31:27] DqsSenseAmpDelay
[26:23] DqSenseAmpDuration
[22:18] DqSenseAmpDelay
[17:14] DqOdtDuration
[13:9] DqOdtDelay
[8:5] DqsOdtDuration
[4:0] DqsOdtDelay
INSTANCE_<n>_PHY_LANE_<n>_UPPER_NIBBLE_DQSSENSEAMPDURATION 0x124 Dqs sense amp duration upper nibble [29:26] DqsSenseAmpDuration
INSTANCE_<n>_PHY_LANE_<n>_LOWER_NIBBLE_DQSSENSEAMPDURATION 0x128 ovrd_val for RX path [31] rx_ana_ovrd_val
ovrd_en for RX path [30] rx_ana_ovrd_en
Dqs sense amp duration lower nibble [29:26] DqsSenseAmpDuration
INSTANCE_<n>_PHY_LANE_<n>_RXFIFO 0x13c Read enable offset change read valid delay [3:0] read_enable_offset
INSTANCE_<n>_PHY_LANE_<n>_DATATRAINFEEDBACK 0x160 Train reset and training mode [14] TrainReset
[9] RLTrainingMode
INSTANCE_<n>_PHY_LANE_<n>_TRAINFEEDBACK 0x1f4 Train feedback [23:12] DataTrainFeedback_N1
[11:0] DataTrainFeedback_N0
INSTANCE_<n>_PHY_LANE_<n>_DATACONTROL0 0x104 Internal Clocks [11] InternalClocksOn
INSTANCE_<n>_PHY_LANE_<n>_DATACONTROL1 0x108 Delay RxDqD0 for matched Rx [29:28] D0DlyRange
INSTANCE_<n>_PHY_LANE_<n>_DATACONTROL6 0x130 VRef I/O Voltage [29:21] RxDataVrefL
[20:12] RxDataVrefU

Example x16 Pin Assignment

Consider a x16 group occupying lane 0 and lane 1. Differential strobe signals, S and SB, are assigned to pin indices 4 and 5 of lane 0 (the first of the two lanes), respectively. 22 DQ data pins are assigned in increasing order across the two lanes. The following table provides the pin addresses:

Table 83.  Sample Pin Assignment and Address for a x16 Group
Register Name Lane Pin Index Pin Address
INSTANCE_0_GROUP_0_PIN_00_DDRCRTIMINGCONTROL 0 0 0x600100
INSTANCE_0_GROUP_0_PIN_01_DDRCRTIMINGCONTROL

0 1 0x6000fc
INSTANCE_0_GROUP_0_PIN_02_DDRCRTIMINGCONTROL 0 2 0x6000f8
INSTANCE_0_GROUP_0_PIN_03_DDRCRTIMINGCONTROL 0 3 0x6000f4
INSTANCE_0_GROUP_0_PIN_S_DDRCRTIMINGCONTROL 0 4 0x600f0
INSTANCE_0_GROUP_0_PIN_SB_DDRCRTIMINGCONTROL 0 5 0x600ec
INSTANCE_0_GROUP_0_PIN_04_DDRCRTIMINGCONTROL 0 6 0x6000e8
INSTANCE_0_GROUP_0_PIN_05_DDRCRTIMINGCONTROL 0 7 0x6000e4
INSTANCE_0_GROUP_0_PIN_06_DDRCRTIMINGCONTROL 0 8 0x6000e0
INSTANCE_0_GROUP_0_PIN_07_DDRCRTIMINGCONTROL 0 9 0x6000dc
INSTANCE_0_GROUP_0_PIN_08_DDRCRTIMINGCONTROL 0 10 0x6000d8
INSTANCE_0_GROUP_0_PIN_09_DDRCRTIMINGCONTROL 0 11 0x6000d4
INSTANCE_0_GROUP_0_PIN_10_DDRCRTIMINGCONTROL 1 0 0x602100
INSTANCE_0_GROUP_0_PIN_11_DDRCRTIMINGCONTROL 1 1 0x6020fc
INSTANCE_0_GROUP_0_PIN_12_DDRCRTIMINGCONTROL 1 2 0x6020f8
INSTANCE_0_GROUP_0_PIN_13_DDRCRTIMINGCONTROL 1 3 0x6020f4
INSTANCE_0_GROUP_0_PIN_14_DDRCRTIMINGCONTROL 1 4 0x6020f0
INSTANCE_0_GROUP_0_PIN_15_DDRCRTIMINGCONTROL 1 5 0x6020ec
INSTANCE_0_GROUP_0_PIN_16_DDRCRTIMINGCONTROL 1 6 0x6020e8
INSTANCE_0_GROUP_0_PIN_17_DDRCRTIMINGCONTROL 1 7 0x6020e4
INSTANCE_0_GROUP_0_PIN_18_DDRCRTIMINGCONTROL 1 8 0x6020e0
INSTANCE_0_GROUP_0_PIN_19_DDRCRTIMINGCONTROL 1 9 0x6020dc
INSTANCE_0_GROUP_0_PIN_20_DDRCRTIMINGCONTROL 1 10 0x6020d8
INSTANCE_0_GROUP_0_PIN_21_DDRCRTIMINGCONTROL 1 11 0x6020d4