Here is my case study for the graphic adapter which helped me to choose the path I believe fits the need of versatility of applications through adapter relatively high graphic performance a well as use of common, well known interface(s).
* No.1 is to fit in as many small computer systems as possible including 8-bit vintage IMSAI, Altair, Commodore, Spectrum, IBM PC & XT and other Z-80 and 8080/8088 clones as well as in 16/32-bit systems including PC-AT clones. Imagine your old PC XT running 3 monitors at the same time!
* There are existing graphic adapters available that works in console mode, examples: microVGA, S-100 Console board. They well serve the purpose so I see no reason why should I compete with them. I wanted to create adapter that would provide functionality not supported by existing products.
* Because I was always a real computer graphic enthusiast, one of my requirements was to support motion graphics rather than its resolution. Be able to push lots of data through interface displaying moving images, games and video. So parallel interface – on a side of optional serial - is a must have feature for VGA51.
Example: with console based graphic adapter, to refresh entire even low resolution image of 320x200 pixels takes almost 3.5 sec (14 sec for full 640x480 screen) even if your UART runs at 115kbps. That is way too slow to even do some useful bitmap operations when playing around with programming right on the homebrew computer machine.
* Another important requirement was to ensure compatibility with older and new monitors. For this the DB-15 connector based analog VGA standard is best as it is still supported by almost all commercially available computer monitors and most TV sets, even in 2016. Every DB-15 analog equipped monitor supports basic VGA resolution which is 640x480 pixels where refresh rate is 60Hz. This resolution provides plenty of graphics space and also enables quality text user interface. With 16 colors of the text and 8 colors of background, character blink attribute and well know cursor, the VGA51 looks and feels like you are working with PC monitor in text mode.
* Future proof design - chip vendor independent design was also important requirement for me. As I always make my designs at least dependent from 3rd parties as possible, whether in hardware or software, the ability to replicate the VGA51 on different platforms is essential to ensure it will be available for home brew enthusiasts today and 10 or even 20 yrs from now is more than relevant. Just as 30 yrs old commercial and home brew computers we cherish and enjoy today. Time runs fast…. We all know that.
* Low cost. I strive to make this adapter affordable where the cost of presented version is below $50 for single piece order and below $30 when in discount quantities.
I decided to keep support for standard characters text mode. People also used to work with text screen of 80 chars per line with more than 24 lines being displayed. Keeping text display memory structure identical to popular PC solutions makes things much easier for the programmer and allows portability of most text UI designed back in the text mode era.
With the graphics mode things become really exciting. Parallel interface of VGA51 allows refreshing entire 640x480 screen in just 100ms for 1MHz bus writes, that is 10 full VGA frames per sec. And if the host CPU runs write to bus with 6.5MHz rate, than you can run a 60 fps high quality full SD video using it. Something none of the console based graphic adapter solutions can provide.
I am not trying to prove here VGA51 is better, I just want to say it is just different. It may serve different purpose, just like S100 console board has to provide beautiful easy to interface and use console screen with any S100 compatible system. The VGA51 main attribute is balance between the compatibility and performance. Here is a summary of VGA features:
* Works with any analog VGA compatible monitor (equipped with standard DB-15 connector)
* Enables two PC-compatible standard text modes (80x25 and enhanced 80x30)
* Provides efficient and fast use of graphics modes (supports graphic-extensive use applications: animation and video)
* Finally its design allows to be implemented in different hardware domains: based on FPGA, MCU or even based on TTL-series. To be available to those who like assembled versions or DYI kits.
Some time ago I made detailed calculations for propagation times in the adapter circuit when implementing higher than 640x480 resolution modes. Although implementing SVGA and SXGA modes is a not a problem within modern FPGA chip, putting together home made TTL-chips circuit for 800x600 resolution even using fast ALS or AHCT derivatives becomes a real challenge due to high clock rates above 36MHz reaching 50MHz for pixel clock required for 800x600 in 72Hz refresh mode). That is lots of hertz so wave effects in the circuit become more prominent and require miniaturization of components as well as detailed solder work, when if not assured ca cause trouble in building and bringing it up by even experience enthusiast using “through hole” version style chip packages.
For that reason and since, the "building from the scratch" in my main focus, I had to put away higher than VGA resolution off the table - at least for now.
How and for what applications am I going to use it mostly?
Here are most often cases of use at least I have experienced in past years mostly:
* using it as PC compatible text console (for custom homebrew computers including PC compatible clones
* using it for decent graphic apps with “off the board” and BASIC equipped homebrew computers including emulating old arcades (I am big fan of these games :-)
* easy to interface to 3rd party computer systems , whether old vintage homebrew and vintage commercial (ISA based for example) machines or new controllers and SBC’s.
All three above are supported by VGA51.