SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
There are two types of I/O cells associated with the DDR2/DDR3 interface. These are single-ended and differential I/O cells.
These I/O cells have the following software controls which reside in registers of the CTRL_MODULE_CORE:
The I and SR controls apply when the I/Os operate as outputs. The WD controls apply when the I/Os operate as both inputs or outputs.
The bits I[2:0] are used for programming the desired impedance value of the output buffer. Table 18-19 describes the I[2:0] controls which are valid for pull-up and pull-down outputs.
I[2] | I[1] | I[0] | Drive Setting Name | Output Impedance |
---|---|---|---|---|
0 | 0 | 0 | Imp80 | 80 Ohms |
0 | 0 | 1 | Imp60 | 60 Ohms |
0 | 1 | 0 | Imp48 | 48 Ohms |
0 | 1 | 1 | Imp40 | 40 Ohms |
1 | 0 | 0 | Imp34 | 34 Ohms |
1 | 0 | 1 | Reserved | Reserved |
1 | 1 | 0 | Reserved | Reserved |
1 | 1 | 1 | Reserved | Reserved |
To achieve optimal noise/speed trade-off the slew rate of the output signal can also be programmed using the slew rate control bits SR[2:0] shown in Table 18-20. These SR settings do not affect the DC drive strength of the output buffer. They only control its turn-on time.
SR[2] | SR[1] | SR[0] | Turn-On Time Level | Note |
---|---|---|---|---|
0 | 0 | 0 | fastest | All 8 values are valid. |
... | ... | ... | ||
... | ... | ... | ||
1 | 1 | 1 | slowest |
Weak pull-up, pull-down or keeper option for device DDR2/3 pads is enabled through the WD[1:0] bits. The weak pull-up or pull-down option is used to define the pad state (high or low) when no signal is driving the pad. The weak keeper option is used to maintain the previous output value when nothing is driving the pad. Table 18-21 describes the WD controls. They are used for avoiding floating pads on the DDR2/DDR3 interface.
WD[1] | WD[0] | Single-Ended Operation | Differential Pair Operation | |
---|---|---|---|---|
padp | padn | |||
0 | 0 | Pull logic disabled | Pull logic disabled | Pull logic disabled |
0 | 1 | Weak pullup enabled | Weak pullup enabled | Weak pulldown enabled |
1 | 0 | Weak pulldown enabled | Weak pulldown enabled | Weak pullup enabled |
1 | 1 | Weak keeper enabled | Weak keeper enabled | Weak keeper enabled |
To avoid unnecessary power consumption, software must overwrite the Weak Driver (WD) reset values by setting them to 0x0.
It must be taken into account that the I, SR and WD software controls apply for several pads combined in groups, and not for a single pad. For example, writing 0x1 to the CTRL_CORE_CONTROL_DDRCACH1_0[17:16] DDR3CH1_PART5A_WD bit field enables the weak pull-up resistors for all 16 pads in the PART5A group. These are the ddr1_a[15:0] pads. Table 18-22 shows the I, SR and WD controls for the different DDR2/DDR3 pad groups.
DDR2/DDR3 Interface I/O Group Controls | Group Name | Pads in a Group |
---|---|---|
EMIF1 Pads | ||
CTRL_CORE_CONTROL_DDRCACH1_0[31:29] DDR3CH1_PART0_I | PART0 | ddr1_casn, ddr1_rasn, ddr1_rst, ddr1_wen, ddr1_csn[0], ddr1_cke, ddr1_odt[0] |
CTRL_CORE_CONTROL_DDRCACH1_0[28:26] DDR3CH1_PART0_SR | ||
CTRL_CORE_CONTROL_DDRCACH1_0[25:24] DDR3CH1_PART0_WD | ||
CTRL_CORE_CONTROL_DDRCACH1_0[23:21] DDR3CH1_PART5A_I | PART5A | ddr1_a[15:0] |
CTRL_CORE_CONTROL_DDRCACH1_0[20:18] DDR3CH1_PART5A_SR | ||
CTRL_CORE_CONTROL_DDRCACH1_0[17:16] DDR3CH1_PART5A_WD | ||
CTRL_CORE_CONTROL_DDRCACH1_0[15:13] DDR3CH1_PART5B_I | PART5B | ddr1_ba[0], ddr1_ba[1], ddr1_ba[2] |
CTRL_CORE_CONTROL_DDRCACH1_0[12:10] DDR3CH1_PART5B_SR | ||
CTRL_CORE_CONTROL_DDRCACH1_0[9:8] DDR3CH1_PART5B_WD | ||
CTRL_CORE_CONTROL_DDRCACH1_0[7:5] DDR3CH1_PART6_I | PART6 | ddr1_ck, ddr1_nck |
CTRL_CORE_CONTROL_DDRCACH1_0[4:2] DDR3CH1_PART6_SR | ||
CTRL_CORE_CONTROL_DDRCACH1_0[1:0] DDR3CH1_PART6_WD | ||
CTRL_CORE_CONTROL_DDRCH1_0[31:29] DDRCH1_PART1A_I | PART1A | ddr1_d[7:0], ddr1_dqm[0] |
CTRL_CORE_CONTROL_DDRCH1_0[28:26] DDRCH1_PART1A_SR | ||
CTRL_CORE_CONTROL_DDRCH1_0[25:24] DDRCH1_PART1A_WD | ||
CTRL_CORE_CONTROL_DDRCH1_0[23:21] DDRCH1_PART1B_I | PART1B | ddr1_dqs[0], ddr1_dqsn[0] |
CTRL_CORE_CONTROL_DDRCH1_0[20:18] DDRCH1_PART1B_SR | ||
CTRL_CORE_CONTROL_DDRCH1_0[17:16] DDRCH1_PART1B_WD | ||
CTRL_CORE_CONTROL_DDRCH1_0[15:13] DDRCH1_PART2A_I | PART2A | ddr1_d[15:8], ddr1_dqm[1] |
CTRL_CORE_CONTROL_DDRCH1_0[12:10] DDRCH1_PART2A_SR | ||
CTRL_CORE_CONTROL_DDRCH1_0[9:8] DDRCH1_PART2A_WD | ||
CTRL_CORE_CONTROL_DDRCH1_0[7:5] DDRCH1_PART2B_I | PART2B | ddr1_dqs[1], ddr1_dqsn[1] |
CTRL_CORE_CONTROL_DDRCH1_0[4:2] DDRCH1_PART2B_SR | ||
CTRL_CORE_CONTROL_DDRCH1_0[1:0] DDRCH1_PART2B_WD | ||
CTRL_CORE_CONTROL_DDRCH1_1[31:29] DDRCH1_PART3A_I | PART3A | ddr1_d[23:16], ddr1_dqm[2] |
CTRL_CORE_CONTROL_DDRCH1_1[28:26] DDRCH1_PART3A_SR | ||
CTRL_CORE_CONTROL_DDRCH1_1[25:24] DDRCH1_PART3A_WD | ||
CTRL_CORE_CONTROL_DDRCH1_1[23:21] DDRCH1_PART3B_I | PART3B | ddr1_dqs[2], ddr1_dqsn[2] |
CTRL_CORE_CONTROL_DDRCH1_1[20:18] DDRCH1_PART3B_SR | ||
CTRL_CORE_CONTROL_DDRCH1_1[17:16] DDRCH1_PART3B_WD | ||
CTRL_CORE_CONTROL_DDRCH1_1[15:13] DDRCH1_PART4A_I | PART4A | ddr1_d[31:24], ddr1_dqm[3] |
CTRL_CORE_CONTROL_DDRCH1_1[12:10] DDRCH1_PART4A_SR | ||
CTRL_CORE_CONTROL_DDRCH1_1[9:8] DDRCH1_PART4A_WD | ||
CTRL_CORE_CONTROL_DDRCH1_1[7:5] DDRCH1_PART4B_I | PART4B | ddr1_dqs[3], ddr1_dqsn[3] |
CTRL_CORE_CONTROL_DDRCH1_1[4:2] DDRCH1_PART4B_SR | ||
CTRL_CORE_CONTROL_DDRCH1_1[1:0] DDRCH1_PART4B_WD | ||
CTRL_CORE_CONTROL_DDRCH1_2[23:21] DDRCH1_PART7A_I | PART7A | ddr1_ecc_d[7:0], ddr1_dqm_ecc |
CTRL_CORE_CONTROL_DDRCH1_2[20:18] DDRCH1_PART7A_SR | ||
CTRL_CORE_CONTROL_DDRCH1_2[17:16] DDRCH1_PART7A_WD | ||
CTRL_CORE_CONTROL_DDRCH1_2[15:13] DDRCH1_PART7B_I | PART7B | ddr1_dqs_ecc, ddr1_dqsn_ecc |
CTRL_CORE_CONTROL_DDRCH1_2[12:10] DDRCH1_PART7B_SR | ||
CTRL_CORE_CONTROL_DDRCH1_2[9:8] DDRCH1_PART7B_WD | ||
EMIF2 Pads | ||
CTRL_CORE_CONTROL_DDRCACH2_0[31:29] DDR3CH2_PART0_I | PART0 | ddr2_casn, ddr2_rasn, ddr2_rst, ddr2_wen, ddr2_csn[0], ddr2_cke, ddr2_odt[0] |
CTRL_CORE_CONTROL_DDRCACH2_0[28:26] DDR3CH2_PART0_SR | ||
CTRL_CORE_CONTROL_DDRCACH2_0[25:24] DDR3CH2_PART0_WD | ||
CTRL_CORE_CONTROL_DDRCACH2_0[23:21] DDR3CH2_PART5A_I | PART5A | ddr2_a[15:0] |
CTRL_CORE_CONTROL_DDRCACH2_0[20:18] DDR3CH2_PART5A_SR | ||
CTRL_CORE_CONTROL_DDRCACH2_0[17:16] DDR3CH2_PART5A_WD | ||
CTRL_CORE_CONTROL_DDRCACH2_0[15:13] DDR3CH2_PART5B_I | PART5B | ddr2_ba[0], ddr2_ba[1], ddr2_ba[2] |
CTRL_CORE_CONTROL_DDRCACH2_0[12:10] DDR3CH2_PART5B_SR | ||
CTRL_CORE_CONTROL_DDRCACH2_0[9:8] DDR3CH2_PART5B_WD | ||
CTRL_CORE_CONTROL_DDRCACH2_0[7:5] DDR3CH2_PART6_I | PART6 | ddr2_ck, ddr2_nck |
CTRL_CORE_CONTROL_DDRCACH2_0[4:2] DDR3CH2_PART6_SR | ||
CTRL_CORE_CONTROL_DDRCACH2_0[1:0] DDR3CH2_PART6_WD | ||
CTRL_CORE_CONTROL_DDRCH2_0[31:29] DDRCH2_PART1A_I | PART1A | ddr2_d[7:0], ddr2_dqm[0] |
CTRL_CORE_CONTROL_DDRCH2_0[28:26] DDRCH2_PART1A_SR | ||
CTRL_CORE_CONTROL_DDRCH2_0[25:24] DDRCH2_PART1A_WD | ||
CTRL_CORE_CONTROL_DDRCH2_0[23:21] DDRCH2_PART1B_I | PART1B | ddr2_dqs[0], ddr2_dqsn[0] |
CTRL_CORE_CONTROL_DDRCH2_0[20:18] DDRCH2_PART1B_SR | ||
CTRL_CORE_CONTROL_DDRCH2_0[17:16] DDRCH2_PART1B_WD | ||
CTRL_CORE_CONTROL_DDRCH2_0[15:13] DDRCH2_PART2A_I | PART2A | ddr2_d[15:8], ddr2_dqm[1] |
CTRL_CORE_CONTROL_DDRCH2_0[12:10] DDRCH2_PART2A_SR | ||
CTRL_CORE_CONTROL_DDRCH2_0[9:8] DDRCH2_PART2A_WD | ||
CTRL_CORE_CONTROL_DDRCH2_0[7:5] DDRCH2_PART2B_I | PART2B | ddr2_dqs[1], ddr2_dqsn[1] |
CTRL_CORE_CONTROL_DDRCH2_0[4:2] DDRCH2_PART2B_SR | ||
CTRL_CORE_CONTROL_DDRCH2_0[1:0] DDRCH2_PART2B_WD | ||
CTRL_CORE_CONTROL_DDRCH2_1[31:29] DDRCH2_PART3A_I | PART3A | ddr2_d[23:16], ddr2_dqm[2] |
CTRL_CORE_CONTROL_DDRCH2_1[28:26] DDRCH2_PART3A_SR | ||
CTRL_CORE_CONTROL_DDRCH2_1[25:24] DDRCH2_PART3A_WD | ||
CTRL_CORE_CONTROL_DDRCH2_1[23:21] DDRCH2_PART3B_I | PART3B | ddr2_dqs[2], ddr2_dqsn[2] |
CTRL_CORE_CONTROL_DDRCH2_1[20:18] DDRCH2_PART3B_SR | ||
CTRL_CORE_CONTROL_DDRCH2_1[17:16] DDRCH2_PART3B_WD | ||
CTRL_CORE_CONTROL_DDRCH2_1[15:13] DDRCH2_PART4A_I | PART4A | ddr2_d[31:24], ddr2_dqm[3] |
CTRL_CORE_CONTROL_DDRCH2_1[12:10] DDRCH2_PART4A_SR | ||
CTRL_CORE_CONTROL_DDRCH2_1[9:8] DDRCH2_PART4A_WD | ||
CTRL_CORE_CONTROL_DDRCH2_1[7:5] DDRCH2_PART4B_I | PART4B | ddr2_dqs[3], ddr2_dqsn[3] |
CTRL_CORE_CONTROL_DDRCH2_1[4:2] DDRCH2_PART4B_SR | ||
CTRL_CORE_CONTROL_DDRCH2_1[1:0] DDRCH2_PART4B_WD |