[J-core] HDMI

Cedric BAIL cedric.bail at free.fr
Tue Oct 18 14:47:01 EDT 2016


As I have been quite interested by having a working 2D graphics stacks
with the j-core once the turtle is out, I have started to learn a bit
about how to write an HDMI output. I still need to learn more about
vhdl and would love any pointer to a good book/tutorial.

I have figured out that actually we don't need to implement HDMI, but
only a basic DVI as HDMI support it as the possible simplest
implementation. This should make our life quite easier as finding DVI
specification is way easier
(http://www.cs.unc.edu/~stc/FAQs/Video/dvi_spec-V1_0.pdf). Reading the
specification, there is one very interesting point. All device should
support the "
Low Pixel Format Support" which is a 640x480 @60Hz with 24bits per
pixels. Even the frequency is well defined (Pixels at 25.175 MHz and
Horizontal Frequency of 31.5 kHz, but I needs to check that HDMI
follow the same requirements as I can only find 25.2Mhz/31.5kHz/60Hz
and 25.175Mhz/31.47KHz/59.94Hz on my own HDMI output).

I would argue that being able to handle that resolution with j-core
seems sane and the most likely working target. Anything above would be
quite hard to get usable. I guess it would simplify the work on the
vhdl if we only need to handle one resolution and one timing. Would
this clocks be any problem in the current design of the turtle board ?

There are a lot of article on Internet that are interesting to read to
understand what is going on and how things should work with HDMI. I
have found this link http://fpga4fun.com/HDMI.html to be a good
starting point. If anyone has other link to share, it would be

I just wanted to drop this here, so that if anyone start to be looking
at the topic, they would have a better/quicker understanding. It also
could be a starting point to discuss the general design of how a 2D
unit could work itself. I have a lot of question and will just drop a
few of them here, just to start a possible discussion. How/When does
the kernel get notified of the rendering of a frame ? Do we need to
expose a way to list resolution even if we do handle just one ? How do
we store video memory (around 1.2MB per scanout buffer) ? As I would
like to add a simple blitter unit to provide hardware plane, where
should that be ? Inline with the scanout or completely independent ?
What about color conversion ?

That's just a few questions I am starting to think about and it would
be nice to see people share their though on the topic. Especially with
the constraint of the turtle/j-core in mind, we need to be smart to
manage to get something usable !
Cedric BAIL

More information about the J-core mailing list