A video display controller (VDC), also called a display engine or display interface, is an integrated circuit which is the main component in a video-signal generator, a device responsible for the production of a video signal in a computing or game system. Some VDCs also generate an audio signal, but that is not their main function. VDCs were used in the home computers of the 1980s and also in game consoles and arcade games. The VDC is the main component of the video signal generator logic, responsible for generating the timing of video signals such as the horizontal and vertical synchronization signals and the blanking interval signal. Sometimes other supporting chips were necessary to build a complete system, such as RAM to hold pixel data, ROM to hold character fonts, or some discrete logic such as shift registers. Most often the VDC chip is used as an extension to a host computer system, and is completely integrated to the host, with the memory holding the graphics data appearing in the same memory map of the main CPU. This allows the CPU to write new data to memory which the VDC then reads and displays. In some cases, the VDC functions as a coprocessor that can manipulate the RAM contents independently. Due to the low performance of early dynamic RAM, some VDCs used an entirely separate DRAM pool that it could read without interrupting or being interrupted by the CPU. Later systems used dual-ported video RAM to avoid the performance issues, allowing the CPU to read or write memory from one port, while at the same time the VDC reads it from the other port.
VDC vs. GPU The difference between a display controller, a graphics accelerator, blitter, and a graphics processing unit (GPU) is often blurred by examples that are called one but have some features of another class. It is not always clear when a particular video chip is a video display controller and when it is a video display processor. For example, the TMS9918 may be referred to either way, depending on the source. Generally, a canonical VDC would not include any internal capability to perform graphics operations on its own, the ability to draw lines or fill areas for instance, and relies on the host CPU to perform these sorts of operations by performing those calculations and depositing the results in memory for the VDC to read. Blitters add some of these features, which requires additional registers and some math hardware on the IC to run these routines. Some chips called VDCs in the 1980 do include some of these features, which makes them technically closer to blitters, and the choice of terminology was largely due to the manufacturer preferring one term over the other. VDCs and blitters were popular during the 1980s and into the 1990s. These VDCs often had special hardware for the creation of sprites. Early examples include the Atari's ANTIC and the Texas Instruments TMS9918. Later designs generalized sprites by implementing Bit Blitter functions, including the VDP2 32-bit background and scroll plane video display processor of the Sega Saturn and the Lisa (AGA) chip that was used for the improved graphics of the later generation Amiga computers. Graphics processing units (GPUs) take this evolution a step further, including not only more powerful math hardware, typically multiple floating point units, but also include the ability to send custom routines to the GPU to be run locally. This means that a GPU not only has built-in routines for "draw line" or "rotate camera", but can also be sent entire programs like "draw airplane", which can then be performed with a single line of code. This allows the host program to dramatically lower the amount of information that has to be sent back and forth between the GPU and the host and can offer large performance improvements. GPUs became popular during the 1990s, including the S3 ViRGE, the Matrox Mystique, and the Voodoo Graphics; though earlier examples such as the NEC μPD7220 had already existed for some time. Modern systems all use a GPU-like display systems, sometimes built into the CPU, sometimes a separate IC on a larger motherboard, and sometimes on a separate card.
Types Video display controllers can be divided in several different types, listed here from simplest to most complex;
Video shifters, or "video shift register based systems" (there is no generally agreed upon name for these types of devices), are the most simple type of video controllers. They are directly or indirectly responsible for the video timing signals, but they normally do not access the video RAM directly. They get the video data from the main CPU, a byte at a time, and convert it to a serial bitstream, hence the technical name "video shifter". This serial data stream is then used together with the synchronization signals to output a video signal. The main CPU needs to do the bulk of the work. Normally these chips only support a very low resolution raster graphics mode. A CRTC, or cathode-ray tube controller, generates the video timings and reads video data from RAM attached to the CRTC to output it via an external character generator ROM (for text modes) or directly to the video output shift register (for high resolution graphics modes). Because the actual capabilities of the video generator depend to a large degree on the external logic, video generator based on a CRTC chip can have a wide range of capabilities, from simple text-mode only systems to high-resolution systems supporting a wide range of colours. Sprites, however, are normally not supported by these systems. Video interface controllers are much more complex than CRT controllers, and the external circuitry that is needed with a CRTC is embedded in the video controller chip. Sprites are often supported, as are (RAM based) character generators and video RAM dedicated to colour attributes and palette registers (colour lookup tables) for the high-resolution or text modes. Video coprocessors have their own internal CPU dedicated to reading (and writing) their own video RAM (which may be shared with the CPU), and converting the contents of this video RAM to a video signal. The main CPU can give commands to the coprocessor, for example to change the video modes or to manipulate the video RAM contents. The video coprocessor also controls the (most often RAM-based) character generator, the colour attribute RAM, palette registers, and the sprite logic (as long as these exist of course).
List of example VDCs
… excerpt ends here. Continue reading the full article.



