Random Access Memory Digital-to-Analog Converter (RAMDAC) is a combination of three fast DACs with a small SRAM used in computer graphics display adapters to store the color palette and to generate the analog signals (usually a voltage amplitude) to drive a color monitor. The logical color number from the display memory is fed into the address inputs of the SRAM to select a palette entry to appear on the data output of the SRAM. This entry is composed of three separate values corresponding to the three components (red, green, and blue) of the desired physical color. Each component value is fed to a separate DAC, whose analog output goes to the monitor, and ultimately to one of its three electron guns (or equivalent in non-CRT displays).
DAC word lengths range usually from 6 to 10 bits. The SRAM's word length is three times the DAC's word length. The SRAM acts as a color lookup table (CLUT). It usually has 256 entries (and thus an 8-bit address). If the DAC's word length is also 8 bits, we have a 256 x 24-bit SRAM which allows a selection of 256 out of 16777216 (16,7 million) possible colors for the display. The contents of this SRAM can be altered when no pixel needs to be generated for transmission to the display. A synchronization pulse is required to maintain vertical picture stability. Therefore a vertical blanking pulse is generated for every frame. This vertical blanking pulse is not visible on the display, nor is any pixel sent. Therefore the D/A is idle and can allow the user to modify the SRAM color lookup table.
The SRAM can usually be bypassed and the DACs can be fed directly by display data, for Truecolor modes. In fact this has become very much the normal mode of operation of a RAMDAC since the mid-1990s, so the programmable palette is mostly retained only as a legacy feature to ensure compatibility with old software. In many newer graphics cards, the RAMDAC can be clocked much faster in true color modes, when the SRAM is not used.
For a quick estimation on the pixel clock for a given output, you can do:
- horizontal pixels x vertical lines x 1.4 (for blankings) x refresh rate
- (based on VESA's GTF calculation sheet)
Usually the RAMDAC rating has to be (quite a bit) better than the pixel clock to produce sharp edges.
As of 2006, the DAC of a modern graphics card runs at a clock rate of 400 MHz. However, video cards based on the XGI Volari XP10 run at 420 MHz DAC. The highest documented DAC frequency ever achieved on a production video card for the PC platform is 550 MHz, set by BarcoMed 5MP2 Aura 76Hz by Barco.
The term "RAMDAC" did not enter into common PC-terminology until IBM introduced the IBM VGA display adapter in 1987. The IBM VGA adapter used the INMOS G171 RAMDAC. The INMOS VGA RAMDAC was a separate chip, featured a 256-color (8-bit CLUT) display from a palette of 262,144 possible values, and supported pixel-rates up to ~30MPixel/sec.
As clone manufacturers copied IBM VGA hardware, they also copied the INMOS VGA RAMDAC. Advances in semiconductor manufacturing and PC processing-power allowed RAMDACs to add "direct-color" operation, which is a mode of operation that allows the SVGA-controller to pass a pixel's color-value directly to the DAC-inputs, thereby bypassing the RAM lookup-table. Another innovation was Edsun's CEGDAC, which featured hardware-assisted spatial anti-aliasing for line/vector draw-operations.
By the early 1990s, the PC chip-industry had advanced to the point where RAMDACs were integrated into the display controller chip, thus reducing the number of discrete chips and the cost of video cards. Consequently, the market for standalone RAMDACs disappeared. Today, RAMDACs are still manufactured and sold for niche applications, but in obviously limited quantity.
In modern PCs, the RAMDAC(s) are integrated into the display controller chip, which itself may be mounted on an add-in-board or integrated into the motherboard core-logic chipset. The original purpose of the RAMDAC, to provide a CLUT-based display-mode, is rarely used, having been supplanted by true-color display-modes. However, many CAD and video editing applications use hardware overlay, combined with the programmable palette, to ensure the user interface does not disrupt the rendering of editing window.