One-Board-Computer (1)

Was ist ein Single-Board-Computer, wozu setzt man ihn ein und wie ist er aufgebaut? Unser Projekt bietet eine erste Einführung in die Mikrocomputertechnik und einen Entwurf auf 68000er-Basis zum Nachbauen und Nachvollziehen.

Man nehme einen Atari ST, schnappe sich Rohrzange und Hammer und entferne alles Überflüssige: Tastatur, Bildschirm, die heißgeliebte Maus, Festplatte, Floppies, die gesamte Peripherie und vor allem den ganzen lästigen Blechverhau. Das einzige, was übrigbleibt, ist ein kleines grünes Motherboard mit Resetknopf und serieller Schnittstelle — immer noch ein voll funktionsfähiger Computer. Natürlich arbeitet er in Zukunft nicht mehr unter TOS, sondern unter einem speziell angepaßten Betriebssystem. Auf jeden Fall kann das Board aber immer noch Programme abarbeiten und über die serielle Schnittstelle mit der Außenwelt kommunizieren. So könnte es z.B. im Hintergrund umfangreiche Berechnungen durchführen, während der Benutzer auf einem zweiten Gerät »normale« Jobs erledigt. Natürlich hätte man die gesamte Peripherie auch einfach am Rechner belassen können. Abgesehen vom höheren Preis frißt unnötige Peripherie jedoch viel Platz und erhöht die Fehleranfälligkeit des gesamten Systems. Womit die drei wesentlichen Kriterien für einen Einplatinenrechner bereits definiert wären: Er soll möglichst zuverlässig arbeiten, dabei möglichst preiswert und kompakt sein.

Dem »nackten« Board fehlt allerdings noch eine Kleinigkeit, die bei praktisch allen Einplatinen-Maschinen auftaucht: die I/O-Leitungen. Single-Board-Computer dienen im wesentlichen der Steuerung von Geräten und/oder der Erfassung von Meßwerten. Man kann diese zwar auch über die RS232-Schnittstelle einspeisen, doch zum Übermitteln von Signalen auf serieller Basis ist eine gehörige Eigenintelligenz des Sensors erforderlich. Die meisten Meß- und Steuerungssignale sind jedoch einfacher digitaler Art: Endschalter, um das Ende eines Verfahrweges anzuzeigen, Motorsteuerungen (vor/zurück, an/aus), Reflexlichtschranken (um Codierstreifen abzutasten) usw. Gelegentlich werden auch analoge Signale benötigt, z. B. um Temperaturen zu messen.

Ein Single-Board-Computer, der zur Steuerung oder Überwachung eingesetzt wird, ist also ein »ganz normaler« Computer, bestehend aus RAM, ROM und CPU, der aber über möglichst optimale Verbindungen zur Außenwelt verfügt. Falls ein Mensch mit der Maschine kommunizieren soll, gehören zum System auch Ein-und Ausgabegeräte wie Bildschirm oder Tastatur. Wenn sich ausschließlich Maschinen angesprochen fühlen sollen, sind es I/O-Leitungen und AD-DA-Wandler.

Wer nicht auf einen universellen Einplatinencomputer zurückgreifen möchte bzw. sich einen selbst bauen will, muß zunächst festlegen, welche Bausteine er einsetzen will, wieviel RAM und ROM notwendig ist, wieviele I/O-Leitungen, serielle Schnittstellen und AD-DA-Wandler-Kanäle er benötigt und wie sich das Ganze auf einer möglichst kompakten Platine unterbringen läßt.

Der Zentralprozessor

Herzstück eines jeden Rechners ist die CPU (Central Processing Unit). Sie muß sorgfältig ausgewählt werden. Für die Wahl der CPU ist natürlich in erster Linie die Rechenleistung bzw. der Befehlssatz des Prozessors ausschlaggebend. Die Rechenleistung bestimmt sich grob gesagt daraus, wie komplex der Algorithmus zur Lösung der Problemstellung in Relation zur maximalen möglichen Antwortzeit ist. Soll der Einplatinencomputer z. B. zur Regelung mit PID-Charakteristik eingesetzt werden (Proportional-Integral-Differentialregelung, für viele Anwendungen die ideale, weil stabilste Regelungsart), so sind Multiplikationen und Divisionen erforderlich. Solche Rechenopertionen aber kennen die meisten kleineren Prozessoren nicht als Hardwarebefehl. Wenn die benötigten Regelzeiten zeitkritisch sind, also unter einigen Millisekunden liegen müssen, lassen sich kleinere Prozessoren nicht mehr einsetzen. Andererseits jedoch soll das Board so preiswert wie möglich sein: Ein 68020 kostet immer noch ein paar hundert Mark, ein gewöhnlicher 8-MHz-68000 nur ca. 10 Mark und ein 8-Bit-6502 noch weniger.

