There are multiple versions of the Raspberry Pi Zero (RPI0). We recommend using the 32 bit $10 Raspberry Pi Zero which has one BCM2835 core, running the ARM1176JZF-S cpu and using these peripherals. One core is enough for this application. It is the GPU which does all of the work.

The RPI0 has a 19.2Mhz Oscillator which can be read from the GPIO clock ports. I cannot find the documentation for how the HDMI clock is generated. Maybe the oscillator is divided to several giga herz and then multiplied to the required hdmi pixel clock frequency.

More information about the internal details can be gained from the [C++ Circle library] (https://circle-rpi.readthedocs.io/_/downloads/en/48.0/pdf/#24#6) for bare metal RPI applications.

You could also choose to use the $15-20 Raspberry Pi Zero 2W w which has 4 cores using more power, but it is a 64 bit machine so its code takes up more space leaving less room for your application. Designations "H" or "with headers" means that the part comes with presoldered headers.

The Raspberry Pi form factor header has 40 header pins, with 12 power and ground pins leaving 28 pins for the 24 bit DPI output, clock, horizontal sync, vertical sync and blank. That supports RGB888.

Almost Perfect! The problem is that then the RPI0 and the FPGA are in different clock domains, and will drift apart. HDMI has tight specs, they cannot change or one risks loosing the lock. Over time the image would drift up or down on the screen and wrap. Not good. To keep the two chips in phase, they need to be driven by the same oscillator.

RPI0 can output a low-jitter 19.4Mhz clock on 3 of the low order pins. That clock can be routed to the FPGA's PLL. So in practice the MIPI CSI to FPGA DPI bridge allows RGB788, RGB878, RGB887. SInce humans are more sensitive to green, it is recommended to use either the blue or red low order pins for the clock. There is a lot of blue in the sky and in the ocean, so we are choosing red for the 7 bit color.

Problem with the Raspberry Pi 4 clock


Built with the Forest WIki.
User contributed content is licensed under a Creative Commons CC By 4.0 License.