Nascom Journal |
September 1982 · Ausgabe 9 |
Im Nascom-Journal 9/81 wurde eine Applikation mit dem Z80-DMA-Baustein vorgestellt. Angeregt durch Anfragen soll hier dieser Baustein etwas näher beschrieben werden. Anhand von Programmbeispielen (bereits im Nascom-Journal 7/8-82 abgedruckt! RED.) soll die Programmierung dieses komplexen Bausteins erläutert werden.
Der Beitrag ist die gekürzte Fassung eines Artikels, der in Markt&Technik 16/82 erschienen ist.
Der Z80-DMA-Controller soll hier nur soweit beschrieben werden, um einen ersten Eindruck über die Möglichkeiten dieses intelligenten Coprozessors zu gewinnen. Für genauere Details sei auf das Datenblatt verwiesen. Der DMA-Baustein verfügt, um mit den anderen Komponenten im Mikrocomputersystem in Verbindung zu treten, über eine interne Logik und Anschlüsse nach außen, die es erlauben, die Adreß-, Daten- und Kontrolleitungen wie die CPU zu steuern, Interrupts zur CPU zu senden und die Busverwaltung mit der CPU und anderen DMAs zu koordinieren. Zum Transfer von Daten sind dafür die Adreß-, Daten- und Kontrolleitungen (MREQ, IORQ, RD, WR) in ihrer Funktion identisch den entsprechenden Anschlüssen der CPU. Auch ist das Timing des DMA gleich dem der CPU. Die Logik der Interruptanforderung entspricht der aller anderen Z80-Peripheriebausteine (PIO, CTC, DART, SIO). Sie erlaubt damit über IEI und IEO eine hardwaremäßige Zuweisung der Priorität einer Interruptanforderung von einem I/O-Baustein und die Z80-spezifischen Vektorinterrupts. Anhand von Programmbeispiel 3 wird gezeigt, wie das Low Byte des Interruptvektors in den DMA geladen wird und bei welchen Ereignissen der DMA einen Interrupt auslösen kann. Der Zugriff auf den Bus wird gesteuert durch BUSREQ, BAI, und BAO. Ueber BUSREQ (Bus Request) teilt der DMA der CPU mit, daß er die Kontrolle über den Bus übernehmen will. Die CPU behandelt BUSREQ-Anforderungen noch vor dem nichtmaskierbaren Interrupt und dem normalen Interrupt. Ueber den BUSACK-Eingang der CPU, der mit dem BAI des höchstpriorisierten DMA verbunden ist, meldet die CPU, daß sie den Bus freigegeben hat und der DMA den Bus übernehmen kann. Durch BAI und BAO können Multi-DMA-Konfigurationen aufgebaut werden. Dazu wird immer BAO vom höherpriorisierten DMA mit BAI vom niederpriorisierten DMA verbunden (Daisy-Chain-Prinzip!). Der BUSREQ-Pin der CPU überwacht im inaktiven Zustand des DMA den Bus und stellt fest, ob ein anderer DMA aktiv ist. Dadurch wird der Zugriff auf den Bus erst erlaubt, wenn der andere DMA sich vom Bus zurückgezogen hat. Ein DMA mit hoher Priorität kann den aktiven DMA mit niedriger Priorität also nicht unterbrechen, sondern muß warten, bis dieser fertig ist. Den Pins CE und WAIT sind je zwei verschiedene Funktionen zugewiesen. Im passiven Zustand dient CE als Chip-Select und über INT wird das Interruptsignal ausgegeben. Durch Programmierung kann der CE als Wait-Eingang dienen und der INT-Pin das Puls-Signal aussenden, wenn ein Block von programmierbarer Länge übertragen worden ist. Durch den RDY-Eingang kann ein Peripherie-Baustein (SIO durch W/RDYA oder W/RDYB) den DMA zum Uebertragen auffordern.
Der DMA weist 3 Funktionsarten auf, die in den Programmbeispielen auch
angewandt werden: Übertragung
(Prg. 1),
Suche
(Prg. 2)
und kombinierte Suche/
| Seite 3 von 28 |
|---|