Noch ein weiteres Problem sollte bei der CPU-Wahl bedacht werden: der benötigte Adreßraum. Müssen mehr als 64 KByte adressiert werden, z. B. weil der Einplatinenrechner als Meßcomputer in einer Wetterstation arbeiten soll, die die gesamten Daten eines Monats speichern muß, kommt eine 8-Bit-CPU meist nicht mehr in Frage: Man müßte sonst den Speicher in einzelne Bänke aufteilen, was zusätzliche Außenbeschaltung erfordern würde.

Ein größerer Hauptprozessor, z. B. ein 68020, erfordert allerdings auch eine wesentlich aufwendigere Außenbeschaltung als ein kleiner 8-Bit-6502er: Der große Prozessor kennt mehr Busprotokolle und alle Busse sind breiter. Das erfordert mehr RAM- und ROM-Bausteine, will man auf aufwendige Multiplexschaltungen verzichten. Bei einem 16 Bit breiten Datenbus müssen mindestens zwei ROMs mit acht Bit Breite vorhanden sein.

Letzter Faktor bei der Auswahl der CPU ist außerdem die Maschinensprache: Es ist natürlich vernünftig, einen Prozessor einzusetzen, dessen Maschinensprache man bereits beherrscht, bzw. die einfach zu erlernen ist.

Bei Berücksichtigung all dieser Faktoren bieten sich dem Selbstbauer nur wenige Alternativen: Für einfache Anwendungen genügt ein 8-Bit-Prozessor völlig, beispielsweise ein 6502 oder ein Z80. Die meisten werden die Maschinensprache dieser Chips noch aus ihren Anfängerzeiten kennen, Assembler gibt es meistens als PD — übrigens ein nicht ganz unwichtiger Preisfaktor, denn für einen Mikrocontroller-Assembler ist man schnell etliche Hunderter los, außerdem laufen die natürlich nur auf DOSen.

Ohne ROM und RAM gebt nichts

Für komplexere Projekte und zeitkritische Operationen empfiehlt sich eigentlich nur der 68000er: Er bietet im Vergleich zu den 8-Bit-Chips sehr hohe Rechenleistung und es macht (z. B. im Vergleich zum Intel) Freude, ihn zu programmieren. Außerdem sind die notwendigen Entwicklungswerkzeuge meist bereits vorhanden, so-daß man Teile der Software gleich auf seinem ST austesten kann. Dafür ist die notwendige Außenbeschaltung für ein 68000er Board auch deutlich teurer: Solch ein Rechner kostet alles in allem (mit vernünftigen Sockeln usw.) leicht über 200 Mark, einen 8-Bit-Einplatinenrechner kann man für unter 100 Mark als kompletten Bausatz kaufen.

Beim Einsatz von Prozessoren der 68000er Serie empfiehlt sich der goldene Mittelweg: ein 68008. Intern ist er identisch zum 68000, hat aber nur 20 Bit Adreßbus (1 MByte) und nur einen acht Bit breiten Datenbus. Dieser letzte Faktor ist es, der Einplatinencomputer mit 68008 sehr preisgünstig macht: Man benötigt im wesentlichen nur einen Prozessor, ein ROM, ein RAM, einen preiswerten I/O-Baustein und etwas Adreßdecodierlogik, um ein fertiges Board aufzubauen. Die Komplexität hält sich in Grenzen, so daß sich ein Einzelgerät auch durchaus in Fädel- oder Wirewrap-Technik bauen läßt (wenn man sehr sorgfältig arbeitet). Durch die interne 32-Bit-Struktur ist der 68008 trotzdem um Klassen leistungsfähiger als z. B. ein 6502, obwohl er genauso leicht anschließbar ist.

