Opentopia Directory Encyclopedia Tools

Original Amiga chipset

Encyclopedia : O : OR : ORI : Original Amiga chipset


The Original Chip Set (OCS) is a chipset used in the earliest Commodore Amiga computers. It was succeeded by the modestly improved Enhanced Chip Set (ECS) and greatly improved Advanced Graphics Architecture (AGA).

The original chipset appeared in the Amiga 1000, Amiga 2000 and Amiga 500.

Overview of chips

The chipset which gave the Amiga its unique graphics features consisted of three main custom chips, Agnus, Denise, and Paula. The OCS (and ECS) chipset was manufactured using NMOS technology by Commodore's chip manufacturing subsidiary, MOS Technology. All three were originally packaged in 48-pin DIPs; later versions of Agnus, known as Fat Agnus, were packaged in an 84-pin PLCC.

Agnus

The central aspect of the chipset's power is that all operations are synchronised with the output of the video beam. This includes access to the built-in RAM, which is known as chip RAM because the chipset has access to it. The CPU and other members of the chipset have to arbitrate for access with Agnus. From the perspective of system architecture, this is known as Direct Memory Access (DMA), and Agnus is the DMA Controller (DMAC) in that respect.

Agnus has a complex priority-based memory access policy. Bitplane data fetches are more important than blitter transfers, for example. As the original 68000 in Amigas can only access memory on every second clock cycle, Agnus operates a system where the time-critical custom chips access get the "odd" cycle and the CPU gets the "even" cycle, thus the CPU does not get locked out of memory access and does not appear to slow down. However, non-time-critical custom chip access, such as blitter transfers, can use up any unused odd or even cycles and, if the "BLITHOG" (blitter hog) flag is set, Agnus will lock out the even cycles from the CPU in deference to the blitter.

Agnus's timings were measured in "colour clocks" of 280 ns. This is equivalent to two lowres (140 ns) pixels or four hi-res (70 ns) pixels. Like Denise, these timings were designed for display on household TVs, and can be synchronised to an external clock source.

Blitter

The blitter—"blit" is shorthand for "block image transfer" (or bit blit). The Blitter is a highly parallel memory transfer and logic operation unit. It has three modes of operation: copying blocks of memory, filling blocks (e.g. polygon filling) and line drawing.

This allows the rapid copying of video memory, meaning that the CPU can be freed for other tasks. This was the beginning of modern-day graphics implementations, where dedicated GPUs (graphics processing units) operate independently of, but under instruction from, the CPU. The blitter therefore allowed a programmer to create bobs (blitter objects) that are controlled by subroutines under interrupt control. The main thread of the program is not used to perform the actual redrawing of the screen.

The blitter has never been improved to be able to rotate or zoom bobs, or to apply textures to polygons. When these graphics techniques became commonplace (such as with the release of the SNES and Voodoo/ATI Rage-class graphics accelerators), the Amiga chipset dated rapidly.

Technical Explanation

Copper

The copper—short for "co-processor"—is a programmable finite state machine. It is a relatively simple chip that executes a programmed instruction stream, closely linked to the video hardware.

This programmability allows for numerous display tricks.

Common functions of the copper are: Less common functions of the copper are:

Technical Explanation

When it is turned on, it has three states; either reading an instruction, executing it, or waiting for a specific video beam position. The copper runs a program called the copper list in parallel with the main CPU. The copper runs in sync with the video beam, and it can be used to perform various operations which require video synchronization. Most commonly it is used to control video output, but it can write to any of the chipset registers and thus can be used to set audio registers or interrupt the CPU.

The copper list has three kinds of instructions, each one being a pair of two bytes, four bytes in total:

The length of the copper list program is limited by execution time. The copper restarts executing the copper list at the start of each new video frame. There is no explicit "end" instruction, instead the WAIT instruction is used to wait for a location which is never reached.

Denise

Denise controls the video timings, but can also synchronise to an external video signal. Denise is programmed to fetch planar video data from 1 to 5 bitplanes and translate that into a colour lookup. The number of bitplanes is arbitrary, thus if 32 colours are not needed, 2, 4, 8 or 16 can be used instead. The number of bitplanes (and resolution) can be changed on the fly, usually by the copper. This allows for very economical use of RAM. There is also a sixth bitplane, which can be used in special modes:

There are two horizontal graphics resolutions, "lowres" with 140 ns pixels and "hires" with 70 ns pixels. This makes the display 320 or 640 pixels wide without using overscan. Denise supports very wide overscan; there is no need for a border around the graphics as other computers suffered from. Vertical resolution, without overscan, is 200 pixels for an 60 Hz NTSC Amiga or 256 for a 50 Hz PAL Amiga. This can be doubled using an interlaced display.

Denise can also lay sprites on top of the graphics, and detect collisions between sprites and the background, or between sprites.

Other features of Denise:

External video timing

Under normal circumstances, the Amiga generates its own video timings, but the chipset also supports synchronising itself to an external signal from the RGB monitor connector so as to achieve genlocking with external video hardware. There is also an 1 bit output on this connector that indicates whether the Amiga is outputting background colour or not, permitting easy overlaying of Amiga video onto external video. This made the Amiga particularly attractive as a character generator for titling videos and broadcast work, as it avoided the use and expense of AB roll and chromakey units that would be required without the genlock support. The support of overscan, interlacing and genlocking capabilities, and the fact that the display timing was very close to broadcast standards (NTSC or PAL), made the Amiga the first ideal computer for video purposes, and indeed, it was used in many studios for digitizing video data (sometimes called frame-grabbing), subtitling and interactive video news.

