9.2.2.1 ULPI (UTMI+ Low Pin Interface) I/O Interface

The SmartFusion 2 USB OTG controller communicates with the external ULPI PHY device using this interface. As shown in the following figure, the ULPI interface is routed through the MSIO ports. These I/Os are dedicated to the USB ULPI interface only. When the USB OTG controller is selected during configuration, these I/Os are not multiplexed with other peripherals.

For interfacing with ULPI PHY, the USB MSIO signals are connected to four separate mutually exclusive I/O groups: USBA, USBB, USBC, and USBD I/O groups. In M2S050 devices, only the USBD I/O group is available; whereas in the M2S025 and M2S010, only the USBA, USBB, and USBC I/O groups are available.

Table 9-1. ULPI Interface Signals at SmartFusion 2 External I/Os
Signal Name Direction Description
ULPI_DATA[7:0] In/Out ULPI input data bus to ULPI link wrapper
ULPI_DIR In Controls the direction of the data bus. The PHY must drive this signal high when it has the data to be transferred. Otherwise, the PHY must drive this signal low.
ULPI_STP Out Data end control, driven high for one XCLK cycle to indicate the end of a transmit operation. It can also be used to stop the current receive operation.

Asynchronous path from DIR.

ULPI_NXT In Data control, driven high by the PHY to throttle all data types except the interrupt data and the results of register reads.
ULPI_XCLK In Transceiver macrocell clock; 60 MHz
Figure 9-3. Block Diagram for Connections between USB Controller and ULPI PHY through MSS

The ULPI interface is connected to the I/Os of the device up to four separate sets of I/Os. The function of each I/O in these sets is shared with another MSS function. These I/O groups allow flexibility to the user in deciding which MSS peripherals to connect to the I/Os. The four USB I/O groups are referred to as USB_A, USB_B, USB_C and USB_D. User can try each USB I/O group and see which pins cause conflict and iterate through different assignments with the conflicting peripherals and GPIO. The availability of these USB I/O groups are device-dependent, as specified in the following table.

Table 9-2. USB IO Group Availability
DeviceUSB_AUSB_BUSB_CUSB_D
M2S005NoYesNoNo
M2S010YesYesYesNo
M2S025YesYesYesNo
M2S050 / 060 / 090 / 150YesYesYesYes

For more information on USB I/O group, see PPAT documents available at SmartFusion 2 Documentation (PPAT documents are grouped under the section Pinout/Packaging in the above mentioned site).