Amiga Video Scan Converter
This project is one that I’ve wanted to do for some time. The Commodore Amiga 500 has a few different graphic video modes, but the first one I want to deal with is the 320×200 mode. The output has a horizontal refresh frequency of 15.7khz. These are the two problems that need to be solved, modern LCDs don’t like such a low resolution, and they won’t sync below around 30khz.
If you use simply the output from the DB23 video connector on the back of the amiga, the data is an analog output. It has 0v-0.7v peak to peak on three different colors Red, Green, and Blue. The pixel clock is based on the 7.14mhz clock for 320 horizontal resolutions, and twice that for 640x rez. Now if you want to scan convert this, you’ve got to use an A->D converter which is reasonably fast, and has reasonable resolution because the original data is 4-bits per color.
But finding a hobbyist friendly(in a reasonable package, not many external components required, no programming/registers to setup, supports the freq and resolution required) ADC that can handle this is tough. I couldn’t find any that fit the bill without a gotcha.
Denise, the amiga video chip, has digital video connections that are easily tapped into, and will give me the clearest possible video. There is no loss with a digital output in comparison to the analog which occurs from the amiga’s D->A and subsequent the A->D.
So I’m going to run from Denise, into a logic level board (to convert 5v TTL to 3.3V for the FPGA), into the Altera DE0 board, and then the VGA cable will connect directly to the monitor.
There are basically three steps that need done:
- Capture the amiga video signals.
- Resize/convert the video frame.
- Redisplay the frame at a new resolution and horiz frequency.
I have to convert the 320×200 in 640×400, and I want to keep it as simple as possible — but don’t want quality to completely go out of the window. I can simply double each pixel horizontally, and double each line vertically, but I don’t think this is the best way.
There are some better techniques, like nearest neighbor, bicubic, and so on —- but these all sound pretty intimidating with someone who isn’t so great with math — and haven’t seen these things in the “wild” before.
What do you think? Do you have experience with this type of stuff?
Current Status 1/17/2012: All hardware including cables/connectors, and the protoboard for voltage conversion from Amiga 5v to FPGA 3.3v is finished. The amiga is connected to the hardware and I have some video conversion happening. There’s no more vertical scrolling happening, no more black bars, image is stable and looks pretty good, but there are still video artifacts. See pictures in the blog posts accessible by the link above this paragraph.
Next steps: Got to find out where the video artifacts are coming from. See the blog posts for a better description and video of the problem.