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.
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: tinyclunx33_zephyr_example.