Ohne Speicher fürs Betriebssystem und Arbeitsspeicher geht natürlich gar nichts, auch nicht in einem Einplatinencomputer. Allerdings sieht hier das Verhältnis ROM zu RAM ganz anders aus, als z. B. im Atari ST. Das liegt daran, daß der Einplatinenrechner seine Aufgabe nicht minuten- oder stundenweise erfüllt, um dann die Software zu wechseln, sondern Tage, Monate oder sogar Jahre überwiegend mit der gleichen Aufgabe beschäftigt ist. Da die Software also nicht ständig wechselt und meist kein Massenspeicher vorgesehen ist, auf dem sich verschiedene Programme unterbringen ließen, befindet sich das eigentliche Programm in der Regel bereits im ROM (für Selbstbauer heißt das natürlich EPROM). Alternativ dazu kann man auch eine Art BIOS im ROM unterbringen und dann das Programm über eine serielle Schnittstelle ins RAM downloaden. Typische Einplatinencomputer haben Platz für 8 bis 64 KByte EPROM.

Ein Einplatinencomputer mit dynamischen RAMs dagegen ist eine seltene Ausnahme. Dafür gibt es mehrere Gründe: Zunächst einmal läßt sich ein dynamischer Arbeitsspeicher nur sehr schwierig ansteuern. Damit die ICs weniger Beinchen bekommen, muß die Adresse nacheinander in zwei Teilen an den Chip gemultiplext werden. Das erfordert eine ganze Anzahl Bausteine (Multiplexer, Ansteuerlogik, Verzögerungsglieder usw.), die alle Platz wegnehmen. Ferner muß dynamisches RAM ständig »refresht« werden: Die Speicherzellen bestehen aus winzigen Kondensatoren, die sich immer wieder durch Leckströme entladen (etwa im 10-ms-Bereich). Deshalb muß der Inhalt kontinuierlich wieder aufgefrischt —refresht — werden. Dafür steuert man den Chip in einer bestimmten Art und Weise an. Der Gag dabei ist, daß die Refresh-Zyklen mit den Zugriffszyklen des Prozessors möglichst so intelligent verschachtelt werden sollten, daß keine Rechenzeit verloren geht. Und das ist nicht ganz einfach.

Kernpunkte der Single-Board-Konstruktion sind der Zentralprozessor; RAM und ROM. Über drei Bussysteme regelt die Steuerlogik die Kommunikation mit den Schnittstellen zur »Außenwelt«.
Verschiedene Bausteintypen für die Single-Board-Konstruktion

I/O-Bausteine einplanen

Nachteilig für Einplatinencomputer ist außerdem, daß typische dynamische RAMs in 1 Bit Breite vorliegen — hauptsächlich aus Gründen, die die Störsicherheit der Busleitungen betreffen. Statische RAMs sind aber üblicherweise 8 Bit breit (wie ROMs), man benötigt also für ein System mit 8-Bit-Datenbus nur einen einzigen statischen RAM-Baustein, wo ansonsten acht dynamische RAM-Chips nötig wären. Schließlich und endlich schlucken dynamische RAMs ordentlich Strom, denn sie lassen sich nicht inaktiv schalten, wie das bei statischen RAMs möglich ist: Die ziehen dann nur wenige Mikroampere und ermöglichen Batteriebetrieb auch weit länger als nur ein paar Stunden. Die meistverwendete Alternative für das Single-Board ist also statisches CMOS-RAM: Es läßt sich direkt an Adreß-und Datenbus angeschließen und mit einer kleinen 3,6-V-Batterie bleibt sein Inhalt über viele Jahre stabil.

Leider haben auch statische RAMs nicht nur Vorteile: Sie sind vergleichsweise teuer und man kann sie nicht mit so großen Speicherkapazitäten herstellen wie die dynamischen Kollegen. Der RAM-»Gehalt« eines typischen Single-Boards liegt bei ca. acht bis 64 KByte, im Regelfall also in gleicher Größenordnung wie der ROM-Bereich.

Die Kommunikation zur Außenwelt wird beim Einplatinencomputer — wie schon erwähnt — über digitale Ein- und Ausgabeleitungen, AD/DA-Wandler und serielle Schnittstellen realisiert. Für spezielle Anwendungen gibt es noch Lösungen wie den sog. I2C-Bus, doch die wollen wir hier vernachlässigen.

