CGA2RGBv2 - Digital RGBI to analog RGB for C128 and IBM PC MDA/CGA/EGA

Project Status: 
released

CGA2RGBThe 80 column output of the Commodore 128 is the same digital RGBI used by the original IBM CGA graphics adapter. Unfortunately nowadays is quite difficult to find a monitor with the suitable RGBI input. The CGA2RGBv2 adapter will convert the TTL RGBI to analog RGB suitable to be connected directly to a 15KHz capable RGB monitor or to the popular Gonbes GBS-8200 VGA converter. As an added bonus the CGA2RGBv2 can also convert MDA and EGA to an analog format for the enjoyment of all our retro PC friends.

Similarly to the older CGA2RGB-B01, the basic circuit is a triple 2-bit digital to analog converter. The main improvement is the addition of a dip switch to select the mode of operation and the improved power filtering to improve image quality with cheap power supplies.

U1 decodes the RGBI input to 2-bit per color component according to the dip switch settings and generates the composite sync needed for the GBS-8200.

Mode DIP1 DIP2 DIP3 DIP4
CGA OFF OFF OFF OFF
EGA ON OFF ON OFF
MDA White ON ON OFF OFF
MDA Green ON ON ON OFF

For MDA the converter supports enhanced brightness and can be configured for white or green for a more retro look.
For EGA the conversion is direct as the digital signal is already 2-bit per component.

For CGA the decoding follows the standard color table which includes a special case for color 6.

Commodore Color Number CGA Color Number RGBI Color R G B
1 0 0000 Black 00 00 00
7 1 0010 Blue 00 00 10
6 2 0100 Green 00 10 00
12 3 0110 Cyan 00 10 10
3 4 1000 Red 10 00 00
9 5 1010 Magenta 10 00 10
10 6 1100 Brown 10 01 00
16 7 1110 Light Grey 10 10 10
13 8 0001 Grey 01 01 01
15 9 0011 Light Blue 01 01 11
14 10 0101 Light Green 01 11 01
4 11 0111 Light Cyan 01 11 11
11 12 1001 Light Red 11 01 01
5 13 1011 Light Magenta 11 01 11
8 14 1101 Yellow 11 11 01
2 15 1111 White 11 11 11

The resistor network R1,R2,R7 forms a simple R2R D/A converter. The output impedance of the converter is however too high to directly drive the 75ohm video cables. U2 buffers the signals and thanks to R12,R13,R15 provides a perfectly matched 75ohm impedance.

L1 an L2 and the related capacitors provide noise filtering some isolation between the analog and digital portion of the board.

The board requires a 5V power supply. It can be powered directly from the GBS-8200 or using an external power supply.

Jumper J4 allow to select between composite sync (pin 1-2) suitable for the GBS-8200 and separate sync (pin 2-3) suitable for 15KHz capable monitors.

Connector J5 can be used for internal connections.

Pin Signal
1 GND
2 B
3 G
4 R
5 GND
6 VSYNC
7 HSYNC/CSYNC
8 Video (if present, can be used as a CSYNC for SCART connections)

CGA Colors

Image Quality

The image quality of the GCA2RGB, like all analog video connections, heavily depends on the cable used. The standard multi colored cable included in the GBS-8200 is not an optimal choice. For sharp images a good quality VGA cable should be used.

Great care has been devoted to produce a sharp and noise free signal. The following pictures show the waveform for a single pixel line and a 1 to 7 pixel. Rise and fall times are consistently below 20ns with very limited overshoot.

Power filtering has been significantly improved as well to produce a noise free image even when using cheap 5V power supplies.

C01 signal integrityC01 signal integrity

Design Files
Schematics: 
Filed under: 

Comments

in a comment on the previous version, you said https://gglabs.us/comment/6380#comment-6380

> the Csync voltage levels are optimized for a GBS style scaler and are not fully NTSC/PAL compliant.

Did you make them fully compliant for this version?

The composite sync is generated by simply combining the H and V sync provided by the computer. These are often not fully compliant with either NTSC or PAL standards (i.e. many machines do not output the correct number of serrated sync pulses in the front porch, output non standard 240p instead of 480i, etc...).
They are usually good enough for analog TVs but some modern TVs with digital decoders will fail to properly detect the signal.
For machines like the Commodore 128 that output a mono signal on pin 7 the best solution is to route the mono video to the composite sync pin (remove the jumper of J4 and connect J5 pin 8 to J4 pin 2)