RANKCTL (DDRC) Register

Zynq UltraScale+ Devices Register Reference (UG1087)

Document ID
UG1087
Release Date
2024-03-13
Revision
1.10

RANKCTL (DDRC) Register Description

Register NameRANKCTL
Offset Address0x00000000F4
Absolute Address 0x00FD0700F4 (DDRC)
Width32
TyperwNormal read/write
Reset Value0x0000066F
DescriptionRank Control Register

This register is static. Static registers can only be written when the controller is in reset.

RANKCTL (DDRC) Register Bit-Field Summary

Field NameBitsTypeReset ValueDescription
diff_rank_wr_gap11:8rwNormal read/write0x6Indicates the number of clocks of gap in data responses when performing consecutive writes to different ranks.
This is used to switch the delays in the PHY to match the rank requirements.
This value should consider both PHY requirement and ODT requirement.
- PHY requirement:
7
If CRC feature is enabled, should be increased by 1.
If write preamble is set to 2tCK(DDR4/LPDDR4 only), should be increased by 1.
If write postamble is set to 1.5tCK(LPDDR4 only), should be increased by 1.
- ODT requirement:
The value programmed in this register takes care of the ODT switch off timing requirement when switching ranks during writes.
For LPDDR4, the requirement is ODTLoff - ODTLon - BL/2 + 1
Program this to the larger value divided by two and round it up to the next integer.
diff_rank_rd_gap 7:4rwNormal read/write0x6Indicates the number of clocks of gap in data responses when performing consecutive reads to different ranks.
This is used to switch the delays in the PHY to match the rank requirements.
This value should consider both PHY requirement and ODT requirement.
- PHY requirement:
5
If read preamble is set to 2tCK(DDR4/LPDDR4 only), should be increased by 1.
If read postamble is set to 1.5tCK(LPDDR4 only), should be increased by 1.
- ODT requirement:
The value programmed in this register takes care of the ODT switch off timing requirement when switching ranks during reads.
Program this to the larger value divided by two and round it up to the next integer.
max_rank_rd 3:0rwNormal read/write0xFBackground: Reads to the same rank can be performed back-to-back. Reads to different ranks require additional gap dictated by the register RANKCTL.diff_rank_rd_gap. This is to avoid possible data bus contention as well as to give PHY enough time to switch the delay when changing ranks. The DDRC arbitrates for bus access on a cycle-by-cycle basis; therefore after a read is scheduled, there are few clock cycles (determined by the value on RANKCTL.diff_rank_rd_gap register) in which only reads from the same rank are eligible to be scheduled. This prevents reads from other ranks from having fair access to the data bus.
This parameter represents the maximum number of reads that can be scheduled consecutively to the same rank. After this number is reached, a delay equal to RANKCTL.diff_rank_rd_gap is inserted by the scheduler to allow all ranks a fair opportunity to be scheduled. Higher numbers increase bandwidth utilization, lower numbers increase fairness.
This feature can be DISABLED by setting this register to 0. When set to 0, the Controller will stay on the same rank as long as commands are available for it.
Minimum programmable value is 0 (feature disabled) and maximum programmable value is 0xF.
FOR PERFORMANCE ONLY.