USB protocol implementation

All usb related code lives inside the usb folder. The code is based on Daisho project.

I have implemented USB Iscohronous transfers. End Point 3 (EP3 IN) is Transport Stream endpoint that contains media data (raw transport stream). We send 1024 bytes data packets every microframe (every 125 usecs). This allows us to reach total speed:

1024 bytes * 1/0.000125 = 8192000 bytes/sec or 62.5 Mbit/sec

Also, USB standby signalling implemented. This functionality important for using “Joker TV” device under Windows and Mac (OSx) because of enabled “standby” by default in this OS’s. And for Windows OS special USB\MS_COMP_WINUSB compatibility ID implemented, so we don’t need to install special drivers. Built-in winusb.sys/winusb.dll drivers will be used.

You don’t need to install special drivers under Windows OS

Transport Stream (TS) processing

Transport Stream (TS) processing module lives inside the ts folder. TS deserializer, TS selector and FIFO (In-memory 32KB) is a main parts of this module. For testing purposes I have implemented Transport Stream generator with predefined pattern. So, we can use tscheck utility for data correctness check.

I2C and SPI buses access

I have used OpenCores I2C and SPI implementations. They lives inside opencores_i2c and spi folders respectively.