The 4k HDMI receiver chip used in this project is ADV7619 from Analog Devices. The chip decodes the HDMI input from the camera or a PC and provides all the necessarily information required for video synchronization, processing and analysis. In this post we will show the vertical and horizontal synchronization signals, as well as actual pixels data. Before starting to receive the video stream the chip need to be programmed using I2C bus. For I2C programming I used FX3 development board from Cypress, more follows about it in the separate post.
Vertical synchronization – VSYNC: separates the video frames . One can use this signal to measure very precisely the frame rate of the video.This information is valuable for assuring the quality of the video feed. It may be used for example to see the actual frame-rate of the games.However, if frames are doubled, it wouldn’t detect it, and more sophisticated approach should be used: detection of the data change between the frames.This also can be achieved with Open Video FMC card and some VHDL programming. Here we see the VSYNC pulse at the oscilloscope, coming from Sony A7S DSLR camera via 4K HDMI receiver and measure it’s frequency = the framerate:
We clearly see 59.94 Frames per second. The whole setup picture is below. It shows Sony A7S connected the the open source 4K HDMI receiver that uses ADV7619 chip, Cypress FX3 USB3 board for configuration and data transfer to PC at amazing 320 MBytes per second, and the baseboard is KC705 from Xilinx.
Horizontal synchronization – HSYNC: separates the lines within a single video frame.This information may be used for example for activation of the video processing algorithms, synchronization with external devices etc.
There is a beautiful development kit from Cypress, called USB3 SuperSpeed explorer kit that allows jump-start developing USB3 hardware and software.Together with FMC Interconnect board for Xilinx dev. kits, also from Cypress, it opens the door for previously unseen amazing ~320 MBytes per second data transfer rate to/from the FPGA to PC. And yes, the price of each board is ~50$. There is, however one “small” problem: The kit is designed for low-end Spartan 6 development board, that uses 3.3 volts for digital input-outputs. This “small” problem makes the kit useless if one wants to interface mid-high level boards with more then one FMC connector. Actually most use-cases need more then one FMC slot to take advantage of the amazing 320 Mytes/sec speed: The first FMC is the actual FX3 board and the second one is the interface under the interest: it can be video receiver/transmitter, fast DAC or ADC or GBits range network interface/s.
There is, however a simple solution to make the FX3 dev kit to work with a 2.5 or 1.8 Volt digital IO based Xilinx boards. Looking at the relevant part of the schematics: of the FX3 dev. kit:
There is NCP1117DT33RKG voltage regulator that supplies 3.3 volts to digital IO pins of the USB3 FX3 chip. The good thing is that it can be replaced with 1.8 or 2.5 Volts regulators, from the same manufacturer and with the same form factor. The 1.8 Volt solution was tested and worked fine with VC707 board from Xilinx (Virtex 7 FPGA) . The 2.5 Volt regulator was tested with KC705 board from Xilinx (Kintex 7) FPGA.
The part number for 1.8 volt regulator is NCP1117DT18RKG
The part number for 2.5 volt regulator is NCP1117DT25RKG
In the picture below the part to be replaced is circled in red. That’s it, all the IO pins of the FX3 that were 3.3 Volts will become 1.8/2.5 Volts depending on the selected regulator part number.
Validating FX3 I2C communication to configure ADV7619 4k HDMI receiver:
Validating 32 bit data bus clock at 80 MHz: (More about the signal integrity on the separate post)
OK, the first PCB with 4K HDMI recorder chip has arrived and checked successfully! This first version has FMC connector and uses Xilinx VC705 baseboard to test the 4K video recording capabilities. The board:
Checking video input clock and synchronization:
Checking I2C communication:
Equipment used to bring this project to life:
LeCroy DDA 120 oscilloscope (500 MHz, 2-8 GSamples/sec) : for analyzing slow signals.For example debugging I2C bus communication issues. In general I use it for signals up to 100-150 MHz.
Tektronix 694C (3 GHz, 10 GSamples/sec) : this is a heavy horse. Together with 4 GHz active FET probes it shows any issues with HDMI, MIPI or USB3 buses.
Tektronix 11801C : This one, from early 90’s has an amazing 20 GHz analog bandwidth! Together with TDR head ( 17 ps. rise time!) it helps to resolve signal integrity issues on the PCB board – like impedance matching , signal degradation due to vias and crosstalk issues.