Digitale I/O-Leitungen sind leicht zu realisieren. Wer selbst einen Einplatinenrechner bauen möchte, sollte zunächst überlegen, wie viele davon er benötigt und wie flexibel sie sein müssen. Sollen Eingänge auch als Ausgänge verwendet werden können und umgekehrt? Kann das für jede Leitung unabhängig von den anderen passieren? In solchen Fällen gibt es praktisch keine Alternative zu fertigen Bausteinen, sog. PIOs (für Parallel-Input-Output). Ein typischer, sehr leistungsfähiger Vertreter ist der 68230 von Motorola, der 24 I/O-Leitungen zur Verfügung stellt, deren Richtung einzeln umgeschaltet werden kann. Weiterhin starten die Eingänge eingebaute Timer oder lösen Interrupts aus usw.

Es handelt sich also um einen sehr komplexen Baustein, der dementsprechend auch nicht ganz preiswert ist. Außerdem nimmt er mit seinen 48 Pins sehr viel Platz weg. Wer also lediglich einige Leitungen benötigt, wird im Regelfall zu einer billigeren und kompakteren Eigenkonstruktion aus 8-Bit-Latches greifen, die über die Adreßdecodierung angesteuert werden (wie das funktioniert, erklären wir in der nächsten Folge). Dies ist sehr preiswert zu realisieren.

Analog-Digital-Wandler und ihr Gegenstück, die Digital-Analog-Wandler, gibt es in vielerlei Ausführungen. Besonders praktisch sind solche Typen, die sich direkt an den internen Datenbus anschließen lassen. Sie sind relativ preiswert. Da wären z. B. der Ferranti ZN 427 (AD) oder der ZN 428 (DA), die mit acht Bit Genauigkeit wandeln und auch recht schnell arbeiten (10 s). Allerdings: ganz so naiv, wie man einen Einplatinencomputer aufbauen kann (der dann auch läuft), geht es bei A-D-Wandlern nicht: Wer vernünftig messen will, benötigt Erfahrung in Analogelektronik. Und die ist schwieriger zu beherrschen als die Digitaltechnik.

Serielle Schnittstellen dienen nicht so sehr zur Kommunikation mit Sensoren, sondern sorgen normalerweise für einen bequemen Daten- und evtl. Programmaustausch mit einem »richtigen« Computer. Jeder Rechner verfügt heute über eine serielle Schnittstelle, für Einplatinencomputer gibt es fertige Bausteine mit hoher Eigenintelligenz, die außer einem Quarz zur Ableitung der korrekten Baudraten nicht mehr viel benötigen. Diese Bausteine heißen UARTs (Universal Asynchronous Receiver/Transmitter). Für 68000er Systeme empfiehlt sich der MC68681 DUART (für Dual), der gleich zwei serielle Kanäle zur Verfügung stellt.

Da man normalerweise mit wenigen I/O-Leitungen und einer seriellen Schnittstelle auskommt, hat Motorola noch einen sehr interessanten Chip entwickelt, der auch im ST selbst eingesetzt wird: den MC68901, genannt MFP (Multi Function Peripheral). Er vereint acht frei programmierbare I/O-Leitungen, eine serielle Schnittstelle und vier Timer, die auch als Ereigniszähler eingesetzt werden können. Außerdem läßt sich der 68901 in vielerlei Variationen als Interrupt-Quelle einsetzen. Die genaue Dokumentation steht übrigens im Atari ST-Profibuch.

Jetzt wissen wir zwar einiges über die wichtigsten Komponenten des Boards aber noch nichts über seinen eigentlichen Aufbau. Zunächst designt man also alle notwendigen Chips um die CPU herum und verbindet Adreß- und Datenbus-Anschlüsse untereinander.

Aufbau des Einplatinenrechners

Natürlich war’s das noch nicht, denn über die Steuerlogik haben wir bisher kein Sterbenswörtchen verloren.

Die Steuerlogik übernimmt im wesentlichen zwei Aufgaben: Zum einen bestimmt sie, mit welchem Chip die CPU gerade kommuniziert. Dies geschieht durch die sog. Adreßdecodierung. Bausteine wie RAM, ROM und I/O-Chips verfügen über sog. Chip-Select-Leitungen (häufig CS oder auch CE, Chip Enable) genannt. Bausteine, bei denen diese Leitung nicht aktiv ist (entspricht im Regelfälle einem Low-Pegel), tun so, als wären sie erst gar nicht vorhanden. Die Adreßdecodierung sorgt nun dafür, daß je nach angesprochener Adresse der richtige Baustein das Chip-Select-Signal erhält, z.B. wird beim Atari der MFP 68901 (s. o.) angesprochen, falls die auf dem Adreßbus liegende Adresse im Bereich von SFFFA00 bis SFFFA2F angesiedelt ist. Der Adreßraum des Hauptprozessors wird dadurch in die sog. Memory Map aufgeteilt, die angibt, von wo bis wo RAM, und von welcher Adresse bis wo ROM zu finden ist usw.

