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.

RGB ramp
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
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
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.

Resolution

RAMDAC speed [MHz] at

60 Hz

70 Hz

75 Hz

85 Hz

640x480

25.175

31.5

31,5

36

800x600

40

50

48.5

56.25

1024x768

65

75

78.75

94.5

1152x864

94.2

108

121

1280x1024

108

135

157.5

1600x1200

162

189

202.5

229.5

1800x1440

214

250

(Some irregularities in low res modes result from the specification of VESA timings
in these modes.)

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.