Video output

The video output of Denise is 12-bit digital RGB. Conversion to analog RGB is performed by external DACs. On the Amiga 2000, the digital RGB is available at a special video slot. Internally the display is limited to 6 bits per pixel (using planar representation) and 32 color registers for palette. This allows the Amiga to use the common colour lookup-table based color mode, ExtraHalfBrite color mode (often used by Amiga games) and Hold And Modify color mode (useful for displaying static images).

The chipset shares Chip RAM with the CPU. Accordingly, if the CPU attempts to access Chip RAM at any time, it may be blocked by the chipset. One consequence of this is that the CPU's performance reduces measurably if the custom chips are used heavily (such as in overscan mode). Some programs would disable the display to gain performance, such as during 3D raytracing calculations.

Paula

Audio features in general

Paula the sound chip has 4 DMA-driven 8-bit PCM sample channels. Two DMA channels are mixed into the left audio output, and the other two are mixed into the right output. Hardware mixing means multiplying each channel by its volume register value and adding the two PCM channels together. The only supported hardware sample format is linear 8-bit two's complement. With some special programming "tricks" it was possible to produce 14bit audio by combining two channels on different volume so you can in fact have "two" 14bit channels instead of four 8bit channels.

Audio hardware assisted instrument playback can go up to approximately 28867 Hz sampling rate. Each channel is a separate DAC with its own sample rate. Audio hardware functionality is closely related to video hardware timing, and as a result it is possible to double the maximum sampling rate on ECS/AGA machines by choosing a suitable video mode. CPU driven audio output is also possible, and it is not limited to sampling rate 28867 Hz or any video mode timing, but it consumes CPU time proportionally to the sampling rate.

Additionally the hardware allows the other channel in a channel pair to modulate the other channel's period or amplitude. It is rarely used on Amiga, but could be used to achieve tremolo and vibrato like effects.

The Amiga contains an analog low-pass filter (reconstruction filter) which is external to Paula. The filter is a 12 dB/oct Butterworth low-pass filter at approximately 3.3 kHz. The filter can only be applied globally to all 4 channels, as hardware channels do not have separate filters. The brightness of the Amiga's power LED is used to indicate the status of the filter. The filter is active when the LED is at normal brightness, and deactivated when dimmed (on early Amiga 500 models the LED went completely off). Models released before Amiga 1200 also have a static "tone knob" type lowpass filter that is enabled regardless of the optional "LED filter". This filter is a 6 dB/oct lowpass filter with cutoff frequency at 5 kHz (some circuit diagrams indicate cutoff frequency at 4.5 kHz, though).

Feature overview

Hardware registers

Each channel has a set of hardware registers. The registers are audxlch, audxlen, audxper, audxvol and audxdat, where x is the channel number from 0 to 3. In addition there is adkcon register which controls period and amplitude modulation of channels.

audxlch is the pointer into beginning of sample data in memory from which the DMA will start playback. Playback has length of 2*audxlen samples.

audxper specifies the amount of sound chip cycles (operating at half of the A500 system clock, approximately 3.54 MHz for PAL and 3.57 MHz for NTSC) to wait before loading a new sample value into audio output, and hence this specifies the sampling rate for instrument playback. If the audxper register value is too low the audio hardware cannot keep up to date providing sample data by DMA, and will repeat the previous two samples in those circumstances, distorting the sound playback. The maximum distortionless DMA sampling rate is approximately 28867 Hz.

auxvol register contains the volume in range 0-64 (silence plus 64 volume levels). The volume value is a multiplier for PCM samples.

audxdat register is a write-only register for doing sample playback with the CPU. CPU can write sample data into the register directly. Theoretically this allows very high sampling rates, but it consumes CPU time directly proportional to the sampling rate. Some players used copper to program the audio chip and generated sample data into the Copper instruction stream.

Audio state machines

Internally the audio hardware is implemented by four state machines each having eight different states. The state machines operate on half the A500 CPU frequency. Amiga Hardware Reference Manual contains the state machine description in detail. The state machine allows two methods for instrument playback regardless if DMA is used or not. Interrupt driven playback is CPU time efficient but non-trivial. CPU polling driven playback is simple but consumes more CPU time. In demos and games both methods are commonly used. For example, the original Protracker replay routine waits DMA (state machine transitions) with a CPU poll loop, but many demos use an optimized interrupt driven player system (such as The Player 6.0).

Floppy disk controller

The floppy controller is unusually flexible. It can read and write raw MFM or GCR data in any format via DMA or programmed I/O. It also provides a number of convenient features, such as sync-on-word (in MFM coding, $4489 is usually used as the sync word). MFM encoding/decoding is usually done with the blitter. Normally the entire track is read or written in one shot, rather than sector-by-sector.

In addition to the native 880 KiB 3.5-inch disk format, the controller can handle many foreign formats, such as:

Serial port

The serial port is rudimentary: programmed I/O only and lacking a FIFO buffer. It does have one positive attribute, which is that virtually any bit rate can be selected, including all the standard rates, MIDI rate, as well as extremely high custom rates.

See also

References

External links

 


From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.

Search Titles
0123456789
ABCDEFGHIJ
KLMNOPQRST
UVWXYZ?

E-mail this article to:

Personal Message: