EZ-USB FX3 Technical Reference Manual, Document Number: 001-76074 Rev. *F 88
Universal Serial Bus (USB)
Devices may asynchronously transmit notifications to the host. These notifications are used to convey a change in the device
state. A host transmits a special packet header to the bus that includes the host's timestamp. The value in this packet is used
to keep devices in synchronization with the host. In contrast to other packet types, the timestamp packet is forwarded down all
paths not in a low-power state. The timestamp packet transmission is scheduled by the host at a specification-determined
period.
The FX3 USB 3.0 function controller has a dedicated register interface for the protocol layer as shown in the following code.
The register level programming and the interrupt handling is performed by the USB driver in the FX3 SDK.
/* FX3 USB 3.0 Function Protocol Layer Register Interface */
#define USB3PROT_BASE_ADDR (0xe0033400)
typedef struct
{
uvint32_t prot_cs; /* 0xe0033400 */
uvint32_t prot_intr; /* 0xe0033404 */
uvint32_t prot_intr_mask; /* 0xe0033408 */
uvint32_t reserved0[3];
uvint32_t prot_lmp_port_capability_timer; /* 0xe0033418 */
uvint32_t prot_lmp_port_configuration_timer; /* 0xe003341c */
uvint32_t reserved1[2];
uvint32_t prot_framecnt; /* 0xe0033428 */
uvint32_t reserved2;
uvint32_t prot_itp_time; /* 0xe0033430 */
uvint32_t prot_itp_timestamp; /* 0xe0033434 */
uvint32_t prot_setupdat0; /* 0xe0033438 */
uvint32_t prot_setupdat1; /* 0xe003343c */
uvint32_t prot_seq_num; /* 0xe0033440 */
uvint32_t reserved3[6];
uvint32_t prot_lmp_received; /* 0xe003345c */
uvint32_t reserved4[5];
uvint32_t prot_ep_intr; /* 0xe0033474 */
uvint32_t prot_ep_intr_mask; /* 0xe0033478 */
uvint32_t rsrvd0[33];
uvint32_t prot_epi_cs1[16]; /* 0xe0033500 */
uvint32_t prot_epi_cs2[16]; /* 0xe0033540 */
uvint32_t prot_epi_unmapped_stream[16]; /* 0xe0033580 */
uvint32_t prot_epi_mapped_stream[16]; /* 0xe00335c0 */
uvint32_t prot_epo_cs1[16]; /* 0xe0033600 */
uvint32_t prot_epo_cs2[16]; /* 0xe0033640 */
uvint32_t prot_epo_unmapped_stream[16]; /* 0xe0033680 */
uvint32_t prot_epo_mapped_stream[16]; /* 0xe00336c0 */
uvint32_t prot_stream_error_disable; /* 0xe0033700 */
uvint32_t prot_stream_error_status; /* 0xe0033704 */
} USB3PROT_REGS_T, *PUSB3PROT_REGS_T;
#define USB3PROT ((PUSB3PROT_REGS_T) USB3PROT_BASE_ADDR)