Gameduino 3X HDMI inches closer
It was a great moment last week to see the HDMI test image on the monitor. With that as a base, the next step was to convert it from the "brute force HDMI" of this tutorial to the Xilinx-specific implementation of the official HDMI app note. This I did in tiny steps, each time checking that it was still functional.
HDMI's signaling rate is 10X the pixel clock. So for a 720x480 screen with a 27 MHz pixel clock, those crappy hookup wires are carrying 270 MHz signals. Trying to run the display at higher frequencies started to hit the limits of the hardware. At 800x600 with a 50 MHz clock, the monitor still showed the image but there was a bunch of flickering corruption in the red channel. Trying 1280x720 at 74 MHz was too much: the monitor didn't even recognize the signal.
The next step was a brief look at audio. All previous Gameduinos have had a headphone jack. I might include one in this iteration, but it's quite possible to send digital audio over the HDMI, which simplifies the physical board design, and gives a very clean audio source, a huge improvement over the quite scratchy PWM audio in Gameduino 1, 2, 3, and 3X. While HDMI video implementations are quite common, but not so for HDMI audio. I found one open source implementation in Verilog (here) but it's not ready-to-use, because it's part of a complete pipeline. The plan is to get it running under a testbench, remove the Neo Geo (!) specific parts, then merge it into my signal generator path. This task is all-software, so after looking at it and confirming that it was probably feasible, I decided that audio can happen later and started on the board layout.

Luckily the open source miniSpartan 6 is an excellent starting point - it is a general-purpose FPGA board with the same Spartan 6 FPGA that I'm targeting. It has dual HDMI ports. The miniSpartan 6 has a bunch of other things of course, but it was the work of a few moments in Eagle to remove them. Into the empty space went a BT815, with all its signals fed directly into the FPGA. This gives the system a lot of flexibility. The FPGA be changed to run the board in a bunch of modes, including as a standalone system.
prudent
This should be enough to generate HDMI 720p from the BT815. It's by no means final, but I'm going to send this out tonight to get a first PCB made. This is slightly new territory for me (first four-layer board, first BGA, first LVDS design), so it seems sensible to stop here and get something running on the bench.

I'll be ordering a stencil at the same time, and will use my trusty reflow oven to actually bake it. Here goes!
Thanks for reading.