News:

Attention: For security reasons,please choose a user name *different* from your login name.
Also make sure to choose a secure password and change it regularly.

Main Menu

USB design question on TE0720

Started by dbarth, October 22, 2015, 12:14:18 PM

Previous topic - Next topic

dbarth

Hi,

I would like to drive both a USB device, like a Wifi dongle, and act as a USB mass storage peripheral with a TE0720 module.

I can use the standard USB0 controller and lines with Wifi. I can also switch the kernel configuration to load the mass storage drivers and reverse the USB controller role.

However, I can't manage to activate the 2nd USB controller in the Zynq, and still be able to boot : resolving the MIO lines conflicts forces me to remove some of the default peripherals (SPI, i2C, SD), and then my Vivado/Petalinux generated FSBL won't boot.

On top of that, I really wonder what the electric requirements are for connecting a 2nd USB /controller/ on that standard module: do I need to had additional circuitry? can I hook up into the same ULPI module and use the 2 USB modes simultaneously ? Or is the AXI USB IP a better alternative to reach my goal?

In short: what's the simplest way to have 2 different USB ports ?

Antti Lukats

if you read Xilinx ZYNQ documents you can see that what you want really is not possible.


1) PS USB IP can not be used via EMIO mux, this is written in Xilinx docs
2) you can not map 2 PS USB IP core to one ULPI, and if it would really make NO SENSE and would yield in unusable design
3) you can not connect more than 1 device to each host port, this is USB basics

There are very few ZYNQ boards available with 2 USB PHY, the main reason is that using 2 USB phy would prevent the SD card boot option for zynq.

We have only one high end board with 2 ULPI phys.

USB on fabric is possible, if the price of the IP fits the budget.



dbarth

Hmm, I was getting the feeling it was not obvious, but now it's clearer !

So only a custom TE0720, with a second ULPI would allow simultaneous use of 2 totally distinct ports and modes (device AND host).

I guess the simplest is to have a switch, and electrically remap the USB lines to a 2nd connector based on the selected mode of operation (device OR host). And use OTG or reload host or device drivers to re-initialize the controller into a different mode.