Video display controller

Last updated
Block diagram of a NEC mPD7220 graphics display controller NECuPD7220BlockDiagram.svg
Block diagram of a NEC μPD7220 graphics display controller

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 TV 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 games consoles and arcade games.

Contents

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 completely integrated in the logic of the main computer system, 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 at the same time the VDC reads it.

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;

List of example VDCs

Examples of video display controllers are:

Video shifters

CRT Controllers

Video interface controllers

Video coprocessors

Alternatives to a VDC chip

Note that many early home computers did not use a VDP chip, but built the whole video display controller from a lot of discrete logic chips, (examples are the Apple II, PET, and TRS-80). Because these methods are very flexible, video display generators could be very capable (or extremely primitive, depending on the quality of the design), but also needed a lot of components.

Many early systems used some form of an early programmable logic array to create a video system; examples include the ZX Spectrum and ZX81 systems and Elektronika BK-0010, but there were many others. Early implementations were often very primitive, but later implementations sometimes resulted in fairly advanced video systems, like the one in the SAM Coupé. On the lower end, as in the ZX81, the hardware would only perform electrical functions and the timing and level of the video stream was provided by the microprocessor. As the video data rate was high relative to the processor speed, the computer could only perform actual non-display computations during the retrace period between display frames. This limited performance to at most 25% of overall available CPU cycles.

These systems could thus build a very capable system with relatively few components, but the low transistor count of early programmable logic meant that the capabilities of early PLA-based systems were often less impressive than those using the video interface controllers or video coprocessors that were available at the same time. Later PLA solutions, such as those using CPLDs or FPGAs, could result in much more advanced video systems, surpassing those built using off-the-shelf components.

An often-used hybrid solution was to use a video interface controller (often the Motorola 6845) as a basis and expand its capabilities with programmable logic or an ASIC. An example of such a hybrid solution is the original VGA card, that used a 6845 in combination with an ASIC. That is why all current VGA based video systems still use the hardware registers that were provided by the 6845.

Modern solutions

ATi R300 chip block diagram. The display controller is labelled "display interface". Radeon R300 block diagram.svg
ATi R300 chip block diagram. The display controller is labelled "display interface".

With the advancements made in semiconductor device fabrication, more and more functionality is implemented as integrated circuits, often licensable as semiconductor intellectual property core (SIP core). Display controller System In Package (SiP) blocks can be found on the die of GPUs, APUs and SoCs.[ citation needed ]

They support a variety of interfaces: VGA, DVI, HDMI, DisplayPort, VHDCI, DMS-59 and more. The PHY includes LVDS, Embedded DisplayPort, TMDS and Flat Panel Display Link, OpenLDI and CML.[ citation needed ] A modern computer monitor may has built-in LCD controller or OLED controller. [4]

For example, a VGA-signal, which is created by GPU is being transported over a VGA-cable to the monitor built-in controller. Both ends of the cable end in a VGA connector. Laptops and other mobile computers use different interfaces between the display controller and the display. A display controller usually supports multiple computer display standards.

KMS driver is an example of a device driver for display controllers and AMD Eyefinity is a special brand of display controller with multi-monitor support.

RandR (resize and rotate) is a method to configure screen resolution and refresh rate on each individual outputs separately and at the same time configure the settings of the windowing system accordingly.

An example for this dichotomy is offered by ARM Holdings: they offer SIP core for 3D rendering acceleration and for display controller independently. The former has marketing names such as Mali-200 or Mali-T880 while the latter is available as Mali-DP500, Mali-DP550 and Mali-DP650. [5]

History

In 1982, NEC released the NEC μPD7220, one of the most widely used video display controllers in 1980s personal computers. It was used in the NEC PC-9801, APC III, IBM PC compatibles, DEC Rainbow, Tulip System-1, and Epson QX-10. [6] Intel licensed the design and called it the 82720 graphics display controller. [7]

Previously, graphic cards were also called graphic adapters, and the chips used on these ISA/EISA cards consisted solely of a display controller, as this was the only functionality required to connect a computer to a display. Later cards included ICs to perform calculations related to 2D rendering in parallel with the CPU; these cards were referred to as graphics accelerator cards. Similarly, ICs for 3D rendering eventually followed. Such cards were available with VLB, PCI, and AGP interfaces; modern cards typically use the PCI Express bus, as they require much greater bandwidth then the ISA bus can deliver.

See also

References

  1. M. Rasch, B. Bertelsons (1995). Scott Slaughter (ed.). PC Underground: Unconventional Programming Topics. US: Abacus Software Inc. p. 58-68. ISBN   978-1557552754. "Cathode Ray Tube Controller (CRTC) is responsible for generating the video signal and is programmable. CRTC-Registers bit meaning tables for VGA, EGA, CGA, Hercules, SVGA, Mode X."
  2. "NES NTSC Video". NESdev.org. 2024-06-04.
  3. "NES PAL Video". NESdev.org. 2024-06-24.
  4. https://www.xhpanel.com/info-detail/lcd-controller-boards-everything-you-need-to-know
  5. "Initial support for ARM Mali Display Controller". Linux kernel mailing list. 2016-04-01.
  6. Dampf, Guido (1986). "Graphics with the NEC 7220: Direct access with Turbo Pascal". Archived from the original on 2 May 2019. Retrieved 27 July 2013. (Translation of "Grafik mit dem 7220 von NEC", mc, 1986, H11, pp. 54-65)
  7. Changon Tsay (January 1, 1986). A graphics system design based on the INTEL 82720 graphics display controller. University of Texas at El Paso. pp. 1–152.{{cite book}}: |work= ignored (help)