Also fehlt auf unserem Board eine entsprechende Adreßdecodierlogik, die aus den Daten auf dem Adreßbus die Chip-Select-Signale erzeugt. Wenn die Adreßdecodierlogik das »mit wem« geklärt hat, muß die zweite Hälfte der Steuerlogik noch das »wie« regeln. Damit ist der Verkehr auf Daten- und Adreßbus gemeint: Etwa so wie es bei Staatsempfangen ein offizielles Protokoll gibt, das genau vorschreibt, was wann zu passieren hat, sind bei Computern sog. Busprotokolle erforderlich, die wir im nächsten Abschnitt behandeln. Die zweite Hälfte der Steuerlogik spielt also nichts anderes als »Verkehrspolizist« bei den Signalen auf unseren Bussen.

Und noch einige Kleinigkeiten sind zu beachten: So fehlt z. B. noch die Reset-Logik, die beim Einschalten der Spannungsversorgung dem Prozessor (und den meisten I/O-Chips) einen wohl-definierten Tritt verpaßt, damit diese auch richtig mit der Arbeit beginnen. Natürlich darf auch eine Takterzeugungsquelle nicht fehlen. Sie besteht meist aus einem Quarzoszillator.

Protokollarische Voraussetzungen

Ein Busprotokoll muß verschiedene Dinge regeln: fließen die Daten zum Prozessor hin oder kommen sie von ihm? Wann ist die vom Prozessor angelegte Adresse gültig? Wann enthält der Datenbus gültige Daten? Hat das RAM die Daten schon übernommen oder braucht es noch ein wenig Zeit? Diese Fragen gilt es durch die Hardware zu beantworten. Man unterscheidet im wesentlichen zwischen zwei Protokolltypen: dem synchronen und dem asynchronen Busprotokoll.

Betrachten wir zunächst ein einfaches synchrones Busprotokoll: Dazu erfinden wir zwei Steuersignale, die von der CPU erzeugt werden, wir nennen sie »Strobe« und »Read/Write« oder einfach »RAV«. Strobe steuert dabei, wann etwas passiert, RAV steuert die Richtung, in der etwas stattfindet (nämlich ein Datentransport). Das sieht dann bei genauerem Blick auf den Lese- und Schreibzyklus so aus: Zunächst legt der Prozessor jene Adresse auf den Adreßbus, von der er lesen oder zu der er schreiben will. Dann wird die RAV-Leitung entsprechend gesetzt. Anschließend aktiviert er die Strobe-Leitung. Das ist für den von der Adreßdecodierlogik angesprochenen Chip (z. B. ein RAM) das Signal, die Adresse auszuwerten. Bei einem Lesezugriff legt das RAM die Daten auf den Adreßbus und zwar so lange, bis Strobe wieder inaktiv wird. In diesem Moment (auf dem Oszilloskop als Signalflanke zu erkennen) nämlich übernimmt der Prozessor die Daten.

Prozessor übernimmt Signal

Im Falle eines Schreibzugriffes legt der Prozessor ständig Daten auf den Datenbus und das RAM übernimmt sie just in dem Augenblick, in dem der Prozessor Strobe inaktiv setzt. Das ist schon alles. Weil das Aktivieren bzw. Inaktivieren von Strobe synchron mit dem Systemtakt erfolgt, heißt dieser Bus »synchroner Bus«. Der Prozessor hat hier übrigens keine Möglichkeit festzustellen, ob der angesprochene Baustein vielleicht ausgefallen ist: Er verläßt sich blindlings darauf, daß alles klappt.

