System information
4.2 Graphic Card Implementation Layout
software based VGA processing is sufficient to display the screen content. The results of
the performance measurement is illustrated in chapter 9. However, there are hardware
units which provide the incoming VGA request to the VGA software. The part based on
hardware undertakes the low level PCI protocol and the software manages and processes
the data content. The hardware modules which receives the VGA requests are explained in
section 4.2.2. A detailed description of the software data processing is illustrated in section
4.2.3.
The development of the VGA function was time consuming, because of two major issues:
complexity and poor documentation. The VGA was designed to be compatible to its pre-
decessors, MDA, CGA and EGA. As a result, the programming of the video modes are not
uniform. Furthermore, older and no longer existing video hardware units are still reflected
to the VGA register. To achieve fancy effects or to be suitable for special programs some
sub modes were added to the VGA video system which increases complexity. A further
problem is that the VGA specification is poorly and sometimes ambiguously documented.
The original IBM documentation was not sufficiently detailed [56]. This is also the cause
of the malfunction of early PCI VGA cards in certain computer systems. A way out of
this problem was the development of the VESA Video BIOS Extension [57]. This extension
provides higher screen resolutions and supports a linear framebuffer. However, the video
modes are supported by the most of the computer systems. In addition, there are also some
undocumented, hard to find or causal constrains implementing a PCI VGA card [58, 59].
The most of these constraints were found with trial and error while development and they
are briefly commented in section 4.2.1.
4.2.1 VGA address window
PCI cards get their address windows from the computer BIOS [59]. Before device initial-
ization a PCI device does not respond to any memory or I/O cycle. The PCI Configuration
Space of the PCI cards defines the so-called Base Address Register which contains the ad-
dress windows of the related PCI device. This approach is the central point of the Plug
and Play
3
capability of the PCI bus [58]. But a PCI VGA card is some special type of
PCI card. Conflicting to the Plug and Play ability of the PCI bus, a VGA card has fixed
address windows inside the computer system. Furthermore, these windows should not be
implemented as PCI address windows inside the PCI configuration space. A VGA card has
to assume that these address windows are assigned to the card itself.
PCI BAR Hiding The problem is to find a suitable PCI core which provides the mentioned
above features. It is difficult to find a suitable PCI core answering to an address window
which had not been defined inside the PCI BARs. Hence, it is not surprising because this is
the specified behavior of a PCI device. A VGA card is the sole exception. The alternative
solution was developing an own PCI Core, but this idea was rejected due to the complexity
of this task. The small size of the FPGA increases the effort of this development. The PCI
core of the Altera Corporation was selected to provide the basic PCI functionality. But the
core does not provide the mentioned VGA features. However, the core supports hardwired
3
Plug and play is a computer feature that allows the addition of a new device without requiring reconfig-
uration of device drivers.
47