[FAQ] AM625 / AM623 / AM620-Q1 / AM62L / AM64x/ AM243x (ALV) / AM62Ax / AM62D-Q1 / AM62Px Design Recommendations / Commonly Observed Errors during Custom board hardware design – eMMC MEMORY Interface

Other Parts Discussed in Thread: AM62D-Q1, AM62L, AM62P, AM62A7, AM6442, STRIKE

Hi TI Experts,

Is there a list of design recommendations or commonly observed errors  for eMMC MEMORY Interface during Custom board hardware design?

Below are some common queries i have 

1. Pullup recommendation 

2. Power supply and Sequencing 

3. Series resistor for eMMC clock output from the processor

4.Series resistors for Data and command signals 

5. Calibration resistor 

6. Alternate Part recommendations

7. Are these recommendations valid for AM64x

8. Is the  reset ANDing logic for the device required and any recommendations?

9. What is the default drive strength and can the drive strength be controlled?

  • Hi Board designers, 

    Refer below inputs:

    1. Pullup recommendation 

    The Pullup recommendations depend on the eMMC PHY implementation 

    AM62x, AM62L, AM62Ax and Am62D-Q1 implement soft PHY

    In soft PHY implementation, the MMC0 pins have alternate functions that can be configured.

    Connect external pullup resistor for the data line (MMC0_DAT0) (close to eMMC device).
    eMMC device (as long as the eMMC device is compliant to the eMMC standard) has the pullups enabled for data signals
    D7..D1 by default. The eMMC device will turn off its D3..D1 pulls when entering 4-bit mode and D7..D1 pulls when entering 8-bit mode.
    The eMMC host software should turn on the respective DAT pulls when it changes the mode.

    AM62Px / AM64x / AM243x (ALV) implements a hard PHY

    In hard PHY implementation, the MMCO pins have dedicate eMMC functionality. When not used, it is recommended to connect these pins as per the pin connectivity recommendations of the specific device data sheet.

    No external pull resistors are required for MMC0 since the PHY includes and dynamically controls the internal pull resistors as required for an eMMC.
    Pullups for D7..D0 and CMD are internally enabled during reset and after reset by the processor eMMC PHY.
    Pulldown is enabled for the DS pin and the clock output is driven low during reset and by the SS (The subsystem selected with MUXMODE determines the output buffer state) after reset.
    There are no PADCONFIG registers associated with the MMC0 pins.
    The internal pulls associated with the MMC0 pins are dynamically controlled by the MMC0 host and PHY.
    Provision for External pulls are not a requirement for the eMMC data, CMD, DS and the CLK signals.

    2. Power supply and Sequencing 

    The recommendation is to power the processor IO supply rail and the eMMC device from the same power source

    3. Series resistor for eMMC clock output from the processor

    it is  a good idea to place a series termination resistor as close as possible to the MMC0_CLK pin in case it is needed to dampen reflections caused by an impedance mismatch.

    4.Series resistors for Data and command signals 

    This is not a requirement. Optionally the series resistors can be included to  improve signal integrity and custom board design/layout dependent.

    5. Calibration resistor 

    Refer to the device specific data sheet for the recommendations including the resistor value.

    6. Alternate Part recommendations

    TI doesn't make specific component recommendations.
    From the hardware perspective the MMC0 port on the AM6 devices are  compatible with the eMMC standards. So there should not be any hardware issue operating with any eMMC compliant device. See the MMC0 timing section of the datasheet for the eMMC data transfer modes supported.

    7. Are these recommendations valid for AM64x

    AM64X implements hard PHY similar to AM62P. AM62P and the general queries 2..6 can be followed.

    8. Is the  reset ANDing logic for the device required and any recommendations?

    The ANDing logic provides flexibility to reset the attached memory device. Refer SK schematics for implementation.
    RESETSTATz output will satisfy the power-on and warm reset functions and can be used to reset the attached device. Ensure IO level compatibility between the RESETSTATz output and the attached device reset input. You will need a two input AND gate to insert the software controlled GPIO reset function for the case where software needs to initiate a reset to only
    A pullup and an isolation resistor is recommended for the SoC IO output connected to the ANDing logic near to the AND gate.
    When ANDing logic is not used, verify the IO compatibility of the SoC reset status output used and the attached memory device.

    9. What is the default drive strength and can the drive strength be controlled?

    These are typically about 40 ohms, but the customer should be using the IBIS model to determine the drive strength of the pins. 
    The drive strength must remain in the default state since this is the only condition used during timing closure of the peripherals.

    (+) [FAQ] AM62A7-Q1: SDIO driver strength change - Processors forum - Processors - TI E2E support forums

    Drive strength is a function of changing the source impedance of an output buffer, where a lower source impedance results in a higher drive and a higher source impedance results in a lower drive. I would prefer to say we are changing source impedance rather than drive strength since this is what actually happens in the IO cell.

    (+) [FAQ] AM62A7-Q1: SDIO driver strength change - Processors forum - Processors - TI E2E support forums

    The AM62A7 eMMC port was timing closed with the default drive strength. Therefore, we do not recommend changing the drive strength since this could introducing signal timing issues with the attached eMMC device

    We already know that; We will only try to change the drive strength. Please help share how to change?

    Currently, there are no plans to support drive strength changes on the AM62Ax device.

    Are there any suggestions to solve the problem of EMC-RE exceeding the standard caused by EMMC CLOCK?

    You should investigate your PCB layout to determine why this signal is radiating. This typically occurs when there is a PCB trace impedance discontinuity, which also introduces signal distortion.
    What does Sdhccore mean? How to understand?
    This appears to be a reference to the MMCSD host controller, where it has the capability of changing the drive strength of output buffer to be one of the values defined in the eMMC standard. The output buffers being used to implement the AM62Ax eMMC port does not support all of the drive strengths defined in the eMMC standard. Therefore, the host controller drive strength control function is not implemented. The registers are there, but they have no impact on drive strength. The output buffer drive strength is fixed to 40 ohms.

    Regards,

    Sreenivasa

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Refer below FAQs:

    Rise/Fall Time Requirement of MMC_CLK

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1483440/am623-rise-fall-time-requirement-of-mmc_clk/5696702

    We could not find the rise/fall time requirement of MMC_CLK from the datasheet.

    Could you help provide a recommended range for Rise/Fall Time Requirement of MMC_CLK please?

    We define timing requirements for AM62x inputs and define timing characteristics for AM62x outputs.

    We do not define any rise/fall switching characteristics associated with AM62x outputs because these characteristics are very dependent on the specific system implementation. The system designer must use the IBIS model of each device connected to a signal and the PCB signal trace extractions in a simulation to determine the rise/fall time of any signal being sourced by AM62x.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Refer below explanation regrading eMMC interface

    The AM62x IOs associated with the MMC0 port will be turned off until software initializes them. This means any signals without internal pulls will be floating until software boots and initializes the IOs. The eMMC standard requires the eMMC device to have internal pulls on the DAT[7:1] pins, but the other pins do not have internal pulls. We recommend external pull-ups on the CMD and DAT0 signals and an external pull-down on the CLK signal. The eMMC standard also says 10k pull-ups are the min value, so we do not recommend using a 10k resistor because it may be less than 10k. We typically recommend using 47k resistors to minimize loading on the signals since the pulls are only used to hold the signals in a valid logic state when not driven. Therefore, I suggest changing the value of your pull resistors and installing the pullup for CMD.  I do not expect these changes to have any effect on the issue you are seeing, but these changes should be made to ensure long-term device reliability.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Refer information related to eMMC clock:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1466492/faq-am625-is-the-emmc-clocks-maintained-when-read-and-write-operations-are-finished

    I would like to know if the AM6352 continuously maintains the eMMC clock or if it stops it when it finishes the read and write processes.

    Why asking ?
    In most eMMC the “patrol” that refreshes and monitors the health of the memory works when it has the clock running.


    If so, I was able to confirm the MMCSD host controller implemented in AM62x devices has the capability to pause the clock when there are no transfers, but that function is turned off by default.

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1298166/am623-emmc-clock-output/4929951

    The eMMC standard allows the host to stop the clock during read operations. The host controller implemented in AM62x uses this feature when the internal buffer is full. In these circumstances, the host controller will stop the clock in order to avoid buffer overrun condition.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Additional references:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1089730/am4378-intermediate-potential/4041586

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1090498/am4378-intermediate-potential-during-reset

    e2e.ti.com/.../2505155

    Your first question cannot be answered without including actual PCB delays in any peripheral timing analysis.

    There may be cases where a resistor/capacitor network can be used to delay a signal and help with timing, but this approach can be problematic. Inserting additional signal trace on the PCB to adjust timing may be a better approach. 

    Timing requirements are given to the SOC design team and they make internal adjustments with the goal of meeting the requirements. The values provided are based on the respective peripheral industry standard, when applicable, and includes some assumptions about expected PCB trace delays. Once silicon is available, the product engineering team characterizes timing of the various peripherals. The data sheet values represent characterization data. 

    In many cases there are trade-offs in a design that need to be considered and what must be done to benefit one function may compromising another. When this happens it may not be possible to meet all of our timing goals. So we publish the characterized values in the data sheet and leave some timing adjustments to the systems/PCB designer. 

    This is why timing values may vary from one device to another. This is also the reason timing analysis should be performed on every peripheral using actual PCB delays. 

    For the case mentioned in your E2E post, the effect of attached device min delay on the processor hold time should not be a problem since the processor to device clock delay and device to processor CMD/DAT delay will provide additional margin. However, the effect of processor min delay on the attached device hold time will be a problem if the system designer doesn’t insert at least 1.2ns additional delay on the CMD/DAT traces. 

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Information related to eMMC size

    How much maximum memory size does AM6442 supports for eMMC memory?

    There is no size limitation.  MMC0  (emmc controller) interface is compliant with the JEDEC eMMC electrical standard v5.1 (JESD84-B51)

    I checked with the hardware and the software experts, and the answer is there are no limits or limitations.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Information related to clock pulldown 

    e2e.ti.com/.../faq-am625-what-s-the-purpose-for-the-pull-down-r-on-mmc_clk

    May I know what the purpose for the pull down R on MMC_CLK signal on TI EVM? May I know what the purpose for the pull down R on MMC_CLK signal on TI EVM? 
    Most of the IOs associated with the AM62x device default to the off state, which means any attached device input without an internal pull resistor would be floating until software configures the pin to drive the signal. We use an external pull-down rather than an external pull-up since the clock signal is held in a low logic state when paused.

     Because there are cases where the clock is stopped or paused in a low logic state and the pull-down option is consistent with this logic state.

    (+) AM623: Problem Detecting eMMC at HS200 speed during 1.8V voltage switch. - Processors forum - Processors - TI E2E support forums

    The effect you are describing by adding a series termination resistor seems to indicate a signal integrity issue. You mentioned testing modules. Does this mean the eMMC device is on a different PCB that the processor with eMMC host? If so, does your system maintain a constant signal trace impedance as the MMC0 signal transition across any board-to-board connector? Does any of your MMC0 signals cross split power/ground planes or transition from one reference plane to another such that a constant trace impedance is not maintained? 

    Add a capacitor to any of the MMC0 signals can impact timing by slowing the signal transition relative to the other signals. This type of imbalance in signal load was not accounted for doing timing closure of the device. Getting improved results by adding a capacitor may indicate you have a timing issue in your system. It is acceptable to add capacitors as a debug step, but adding capacitors on the MMC0 signals should not be done in a production system. Did you ensure the signal trace delays in your system are within the limits defined in the datasheet MMC0 Timing Conditions table?

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Information related to clock measurement

    What you observe on this signal depends on where you connected the probe, the bandwidth of your probe/scope, and quality of your scope probe ground. 

    You will need a very high bandwidth probe and scope to observe short over-shoot, under-shoot, and non-monotonic events on the signal. I recommend using a low capacitance FET probe with a very-very short low loop inductance ground.

    You will see a mid-supply step on the signal when probing near the source. This occurs because the output impedance of the MMC0_CLK output buffer, series termination resistor, and characteristic impedance of the PCB signal trace creates a voltage divider. The voltage divider output is applied to the source end of the PCB signal trace. This voltage propagates down the trace to the far end where it encounters a high impedance load which causes a in-phase reflection that returns to the source. Therefore, the voltage transition observed on the far end will be a continuous transition between VSS and VDD. The is not the case for the source end, as it steps to a mid-supply determined by the voltage divider values and the transition only continues to VDD or VSS once the reflection returns from the far end. You need to select a series resistor value that allows the MMC0_CLK pin to step through the voltage of (VDDSHV4 / 2) without pause. I suggest the step observed on the MMC0_CLK pin should be at least 200mv above (VDDSHV4 / 2) on the rising edge and at least 200mv below (VDDSHV4 / 2) on the falling edge.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Information related to eMMC reset configuration 

    [FAQ] AM62x: How to check and configure eMMC flash RST_N signal to support WARM_RESET from eMMC booting on AM62x-SK E2

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1168342/faq-am62x-how-to-check-and-configure-emmc-flash-rst_n-signal-to-support-warm_reset-from-emmc-booting-on-am62x-sk-e2

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1500901/tda4vm-this-is-a-question-about-emmc-boot/5769543

    In case of eMMC ,reset can be done in 3 ways:

    • CMD0
    • HW_Reset
    • Power cycle 

    CMD0:(S/W RESET)

    Sending CMD 0 with specfic arguments will do software reset of the eMMC .

    H/W reset:

    The h/w reset can be done by sending the RST_n signal .

    By default, the RST_n signal is temporarily disabled in the dev

    ice.
    • The host must set ECSD register byte 162, bits[1:0] to 0x1 to enable this functionality before the host can use it.

    I am also attaching the JEDEC SPEC FOR EMMC which contains the details regarding resetting the eMMC which I would recommend going through:

    JESD84-B51 (1).pdf

    Please check below and let us know any suggestions.

    It is not clear why the external pull-up resistors associated with CMD and DAT0 signals were highlighted, but I will explain why they are recommended. The AM62x IOs used for MMC0 will power-up in the off state until software configures them. eMMC devices are required to have internal pull-up resistors on DAT[7:1], but they are not required to have internal pull resistors on CLK, CMD, and DAT0. External pull resistors are recommended for CLK, CMD, and DAT0 to prevent floating inputs on the memory device while waiting for software to configure the AM62x IOs.

    My only concern with the connectivity shown above is related to the eMMC device reset. I assume "NON" means do not install this component, and I see "NON" on components R237 and TR14. It is not possible to reset the eMMC device without these devices installed. The eMMC device reset source should be designed to assert reset during power-on and release reset by default, so it is ready to communicate with the AM62x host once it is initialized by software. We also recommend a reset implementation that automatically resets the eMMC device if there is a watchdog or software initiated reset to the AM62x device, so the eMMC device is also reset at the same time. It is not possible for me to comment on this implementation since this schematic doesn't show the source of eMMC_RST. However, the eMMC_RST source is not relevant when R237 and TR14 are not installed.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Information related to eMMC implementation for AM64x and AM62x

    (39) SK-AM62: eMMC: Cannot write to MMCSD0_SS_PHY_CTRL_1/2/3 registers - Processors forum - Processors - TI E2E support forums

    The MMC0 port on AM64x has a analog PHY with a DLL that is used to insert appropriate delays and controls most pin functions.  This port only supported eMMC signal functions operating at 1.8V.

    The MMC1 port on AM64x uses a different method to insert delays and the IOs associated with this port are implemented with dual-voltage LVCMOS IO cells that were optimized for MMC/SD signal functions. This port supports multiple signal functions via pin multiplexing and they can operating at 1.8V or 3.3V.

    The MMC0 port on AM62x is basically an 8-bit implementation of the AM64x and AM62x MMC1 port.

    MMC0 on AM62x supports several eMMC and SD Card standards. Please refer to the MMCSD timing sub-section of the AM62x datasheet Timing and Switching Characteristics section for data transfer modes supported.

    The MMC0 port does not provide the card detect and write protect inputs that would typically be connect to an SD Card connector. This port only supports SD Card data transfer modes to allow connectivity of embedded SDIO devices like WiFi. This port supports 1.8V or 3.3V, but 1.8V should be used in most cases since 1.8V provides more timing margin, which may be required for the faster data transfer modes.

    The eMMC standard requires a device to provide internal pull-ups on DAT[7:1] by default.  These internal pull-up resistors will hold the DAT[7:1] signals in a valid logic state until the device is put into 4-bit or 8-bit mode, where the internal pull-ups are turned off on DAT[3:1] when placed in 4-bit mode or DAT[7:1] when placed in 8-bit mode. The AM62x internal pull-up resistors need to be turned on for the respective signals before the eMMC device is placed in 4-bit or 8-bit mode so signal are not allowed to float. A value of 0x60000 will turn on the AM62x internal pull-up and enable the input buffer for respective pins. 

    We recommend an external pull-down resistor on CLK, and an external pull-up resistor on the DAT0 and CMD signals. This is required to hold these signals in a valid logic state since our IOs associated with these signals are off by default after power is applied, and the eMMC device does not have internal pulls on these pins. If you follow this recommendation, the internal pulls should remain off for each of these pins. A value of 0x40000 will turn on the internal pull-down and enable the input buffer on CLK. It is not clear why the internal pull-down and  input buffer is being turned on for CLK since we expect an external pull-down on this signal and the pin operates as an output only. As mentioned above a value of 0x60000 will turn on the AM62x internal pull-up and enable the input buffer for respective pins. So it is not clear why the internal pull-up is being turned on for DAT1 and CMD since we expect an external pull-up on these signals. 

    I would not expect there to be an issue with turning on the input buffer for CLK, but it is not necessary.

    I also do not expect an issue turning on internal pulls for signals with external pulls, as long as the external pulls are not in contention with the internal pulls and the total resistance doesn't go below the minimum pull resistance defined by the eMMC standard.

    Regards,

    Sreenivasa

  • Hi Board designers, 

    Inputs related to pullup configuration 

    The AM62x / AM62D-Q1 / AM62Ax / AM62Px / AM62lL processor IOs associated with the MMC0 port will be turned off until software initializes them. This means any signals without internal pulls will be floating until software boots and initializes the IOs. The eMMC standard requires the eMMC device to have internal pulls on the DAT[7:1] pins, but the other pins do not have internal pulls. We recommend external pull-ups on the CMD and DAT0 signals and an external pull-down on the CLK signal. The eMMC standard also says 10k pull-ups are the min value, so we do not recommend using a 10k resistor because it may be less than 10k. We typically recommend using 47k resistors to minimize loading on the signals since the pulls are only used to hold the signals in a valid logic state when not driven.

    It is not clear why the external pull-up resistors associated with CMD and DAT0 signals were highlighted, but I will explain why they are recommended. The AM62x IOs used for MMC0 will power-up in the off state until software configures them. eMMC devices are required to have internal pull-up resistors on DAT[7:1], but they are not required to have internal pull resistors on CLK, CMD, and DAT0. External pull resistors are recommended for CLK, CMD, and DAT0 to prevent floating inputs on the memory device while waiting for software to configure the AM62x IOs.

    (+) AM625: AM6254 don’t start up from eMMC in -30 degree. - Processors forum - Processors - TI E2E support forums

    You should have an external pull-up on DAT0 because the eMMC device doesn't have an internal pull on its DAT0 input. The eMMC standard requires any compliant eMMC device to have internal pulls on DAT[7:1].

    The AM62x device defaults with most of its pins turned off by default since many signal functions are multiplexed to pins and TI does not know how will be used until system aware software initializes the device. What I mean by turned off is the input buffer is disabled, the output buffer is disabled, and internal pulls are turned off. In your custom board the DAT0 signal will be floating until software initializes the AM62x MMC0_DAT0 pin. This is not a problem for AM62x at this point because the input buffer associated with MMC0_DAT0 is turned off, but it may be a problem for the eMMC device.

    This will be a problem for the AM62x once software enables the input buffer associated with this pin and this signal is not actively driven by AM62x or the eMMC device.

    Your product design must never allow any AM62x enabled input to float to a mid-supply voltage. There may be long-term reliability issues associated with any enabled input buffer that is allowed to float for extended periods of time with a potential that is greater than VILSS and less than VIHSS. You need to minimize the accumulated time a signal spends in the region between VILSS and VIHSS.

    (+) [FAQ] AM625 / AM623 / AM620-Q1 / AM625-Q1 / AM625SIP: eMMC0_DAT0 not enabled pull up by ROM - Processors forum - Processors - TI E2E support forums

    The eMMC standard requires all eMMC devices to have an internal pull-up that is turned on by default for each DAT[7:1] pin. The eMMC device will turn off the internal pulls on DAT[7:1] when it is configured to operate in 8-bit mode or turn off the internal pulls on DAT[3:1] when it is configured to operate in 4-bit mode. The software driver should turn on the respective AM62x internal pull-ups at the same time it configures the eMMC device to operate in 8-bit mode or 4-bit mode. This ensures the signals are not floating when not driven. External pull-ups are not necessary on the DAT[7:1] signals as long as the software driver is turning on the respective AM62x pull-ups at the appropriate time.

    The eMMC standard does not define any internal pulls for the other eMMC inputs because it assumes the device will be connected to a host that is driving or pulling these pins to a valid logic level as soon as power is applied. However, that is not the case for AM62x since most pins are shared with many signal functions. The shared pins will not know their assigned signal function until software boots and configures the respective PADCONFIG registers. The AM62x device turns off the IO transmitter, receiver, and internal pulls of most pins until software initializes them to the appropriate signal function. In the eMMC use case, the CLK, CMD, and DAT0 inputs would be floating until software initializes the IOs and the associated MMCSD host controller. Therefore, customers should have external pull-up resistors on CMD and DAT0, and an external pull-down resistor on CLK to prevent the eMMC inputs from floating while waiting for software to configure the AM62x pins.

    I suspect the pull-up is required on D0 to pull the signal high because the AM62x pin is configured to operate in open-drain mode during the initial communications with the eMMC device. The DO signal would never toggle high without the external pull-up.

    AM6442 requires no external pull resistors on the MMC0 interface, and that the processor will provide all required pull levels.  Is this also the case for the AM62A processors?

    No. You must connect an external pull-down on CLK, and external pull-ups on CMD and DAT0 to prevent these eMMC device inputs from floating until software initializes the host controller and AM62Ax IOs associated with MMC0. The eMMC standard requires an eMMC device to have internal pulls turned on by default on DAT[7:1], so these signals do not require an external pull-up resistor. Software should turn on the respective internal AM62Ax DAT pull-ups when the bus width is increased from 1-bit mode to 4-bit or 8-bit mode.

    This is required on AM62A because the IOs associated with MMC0 are implemented with standard dual-voltage LVCMOS IO cells with the capability of multiplexing additional signal functions to the respective device pins. Therefore, these MMC0 IOs are turned off by default since it is unknow what may be connected to these pins. That is not the case for AM64x since it's the MMC0 port is dedicated to eMMC.

    (+) AM623: eMMC clock output - Processors forum - Processors - TI E2E support forums

    (+) AM6442: MMC0_CLK default configuration? - Processors forum - Processors - TI E2E support forums

    The external pull requirements vary based on the PHY implemented for a specific host port and the attached device. The PHY implemented for the AM64x MMC0 port only supports eMMC devices and does not require external pulls to hold the attached device in a known state until the port is initialized because the MMC0_CLK pin is driven internal pulls are automatically turned on as soon as the AM64x device is powered. That is not the case for MMC1.  

    The SK-AM64 may have been designed before we finalized our external pull recommendations. No external pull resistors are required for MMC0 since the PHY includes and dynamically controls the internal pull resistors as required for an eMMC.

    We also need to strike the comment about MMC0_CLK operating as an output and input simultaneously from the hardware checklist.  I recently confirmed the PHY implemented in AM64x was changed such that it doesn't does not operate that way. It only operates as an output. However, it is still a good idea to place a series termination resistor as close as possible to the AM64x MMC0_CLK pin in case it is needed to dampen reflections caused by an impedance mismatch.

    This thread is assigned to someone from our software team. You will need to wait for him to address your software question about configuring internal pulls. However, it looks like the code you inserted above may be trying to configure pulls via a PADCONFIG register. If so, this is not going to work since the MMC0 internal pull resistors are not controlled by PADCONFIG registers.

    There are no PADCONFIG registers associated with the MMC0 pins. The internal pulls associated with the MMC0 pins are dynamically controlled by the MMC0 host and PHY. 

    (+) AM6412: eMMC Electrical Standard 5.1 - Processors forum - Processors - TI E2E support forums

    (+) AM62P5-Q1: P1: HW: Q131-1: Pull-up pull-downs on eMMC data lines - Processors forum - Processors - TI E2E support forums

    (+) AM6442: eMMC pull-ups necessary or not? - Processors forum - Processors - TI E2E support forums

    The JEDEC eMMC standard defines internal pulls to be implemented in the eMMC device for data lines DAT1-DAT7. Immediately after entering the 4-bit mode, the device disconnects the internal pull-ups for DAT1-DAT3. Correspondingly, immediately after entering to the 8-bit mode the device disconnects the internal pull-ups for DAT1–DAT7.

    The standard also defines host pull requirements for each signal except CLK, and says the host is expected to provide pull-ups to protect the CMD and DAT signals from floating when all device drivers are in a high-impedance state. Two pull-up types are defined for CMD, where ROD is switched on and off by the host synchronously to open-drain and push-pull mode transitions. The other option is a fixed RCMD pull-up when the host does not allow the switchable ROD implementation.

    The IO cells associated with AM64x MMC0_CMD, MMC0_DAT[7:0], and MMC0_DS pins have internal pulls which can be enabled via software. The MMC0 host controller does not dynamically control the internal pull-up/down for these IO’s. The internal pull-up will be turned on by default for MMC0_CMD and MMC0_DAT[7:0]. The internal pull-down will be turned on by default for MMC0_ DS. The internal pull-up/down functionality can be controlled via SW using the PHY Control 3 register inside the eMMC subsystem. MMC0_CLK does not have an internal pull-up/down since it is always driven. It is held low until SW driver writes to an MMR inside the controller to enable MMC0_CLK toggle.

    The description above describes how the MMC0 pins operate once AM64x has been released from reset. However, we have implemented circuits that force all AM64x IOs into an off state until all power supplies are ramped to valid levels and reset is released. Therefore, the CMD, DAT0, DS, and CLK signals will not be pulled to a valid logic state by AM64x until it is released from reset.

    We agree, external pull resistors should not be required for DAT1-DAT7 signals since the eMMC will have its internal pull-ups turned on until software tell the device to enter 4-bit or 8-bit mode. The eMMC standard does not mention a pull requirement for CLK because it expects the host to always drive this signal. Unfortunately, that will not be the case for AM64x while the system reset controller holds it in reset. Therefore, we recommend external pull-downs on CLK and DS, and external pull-ups on CMD and DAT0 to prevent the eMMC inputs from floating while AM64x is held in reset

    I received clarification from our design team, where they said the MMC0 IOs operate different than the other IOs while the device is held in reset. These IOs are not turned off during reset since they have a dedicated signal function. Other device IOs are turned off during reset since they support multiple signal function and we need to prevent any potential conflict with an attached device.

    The MMC0_CLK pin will be driven low during reset. So an external pull-down will not be required for this signal.

    The MMC0_DAT[7:0] pins will have their internal pull-ups turned on during reset. So an external pull-up will not be required for these signals.

    The MMC0_CMD pin will be driven high during reset. So an external pull-up will not be required for this signal.

    I did not receive any information about the state of the MMC0_DS pin during reset, so will ask for additional clarification.

    I just received clarification on the MMC0_DS pin. This pin will have an internal pull-down turned on during reset. So an external pull-down will not be required for this signal.

    In summary, external pull resistors are not required on any of the MMC0 signals.

    Regards,

    Sreenivasa

    Regards,

    Sreenivasa

  • Hi Board designers,

    Inputs regarding HS200

    (+) AM625: emmc HS200 Occasional IO errors - Processors forum - Processors - TI E2E support forums

    The HS200 data transfer mode requires the read data path to be tuned for optimum timing. This means HS200 read timing varies based on the final tuning results. Therefore, it is not possible to define the device input requirements for HS200.

    The eMMC standard requires an eMMC device to have internal pull-up resistors on DAT[7:1] turned on by default. The eMMC device will turn off the DAT[3:1] resistors once the device is switched to 4-bit mode, or will turn off the DAT[7:1] resistors once the device is switched to 8-bit mode. At this point the eMMC host must turn on its respective internal pull resistors, or external pulls must be used.

    We require external pulls on the CLK, CMD, and DAT0 signals to hold the eMMC inputs in a valid logic state because the AM62x IOs are turned off by default. The eMMC device internal resistors will hold the DAT[7:1] inputs in a valid logic state until software has initialized the peripheral.

    The eMMC boot code never enables the internal resistors on CLK, CMD, or DAT0 because they should already have external pulls as described above. However, it must turn on the AM62x DAT[7:1] internal resistors because the eMMC device will turn its internal resistors off once it enters 8-bit mode.

    The pull resistance value of the AM62x internal pulls is defined in the SDIO Electrical Characteristics table found in the datasheet. The pull resistance value of the eMMC device internal pulls is defined in the eMMC standard. The pull resistance of the external pull resistors should be selected to be compliant to the eMMC standard.

    FYI: There is an error in the eMMC Pin Usage table you inserted above. There is no pin named MMC0_CLKLB.

    We recommend an external pull-down on CLK, an external pull-up on CMD, and an external pull-up on DAT0. The resistors values should be in the range of 15k to 50k ohms.

    You only enable the AM62x internal pulls which are turned off in the eMMC device. The eMMC device will only turn off the DAT[3:1] resistors when the device is switched to 4-bit mode, so you would only need to turn on the AM62x internal pulls for DAT[3:1] when operating in 4-bit mode.  You would turn on the AM62x internal pulls for DAT[7:1] when operating in 8-bit mode.

    The AM62x internal pulls are controlled via the respective PADCONFIG register.

    Regards,

    Sreenivasa

  • Hi Board designers,

    Inputs related to the Pin attributes for MMC0 signals for AM64x and Am62Px

    AM62P5-Q1: HW:  Confirmation of MMC0 Pin specifications

    The MMC0 specs are not listed in the Data Sheet (SPRSP89_AM62Px_DS_4_26_2023.pdf).

    (1) Please tell me the "Pin Attributes" of MMC0.


    (2) Please tell me the specifications of "Electrical Characteristics" of eMMCPHY.

    The MUX MODE, DSIS, and MUX MODE AFTER RESET columns will remain blank for these pins since these cells in the table are not applicable because the pins are implemented with a hard macro PHY, which doesn't support the pin multiplexing logic.

    The HYS column should have a value of "No" since the input buffers associated with the PHY does not have hysteresis.

    The BALL STATE DURING RESET and BALL STATE AFTER RESET values will be as shown below:

    MMC0_CLK - On / Low / Off - On / SS / Off
    MMC0_CMD - On / Off / Up - On / SS / Up
    MMC0_DS - On / Off / Down - On / Off / Down
    MMC0_DAT[7:0] - On / Off / Up - On / SS / Up

    For electrical characteristics refer to the eMMCPHY Electrical Characteristics defined in the datasheet.

    Regards,

    Sreenivasa