Beim asynchronen Bus (wie beim 68000) liegen die Dinge etwas anders: Es existiert zwar ebenfalls eine Strobe-Leitung (beim 68000 aus Effizienzgründen sogar zwei getrennte für Adreß- und Datenbus, genannt AS und DS), nennen wir sie wieder Strobe. Auch die RAV-Leitung ist wieder vorhanden. Zusätzlich gibt es jedoch ein sogenanntes DTACK-Signal (Data Transfer ACKnowledge — Bestätigung des Transfers). Beim Lese- und Schreibzyklus wird zunächst die gültige Adresse auf den Stack gelegt, RAV passend gesetzt und beim Schreibzyklus auch wieder die passenden Daten auf den Bus gelegt. Dann wird Strobe aktiviert. Jetzt beeilt sich das RAM, der geforderten Aufgabe nachzukommen: Soll geschrieben werden, übernimmt es die entsprechenden Daten, beim Lesevorgang legt das RAM die Daten auf den Bus. Nachdem das geschehen ist, aktiviert die Steuerlogik die DTACK-Leitung und meldet somit »Hallo Prozessor, ich bin fertig!« Beim Lesezyklus übernimmt der Prozessor dann just in diesem Moment alle Daten.

Was sind nun die Unterschiede zwischen synchronem und asynchronem Bus? Welcher eignet sich besser? Haben wir Atarianer (asynchron) hier einen weiteren soliden Grund, auf die DOS-en (synchron) zu schimpfen? Nein, haben wir nicht. Um das zu begründen, müssen wir etwas ausholen: Ein potentieller Vorteil des asynchronen Busses ist, daß er defekte Peripherie zu erkennen vermag. Findet die CPU nämlich nach einer bestimmten Anzahl von Taktzyklen immer noch kein DTACK vor, erzeugt sie in der Regel ein Buserror. Das passiert allerdings höchst selten.

Synchron und asynchron

Der asynchrone Bus ist außerdem unempfindlicher gegen überlange Leitungen, die zu Signalverzögerungen führen können. Darüber hinaus gibt es sogar drastische Vorteile bei Systemen z. B. mit mehreren Prozessoren: Diese laufen nämlich mitunter nicht mit dem gleichen Takt, also asynchron. Die Bereitstellung von synchronen Bussteuerungssignalen kann dann erhebliche Schwierigkeiten bereiten. Solche Computer bietet Atari aber nicht an. Außerdem gibt es bei PCs ja diese bremsenden Wait-States? Sowas gibt es doch beim 68000 nicht? Und jetzt kommt das dicke Ende: Die Antwort heißt doch — sie werden nur nicht so genannt. Warten muß der Prozessor immer dann, wenn die Peripheriebausteine zu langsam sind (zu hohe Zugriffszeit beim RAM usw.).

Beim synchronen Bus wird dazu ein spezielles (oben nicht erwähntes) Signal gegeben, mit dem der Baustein sein »nicht so schnell bitte!« kundtut. Dann verschiebt der Prozessor die Inaktivierung von Strobe um eine feste Taktzyklenzahl. Beim asynchronen Bus dagegen gibt der Baustein das DTACK-Signal wirklich erst dann, wenn er fertig ist und erzielt damit genau den gleichen Effekt. In Wirklichkeit ist der Bus in einem 68000er System mit nur einem Prozessor (genauer gesagt Busmaster) also ebenfalls ein synchroner Bus, denn wenn ein Peripheriechip sein DTACK nicht rechtzeitig gibt, verzögert sich der ganze Ablauf genau wie beim synchronen Bus immer um eine ganzzahlige Anzahl Taktzyklen...

Soweit zu unserer Einführung in die Grundlagen der Mikrocomputertechnik, unter spezieller Berücksichtigung von Einplatinencomputern. Im Grunde genommen ist die Sache nicht unlösbar kompliziert. In der nächsten Folge werden wir einen Beispiel-Einplatinencomputer haarklein auseinandernehmen und diverse Schaltungstricks erläutern, mit denen man einen solchen Rechner dann auch wirklich zum Funktionieren bringt. Wie so oft sind dann einige Haken und Ösen dabei. (hu)

Projektfahrplan

Folge 1: Einplatinencomputer: Was Single-Boards sind, wie sie funktionieren. Prinzipieller Aufbau, Stärken und Schwächen. Basis ist der ST.

Folge 2: Schaltung eines Einplatinencomputers auf 68000er Basis zum Ansteuern zeitkritischer Operationen. Erläuterungen zur Schaltung

Folge 3: Fortführung des Board-Aufbaus. Anprogrammierung und Erläuterungen zur Software.

Horowitz & Hill: The Art of Electronics, Cambridge University Press 1989 Motorola Inc.: Datenbücher von 68008, 68230,68681

Jankowski, Reschke, Rabich: Atari ST-Profibuch, Sybex


Alexander Niemeyer
Links

Copyright-Bestimmungen: siehe Über diese Seite