tinyCLUNX33
System on Module with CrosslinkU-NX
|
The LIFCL-33U FPGA part of the CrosslinkU-NX series contains a hard USB3 core capable of 5 Gbit/s transfers.
An external PHY is not required as the LIFCL-33U provides an integrated USB2 and USB3 PHY.
For USB2 FullSpeed (12 Mbit/s) and USB2 HighSpeed (480 Mbit/s) operation, the two USB D+/- pins can be routed to a connector, with proper ESD protection.
For USB3 SuperSpeed (5 Gbit/s) operation, the two USB SS TX+/- and two USB SS RX+/- pins all need to be routed to a connector, with proper ESD protection.
In the case of Type-C, an intermediate Type-C management chip can optionally be used to offer extended power capability of the device, but is not required if ignoring the extra Type-C functions.
A CPU core is preferred to manage the Lattice USB23 register interfae.
The data flow from the source to the USB bus is:
USB webcam: USB23 directly reading from the camera ImageSensor:
USB serial: USB23 reading from internal memory:
The RTL Reference Design implements this entire system, and the data flow can be controlled by software, which covers the enumeration and subsequent transfer of data with the USB endpoints.
A Zephyr driver (private repository for now) for the Lattice USB23 core was written, which is comparable in hardware interface with the Synopsys DWC3 core, which is used as specification the driver.
It can be selected at build-time like any other USB driver in Zephyr.
It implements the new Zephyr USB Device API known as device_next
.
It complies to the Zephyr driver API, and the general documentation can be used for configuring USB.
TODO: Send a merge request for the Zephyr driver and link it there
An example Zephyr firmware with the USB core enabled is provided as example: zepyr_cdc_raw
.