Feature enhancement to Digital PC TV dongle
When the user is watching a particular program on channel ‘X’ using this PC TV dongle, then there might be some other program running on another channel ‘Y’ that the user is also interested in. The user is going to miss the second program if a normal TV dongle is in use. The user experience can be enhanced by enable the dongle to demodulate two channels.
To achieve this, the PC TV dongle contains an extra tuner and demodulator circuitry. The user can then watch a program on channel ‘X’ with the help of digital tuner-1/demodulator-1 and the USB controller. While the user is watching channel ‘X’, the program on the channel ‘Y’ can be recorded in the background with the help of digital tuner-2/demodulator-2 and the USB controller. The challenging part in this design is that the USB controller needs to pass two MPEG2 transport streams at the same time. To support this, the USB controller enumerates with 2 Isochronous IN endpoints and the driver in the PC needs to read data from the 2 endpoints simultaneously.
The main components of UVC camera design are the image sensor and USB device controller. In this UVC camera design, image sensor is interfaced to FX3 and FX3 reads the uncompressed data stream from the image sensor and then it passes this data to the PC over USB. I2C hardware block in the FX3 chip is used to initialize/configure the image sensor present in this UVC camera design. We don’t need any separate driver on PC side since FX3 device enumerates as a standard UVC class device. UVC camera block diagram is shown in the Figure 4.
The above-mentioned design can be expanded to function as a 3D motion controller. Block diagram is shown in the figure 5. In this design, the role of USB device controller is to send the data captured from two synchronized image sensors over to the USB host via the USB interface. User can have their own custom driver, which sits on top of the UVC (USB video class) driver and splits the received data into two video streams. Finally, the user software application processes these two images to identify objects and track object movements. Objects can be fingers, pencil, chop stick anything. This tracking information eventually results into human interface gesture input to any software application running on the host machine. This design enables you to interact with your computer using hand gestures instead of traditional Human Interface Devices (mouse and keyboard). Here in this application, higher frame rate is more useful than higher resolution to track the objects without any latency.
Next-generation SuperSpeed USB 3.0 device controllers enable developers to add USB 3.0 device functionality to any system.
The EZ-USB FX3 shown in Figure 6. has an integrated USB 3.0 and USB 2.0 physical layer (PHYs) along with a 32-bit ARM926EJ-S microprocessor for powerful data processing and for building custom applications. It also has a fully configurable, General Programmable Interface (GPIF™ II) that can interface with any processor, ASIC, or FPGA. This GPIF II supports an 8-bit, 16-bit and 32-bit parallel data bus and enables interface frequencies up to 100 MHz. The EZ-USB FX3 contains 512 KB of on-chip SRAM for code and data. It also provides interfaces to connect to serial peripherals such as UART, SPI, I2C, and I2S.
In the case of data acquisition systems, ADC is connected to the GPIF II of FX3. The GPIF II reads the data from the ADC and then passes this data to PC. SPI hardware block in the FX3 chip is used to configure the parameters of ADC.
In the case of a digital PC TV dongle design, the demodulator is connected to the GPIF II of FX3. The GPIF II reads the MPEG2 transport stream from the demodulator and then passes this data to the PC. I2C hardware block in the FX3 chip is used to initialize/configure the tuner and the demodulator present in this TV dongle design. To support dual channel support, the FX3 needs to be interfaced with two demodulators. Demodulator-1 is connected to the data bus and the other demodulator is connected to the address bus of FX3. FX3 can read these two MPEG2 transport streams simultaneously and passes this data to the PC connected to it over the USB interface.
In the case of UVC camera, the image sensor is connected to the GPIF II of FX3. The GPIF II reads the data captured by the image sensor and then passes this data to the PC. UVC header is added to the data coming from the image sensor with the help of powerful processor sitting in the FX3. I2C hardware block in the FX3 chip is used to initialize/configure the registers of Image sensor.
In summary, if an USB 3.0 device controller has a general programmable parallel interface which can be interfaced with any type of parallel interface and also if it has serial interfaces like I2C, SPI, UART and I2S then it fits in almost all the applications that require an USB3.0 device controller.
About the Author
Rama Sai Krishna. V holds an M.Tech in Systems and Control Engineering from IIT Bombay, India. He is currently working as an applications engineer on Cypress USB 2.0 peripherals.