© G. Mazur
- What is a RAMDAC ?
- The original VGA RAMDAC
- Evolution of VGA RAMDACs
- RGB ramp
- Contemporary RAMDACs
- RAMDAC speed
- 230 vs. 250 MHz affair
What is a RAMDAC ?
RAMDAC is a part of graphics controller responsible for converting the pixel values from digital to analog form. The hardware structure of RAMDAC contains two components: RAM and DAC. RAM stands for Random Access Memory. DAC stands for Digital to Analog Converter. RAM compnent of a RAMDAC is a small, fast static memory, storing the values of Red, Green and Blue components in digital form. DAC is a structure (with three independent DACs in fact) which converts binary words representing the Red, Green and Blue intensities into voltage levels on the respective signal lines.
The original VGA RAMDAC
The original VGA introduced by IBM in 1985 contained RAMDAC chip made by INMOS, with type code 171. In 1985 this chip was state-of-the-art design, with memory and DACs running at 28 MHz. The RAM part was a memory with 256 18-bit words. Its organization is frequently expressed as 256x(3x6). This part of RAMDAC is also known as LUT (Look-Up Table), CLUT (Color LUT) or intermediate table. The 8 input lines serving as address inputs to the RAM select one of 256 18-bit words. These memory words are in fact groups of 3 6-bit words, and the 6-bit values are used as input values to three DACs.
8-bit input was taken from the Attribute Controller part of VGA chip. In 8-bit graphics mode (the only one available on standard VGA was 320x200 pixels) each byte of video memory represents one pixel, and the byte is supplied to the inputs of RAMDAC. Based on this value, the RAM part supplies three 6-bit values to the DACs, thus allowing for the simultaneous use of any 256 colors freely selected from the palette of 262144 colors (2^18). Due to the fact that DACs were only 6 bits "wide", only up to 64 shades of each color were available, so we could have no more than 64 shades of green, red, blue, white(grey), cyan, magenta and yellow.
Evolution of VGA RAMDACs
In late 80's and early 90's VGA controllers were usually equipped with 512 KB to 1 MB of screen memory. At that time the designers of PC graphics controllers started to implement so called Direct Color modes, in which the single pixel was stored in screen memory using 16 bits, and the word representing a pixel stored the values of Red, Green and Blue directly in three bit-fields. Soon, the VGA cards appeared on the market which could also display pixels coded using 24 bits - 8 bits per each primary.
The RAMDACs used in these cards were similar to the original VGA RAMDAC. The main difference was that depending on graphics mode, these chips were capable of bypassing the RAM component and combining two or three consecutive 8-bit input words into single 16- or 24-bit word which was then supplied directly to the inputs of DACs. Note that for 24-bit "True Color" modes, the DACs were widened from 6 to 8 bits per primary.
This created a small compatibility problem: during loading the LUT, the original VGA RAMDAC expects 6-bit values aligned at least significant position in a byte. When the RAMDAC is switched to 8-bit mode, the values loaded are 8 bits wide, and their format is not compatible with the 6-bit one. Due to compatibility reasons, the contemporary RAMDACs must handle 6-bit primaries in "old" manner. And this duality must be correctly handled by the programmer.
Since the RAMDAC contains the RAM regardless of the current graphics mode, it is possible to use this memory for adjusting the values of primary colors displayed in direct color modes. To achieve this, the organization of RAM part must be changed. The "new" organization is 3x(256x8) as opposed to "old" 256x(3x6). First, the binary word representing each primary is now 8 bits long. Second, the three sections of memory storing the values of Red, Green and Blue components may be accessed individually in direct color modes (in 8-bit modes the same "address" value is supplied to all three sections). This allows for programming the lookup tables for each color independently, and the effect which is achieved this way is known as gamma-correction. Basically it may be described as non-linear relation between the binary value stored in video RAM and the value of the respective video signal voltage. This may compensate nonlinearity of CRT characteristics.
This feature is often referred to as "programmable RGB ramp".
Contemporary RAMDACs are physically incorporated into the VGA controller/accelerator chip. Their input buses are as wide as the chip's memory buses (64 or 128 bits). A typical contemporary RAMDAC may work with 6- and 8-bit primaries in 8-bit pixel mode, and may be either used (for gamma correction) or bypassed in direct color modes.
RAMDAC speed is a frequency at which the RAMDAC processes the pixels and sends the video signals to to the monitor. The "speed" depends on current video mode. When the RAMDAC speed is given as a parameter of a graphics card, this is the maximum speed which the RAMDAC may achieve. This parameter is not a measure of the card's performance - it simlpy reflects the maximum monitor refresh rate which may be achieved by the card. Actually the RAMDAC works near to its speed limit only in very high resolution modes. The table below contains the RAMDAC frequencies at different resolutions and refresh rates.
RAMDAC speed [MHz] at
230 vs. 250 MHz RAMDAC affair
As can be seen in the above table, the RAMDAC reaches the frequencies above 230 MHz only in resolutions exceeding 1600x1200 pixels. In practice it means that most of users never utilize RAMDAC speeds above 230 MHz, and, to be honest, most of us never use speeds above 160 MHz. So, what's the buzz about 250 MHz RAMDACs? Well, it makes some sense to get a "faster" card, not because of the RAMDAC speed limit, but mainly because these cards have usually slightly faster memory clock. Also, the analog output of higher-frequency RAMDAC may produce slightly "sharper" pixels, but again this is noticeable only in highest resolutions.