• Home »
  • Breadboard »

    18 Schritt:Schritt 1: Was ist ein Computer? Schritt 2: Eine Einführung in die Elektronik Schritt 3: Binärzahlen Schritt 4: Logikgatter Schritt 5: Binäre Counting (Programmzähler) Schritt 6: Register Schritt 7: Die ALU Schritt 8: Programmspeicher und RAM Schritt 9: Befehlsregister Schritt 10: Ausgangsregister Schritt 11: Clock Schritt 12: Architektur Schritt 13: Control Matrix Schritt 14: Mikroprogrammierung Schritt 15: Der Kauf Teile Schritt 16: Construction Schritt 17: Programmierung Schritt 18: Gehen Weitere

    Der Aufbau eines 8-Bit-TTL Computer klingt wie eine gewaltige und komplizierte Aufgabe, oder zumindest es mir tat, als ich begann meine Reise in die Architektur einer CPU-Grund zu verstehen. Wenn es darauf ankommt, ist eine CPU recht einfach in Betrieb, wenn Sie die Grundlagen hinter all ihrer Prozesse zu lernen. Dieses Projekt soll alle Interessierten in den Aufbau ihrer eigenen Computer und gewinnt das wunderbare Wissen, das zusammen mit dem Prozess geht zu helfen. Haben Sie keine Angst, um zu versuchen sein, können Sie nur zu lernen. Dieses Projekt wird durch die Beschreibung der Grundlagen der Elektronik beginnen. Danach werden die Grundlagen der binären und boolsche Logik beschrieben. Schließlich werden wir dann auf die Funktion der verschiedenen Teile einer einfachen-as-möglich-Computer (mit einigen Modifikationen) zu bewegen, wie in Malvino Text Digital Computer Electronics beschrieben. Dies bedeutet, daß das Endprodukt dieser Instructable wird ein Computer, der mit einem eindeutigen Befehlssatz programmiert sein kann. Dieses Projekt lässt auch viele der Designaspekte des Computers an Ihnen und dient als Leitfaden für den Aufbau Ihrer eigenen Computer. Dies liegt daran, es gibt viele Möglichkeiten, dieses Projekt zu nähern. Wenn Sie bereits über ein fundiertes Verständnis der Booleschen Logik und die Funktionsweise der binären fühlen sich frei, um das Fleisch des Projekts zu überspringen. Ich hoffe, dass Sie alle genießen und sich etwas aus einem Build wie diese, ich weiß, dass ich mir sicher war. Für dieses Projekt benötigen Sie: 1.) Ein Netzteil 2.) Breadboards + viele Drähte 3.) LED für Ausgangs 4.) Diverse Logik-ICs (später diskutiert) 5.) Freizeit 6.) Die Bereitschaft, mess up und aus Fehlern lernen 7.) Eine viel Geduld Optional (aber sehr nützliche): 1.) Oszilloskop 2.) Digital-Multimeter 3.) EEPROM-Programmierer 4.) Sonic Schraubendreher Nützliche Links für ein Projekt wie dieses: Digital Computer Electronics: http://www.Amazon.de/Digital-computer-electronics-Albert-Malvino/dp/007039861 TTL Cookbook: http://www.Amazon.de/TTL-Cookbook-Understanding-Transistor-Transistor-Integrated/dp/B0049UUV38 Step 1: Was ist ein Computer? Das mag wie eine sehr einfache Frage, die nicht braucht beantworten wenn in der Tat, es ist eine Frage, die viele Menschen nicht die richtige Antwort zu wissen scheinen. Computer sind viel länger als der Transistor in der mechanischen und theoretische Form existierte. Die eigentliche Definition von einem Computer wurde von einer sehr intelligent einzelnen mit Namen Alan Turing gedacht. Er beschrieb eine Maschine, die Turing Maschine bezeichnet wurde. Jeder Computer, die wir heute aus dem Computer oder Handy, die Sie dies lesen, auf den Supercomputern alle können als Turing-Maschine auf ihren am weitesten verein Niveau eingestuft werden. Was ist eine Turing-Maschine? Eine Turing-Maschine besteht aus 4 Teilen: dem Band, Kopf, Tisch und Zustandsregister. Um den Betrieb einer solchen Maschine zu visualisieren können, müssen Sie einen Filmstreifen überspannt stufenlos in jede Richtung vorstellen. Nun stell dir vor, dass jede Zelle des Filmstreifens kann nur eine aus einer definierten Menge von Symbolen (wie ein Alphabet) enthalten. Für dieses Beispiel nehmen wir an, dass jede Zelle kann nur enthalten entweder eine "0" oder eine "1". Diese Zellen können unendlich viel Zeit umgeschrieben werden, sondern ihre Informationen auf unbestimmte Zeit, bis sie wieder geändert werden, zu behalten. Der Teil der Turing-Maschine als Leiter bekannt sind, können Symbole zu den Zellen sowie entweder Schritt zu schreiben oder zu verringern ihre Position auf dem Filmstreifen durch eine gegebene ganze Zahl (ganze Zahl) von Zellen. Der nächste Teil ist die Tabelle, die einen bestimmten Satz von Anweisungen für den Kopf als "nach rechts 4-Zellen" und "set Zelle zu 1" auszuführen, wie hält. Der vierte und letzte Teil einer Turing Maschine wird eine Zustandsregister, dessen Zweck es ist, den aktuellen Zustand der Maschine zu halten. Der Staat umfasst den Unterricht sowie die aktuellen Daten auf dem Band. So einfach der Betrieb eines Computers ist. Wenn der Computer arbeitet, wird er tatsächlich als eine Turing-Maschine in Betrieb. Er verarbeitet Daten auf Ihrem Computer von einem bestimmten Satz von Anweisungen und Algorithmen statt. Die in diesem Instructable beschriebenen Computer ist ein sehr vereinfachtes Modell eines Computers, aber es immer noch funktioniert wie eine, die Sie mit einer Reihe von Anweisungen, die es werden folgen und führen Sie programmieren. Nützliche Links: Wikipedia auf Turingmaschinen: http://en.wikipedia.org/wiki/Turing_machine Schritt 2: Eine Einführung in die Elektronik Vor dem Aufbau eines 8-Bit-Computer, ist es äußerst nützlich, um ein Verständnis für die elementaren Eigenschaften von Strom und analogen Schaltungen haben. Es gibt Teile des Computers werden Sie bauen analogen Komponenten benötigen. Es gibt viele Elektronik selbstlern Führungen für minimalen Kosten, die einen Crash-Kurs in der Elektrotechnik zur Verfügung zur Verfügung. Ich persönlich fand Electronics Selbstlehrbuch von Harry Kybet und Earl Boysen, um ein wunderbares Buch für die Bewältigung der Welt der Analogelektronik sein. Electronics Selbstlehrbuch: http://www.Amazon.de/Electronics-Self-Teaching-Guide-Teaching-Guides/dp/0470289619/ Gemeinsame Komponenten: Widerstand - Limits Strom, gemessen in Ohm. Kondensator - Speicher zu laden, kann entweder polare oder nicht-polare (polar Bedeutung, dass es in die richtige Richtung gestellt werden, um zu arbeiten). In Farad gemessen. Diode - erlaubt nur Strom in eine Richtung fließen, bricht bei einer bestimmten Spannung, wenn in die falsche Richtung gestellt. Transistor - ein Stromtor, das durch einen dritten Stift, der als Vermittler fungiert gesteuert wird. Es gibt viele Arten von Transistoren, aber hier werden wir über die BJT (Bipolar Junction Transistor), der in zwei Typen kommt hält: NPN- und PNP. Strom, Spannung und Widerstand Hand in Hand gehen in einem Stromkreis. V = IR: das Verhältnis zwischen den drei mit Ohmschen Gesetz ausgedrückt werden. Mit anderen Worten entspricht die Spannungsstrom in Ampere multipliziert mit dem Widerstand in Ohm. Ohmsche Gesetz ist eine der wichtigsten Formeln in der Elektronik und es lohnt zu wissen, weg von der Oberseite des Kopfes ist. Dem Ohmschen Gesetz anwenden müssen Sie den Widerstand eines Stromkreises kennen. Um den Wert eines Widerstandes Ihnen, ihren Farbcode verwenden zu finden. Das Widerstandsfarbcode wird von der sichtbaren Spektrums und kann in vielen verschiedenen Moden gespeichert. Für diejenigen, die nicht interessieren, um sie auswendig zu lernen, gibt es eine Fülle von Tools, die Ihnen helfen, den richtigen Wert für Ihr Widerstand zu finden gibt. Zur Berechnung der Gesamtwiderstand in einem Stromkreis benötigen Sie zwei Formeln für zwei verschiedene Konfigurationen von Widerständen: Reihen- und Parallel. In Serie folgt einem Widerstand die andere, während sie parallel nebeneinander zu arbeiten. In Serie Die Formel ist ganz einfach: Widerstände in Reihe: R (Gesamt) = R (1) + R (2) +. . . + R (N) Was bedeutet, dass Sie nur noch zu addieren Sie die Werte der Widerstände. Widerstände in Parallelschaltung: R (gesamt) = 1 / {1 / R (1) + 1 / R (2) +. . . + 1 / R (n)} Ein gutes Werkzeug, um den Widerstand Farbcode zu finden: http://www.csgnetwork.com/resistcolcalc.html Es ist einfacher, die Formel für Widerstände parallel zu verstehen, wenn Sie der Widerstände denken, wie die Zusammenarbeit, wie zwei Menschen zusammen an einem Projekt arbeiten. Die gleiche Formel wird für Textaufgaben in dem Sie die Geschwindigkeit, mit der Zwei-Personen-Betrieb gegeben werden verwendet, und Sie müssen herausfinden, wie schnell ihr Projekt werden, wenn die Arbeit zusammen abgeschlossen werden. Zu finden, wie viel Strom auf einer bestimmten Komponente mit einem bestimmten Widerstandswert Sie einfach in den Widerstand und Spannungswerte Stecker in das Ohmsche Gesetz und lösen nach I. Zum Beispiel geliefert: Ein Licht wird in einem Schaltkreis und zwei 1K (tausend Ohm) Widerstände sind vor ihr parallel angeordnet. Mit einer Stromversorgung von 9 Volt, wieviel Strom dem Licht versorgt? 1.) Berechnen Sie R (insgesamt): R (gesamt) = 1 / (1/1000 + 1/1000) = 1 / (2/1000) = 1000/2 = 500 Ohm 2.) Berechnen Sie aktuelle mit dem Ohmschen Gesetz: 9 = I * 500 I = 9/500 = 0,018 A = 18 mA (Milliampere) Sie können auch Widerstände zu arrangieren in einer Schaltung, um Spannung zu regeln. Dies nennt man einen Spannungsteiler und umfasst zwei in Reihe geschaltete Widerstände. Die Ausgangsspannung der beiden Widerstände ist an ihrer Verbindungsstelle. Für eine bessere Idee, betrachten Sie die Abbildung, die ich beigefügt. In dieser Anordnung ist die Formel für die Ausgangsspannung ist: V (out) = V (Quelle) * R (2) / {R (1) + R (2)} Kondensatoren, die in Ihrem Computer mit dem Bau der Uhr sein. Die Uhr ist nur eine Schaltung, die zum Ein- und Ausschalten mit einer konstanten Rate. Genau wie Widerstände, Kondensatoren haben zwei Formeln für die Suche nach den Gesamtwert für beide Reihen- und Parallelkonfigurationen. Serie: C (gesamt) = 1 / {1 / C (1) + 1 / C (2) +. . . + 1 / C (N)} Parallel: C (gesamt) = C (1) + C (2) +. . . + C (N) Die Rate, bei welcher ein Kondensator Ladungen hängt von dem Widerstand der Schaltung vor (oder nach, wenn Sie Entladen) des Kondensators sowie auch dessen Kapazität. Das Aufladen eines Kondensators wird in Zeitkonstanten gemessen. Es dauert 5 Zeitkonstanten vollständig laden oder zu entladen einen Kondensator. Die Formel zur Ermittlung der Zeitkonstante eines Kondensators in Sekunden ist: T (konstant) = Widerstand * Kapazität Dioden sind einfach in der Bedienung und kommen in praktisch, wenn Sie einen TTL-Computer. Sie erlauben nur Strom in einer Richtung fließen. Als sie in die richtige Richtung gestellt werden, sind sie, was vorwärts vorgespannt genannt. Wenn sie umgekehrt sind sie brechen bei einer bestimmten Spannung. Wenn eine Diode mit dem aktuellen Arbeits ist rückwärts vorgespannt. Ein Transistor arbeitet wie ein Ventil, das durch Strom betrieben wird. A BJT hat drei Stifte: der Kollektor, der Emitter und der Basis. Der Einfachheit halber in diesem Schritt I ein NPN-Transistor, in dem Strom fließt vom Kollektor zum Emitter zu beschreiben. Der Strom an der Basis angelegt steuert, wie viel der Strom fließt vom Kollektor zum Emitter. Transistoren sind ideal für viele Anwendungen aufgrund ihrer Fähigkeit, ein Signal zu verstärken. Dies, weil das an der Basis des Transistors angelegten Stroms kann beträchtlich kleiner als der Strom gesteuert werden. Dieser Gewinn an Strom heißt die Stromverstärkung des Transistors ist, oder beta. Die Formel für die beta ist: Beta = Current (Collector) / Strom (Basis) Wenn ein Transistor ist vollständig auf gesagt wird gesättigt. Ein boolean-Transistor ist eine, die entweder ist ihre gesättigten oder Aus-Zustand und nie dazwischen. Dies ist die Art von Transistor, die Sie werden mit meist Umgang in der digitalen Elektronik. Transistoren bilden die Logikgatter für einen Computer zu funktionieren benötigt. Diese werden später beschrieben. Nützliche Links: http://en.wikipedia.org/wiki/Resistor http://en.wikipedia.org/wiki/Capacitor http://en.wikipedia.org/wiki/Diode http://en.wikipedia.org/wiki/Transistor Schritt 3: Binärzahlen Heute sind wir zu einem weltweiten Nummerierungssystem, das auf die Zahl zehn basiert. Damit meine ich, dass wir keine Ziffer in unserem Zahlensystem, die es wert ist der Wert von zehn und damit unser Zahlensystem ist Basis zehn. Denken Sie an unserem Zahlensystem als Kilometerzähler. Ein Kilometerzähler zählt von der niedrigsten Stelle zur größten Stelle und dann zwingt den nächsten Läufer in Folge an einen Ort zu gelangen. Beispielsweise: 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 <- auf die nächste Ziffer Carry Binary ist Basis zwei, was bedeutet, dass es nur zwei Ziffern und hat keine Ziffer für die 2. Binary hat nur die Ziffern 0 und 1 oder "off" und "on". Um in binärer zählt man einfach anzuwenden den Kilometerzähler-Technik: 0001b - 1 0010b - 2 0011b - 3 0100b - 4 0101b - 5 0110b - 6 0111b - 7 1000b - 8 etc . . . Es ist ein weiterer Faktor unseres Zahlensystems, die es stützen zehn macht; wie wir höher in Ziffern zu bewegen das Gewicht der Zahlen zu erhöhen, indem eine Zehnerpotenz. Beispielsweise 1 = 10 ^ 0, 10 = 10 ^ 1, 100 = 10 ^ 2 usw. . . In binären, die Dinge sind natürlich Basis zwei und als solche ist jede folgende Zahl eine andere Zweierpotenz. 1b = 1 = 2 ^ 0, 10b = 2 = 2 ^ 1, 100b = 4 = 2 ^ 2 usw. . . Um eine Dezimalzahl in Binär konvertiert es einen einfachen Trick als Doppel dabble, die den Prozess macht viel mehr einfach bekannt: Sagen, dass wir zu einem binäre Zahl zu konvertieren 13 wollen, beginnen wir, indem man 13 durch zwei und Aufschreiben der Rest. Dann direkt darüber Sie aufschreiben die gefundene Nummer zu, ohne den Rest (6 in diesem Fall) und Kluft, die durch zwei, und notieren Sie den Rest über die vorherige. Sie setzen diesen Vorgang, bis Sie zu erreichen entweder eine 1 oder eine 0. Am Ende werden Sie von oben nach unten zu lesen, um das Ergebnis zu erhalten. 1/2 = 0 R1 <von oben nach unten gelesen. Das Ergebnis ist 1101 oder 2 ^ 0 + 0 + 2 ^ 2 + 2 ^ 3 = 1 + 0 + 4 + 8 = 13. Dies wird als ein binäres Wort. 3/2 = 1 R1 < 6/2 = 3 R0 < 13/2 = 6 R1 < Hexadezimal wird sehr häufig mit binären verwendet. Hexadezimal ist Basis 16 und enthält die Ziffern 0-9 und af. Eine hexadezimale Zahl wird verwendet, um einen Nibble oder vier Bits von Daten zu beschreiben. Ein Bit ist eine einzelne 1 oder 0 des Binär. Ein Nibble kann von 0 bis 15 (0000-1111) zählen, bevor das nächste Bit in der nächsten knabbern. Zwei Halbbytes zusammen ein Byte oder 8 Bits. Da die erste Ziffer ist 2 ^ 0, ist die letzte Ziffer gewichtete 2 ^ 7. Daher ein Byte kann überall im Bereich von 0 bis 255. Um die Byte-00101110 (46 in dezimal) im hexadezimalen Sie zuerst trennen die beiden Halbbytes in 0010 und 1110. Die erste knabbern hat einen Wert von 2, und der zweite Ausdruck man hat einen Wert von E (oder 14 dezimal). Daher wird das Byte 00101110 hexadezimal würde 2E sein. Nützliche Links: http://en.wikipedia.org/wiki/Binary_numeral_system http://en.wikipedia.org/wiki/Hexadecimal Schritt 4: Logikgatter Ein Computer besteht aus Tausenden von Logikgattern angeordnet zur Durchführung bestimmter Funktionen. Ein Logikgatter ist eine Komponente in digitaler Elektronik, dessen Ausgang abhängig vom Zustand ihrer Eingänge. Die meisten logischen Gatter zwei Eingänge und einen Ausgang. Sie können von Logikgattern, wie die Entscheidungsträger in der digitalen Elektronik denken. Die sechs Hauptlogikgatter in der digitalen Elektronik verwendet werden, sind: AND Gate: Der Ausgang ist aktiv, wenn alle, wenn seine Eingänge sind hoch. OR Gate: Der Ausgang ist aktiv, wenn einer seiner Eingänge sind hoch. NICHT Gate: Nur hat einen Eingang. Der Ausgang ist aktiv, wenn sein Eingang ist gering. NAND-Gate: Der Ausgang ist aktiv, wenn alle seine Eingänge sind hoch. NOR Gate: Der Ausgang ist aktiv, wenn keiner der Eingänge hoch sind. XOR-Gate: Der Ausgang ist aktiv, wenn eine ungerade Anzahl der Eingänge hoch sind. Tri-State-Puffer: Puffer A, der durch eine dritte logische Signal gesteuert wird. Es ist wichtig zu bemerken, dass das Unterschied zwischen einem hohen Signal "1" und einem niedrigen "0" -Signal. Ein High-Signal kann entweder eine Verbindung mit der positiven Spannung, oder es kann eine schwimm eingegeben werden. Eine schwimmende Eingang ist einer, der nicht mit einem beliebigen Ausgang geschaltet ist. Ein Beispiel eines schwebenden Eingang wäre eine, die überhaupt nicht verbunden ist, oder eine, die mit dem Ausgang eines 3-Zustands-Puffer nicht aktivierte verbunden ist. Ein Low-Signal vorhanden ist, wenn ein Eingang auf Masse. Logikgatter ineinander eingespeist werden, um fast jede erdenkliche Funktion zu erzeugen. Zum Beispiel können zwei NOR-Glieder ineinander eingespeist, um ein Bit von Daten in einem Zwischenspeicher zu speichern, während RS_NOR Energie dem circuit.Step 5 geliefert werden: Binärzählung (Programmzähler) Eine der wesentlichen Teile an einem Computer ist seine Programmzähler. Der Programmzähler liefert der Computer mit der aktuellen Adresse des auszuführenden Befehls. Um für den Programmzähler zu arbeiten, aber es muss im binären zählen. Um dieses JK Flip-Flops verwendet werden, zu tun. Ein Flip-Flop ist eine Anordnung von Logikgattern, die ein Bit speichert (wie der RS_NOR Verriegelung in der Logikgatter Schritt beschrieben). Ein JK-Flip-Flop seinen Zustand ändert, wenn sein Takteingang auf hoch geht und dann wieder niedrig (dessen Eingänge J und K haben auch hoch zu sein). Mit anderen Worten, wenn ein JK-Flip-Flop erhält der fallenden Flanke eines Taktimpulses ändert sich sein Zustand von entweder "0" auf eine "1" oder von einer "1" zu einer "0". Wenn Sie die Ausgabe eines JK-Flip-Flop eine Verbindung zu einem anderen und kaskadieren sie das Ergebnis ist ein Binärzähler, der wie ein Kilometerzähler fungiert. Dies liegt daran, dass das erste JK-Flip-Flops in der Folge hoch geht, und dann niedrig, die nächste in der Folge löst es. Der Uhr-Frequenz (wie oft es stellt sich ein und aus einem zweiten) ist mit jedem aufeinanderfolgenden Zugabe eines JK-Flipflops halbiert. Deshalb ist ein JK-Flip-Flops wird auch als Teile-durch zwei-Schaltung. Das resultierende Muster für vier JK Flip-Flops wird 0000, 0001, 0010, 0011, 0100, etc. sein. . . Für die in diesem Instructable beschriebenen einfachen-as-Computer möglich, aber es gibt ein paar weitere Funktionen, die Sie, um der Computer betriebsbereit zu machen brauchen. Damit der Computer in der Lage, sein Programm es die Fähigkeit, zu löschen oder setzen alle ihre Ausgänge auf Null muss neu gestartet werden. Der Programmzähler benötigt auch die Fähigkeit, ein binäres Wort für die JMP op-Code, der den Computer befähigt, eine bestimmte Instruktion zu springen laden. Logikgatter verwendet, um dieses Ziel zu erreichen. Zum Glück für uns Binärzählern kommen in praktisch-Chips mit allen Funktionen, die Sie need.Step 6: Register Register: Registern möglicherweise der wichtigste Bestandteil eines Computers sein. Ein Register speichert vorübergehend Wert während des Betriebs eines Computers. Die in diesem Instructable beschriebenen 8-Bit-Computer zwei Registern ihrer ALU, ein Register, um den Strombefehl und ein Register für die Ausgabe des Computers speichern befestigt. In Abhängigkeit von dem Chip, wird ein Register 2 oder 3 Steuerstifte aufweisen. Die Register, die wir verwenden werden, haben zwei Steuerstifte: Ausgangsfreigabeeingang und aktivieren (beide aktiv, wenn niedrig). Wenn das Ausgabefreigabestift, um den gegenwärtig gespeicherten Binärworts Masse angeschlossen wird über die Ausgangsanschlüsse gesendet. Wenn der Eingangsstift ist, um die an den Eingangsanschlüssen vorhanden Binärwort mit Masse verbunden ist, in das Register geladen. Ein Beispiel für die Verwendung eines Registers auf einem Computer ist, der Akkumulator von der ALU (Arithmetik-Logik-Einheit, die mathematischen Operationen durchführt). Der Akkumulator ist wie der Notizblock für den Computer, der den Ausgang der ALU speichert. Der Druckspeicher ist auch der erste Eingang für die ALU. Die B-Register ist der zweite Eingang. Für eine Additionsoperation, wird der erste Wert in den Akkumulator geladen. Danach wird der zweite Wert zu dem ersten Wert addiert wird in das Register B geladen. Die Ausgänge der Speicher und Register B verschmolzen sind offen und werden ständig Einspeisung in das ALU. Der letzte Schritt für die Zugabe an den Ausgang der Operation in den Akkumulator zu übertragen. Registern arbeiten alle auf einem gemeinsamen Datenleitung rief die Bus. Der Bus ist eine Gruppe von Leitungen, deren Anzahl gleich der Architektur einer jeden CPU. Das ist wirklich Putting das Pferd vor den Karren Berücksichtigung Busbreite ist das bestimmende Messung für CPU-Architektur. Da eine digitale 1 bedeutet, positive Spannung, und eine 0 bedeutet Erdung, es wäre unmöglich, ohne ihnen die Fähigkeit zur selektiven Verbinden und Trennen von der Bushalte haben alle Register teilen sich die gleiche Bus. Zum Glück für uns, es gibt einen dritten Zustand zwischen 1 und 0, die ambivalent aktuellen imput, die für dieses große Werk ist. Geben Sie den Tri-State-Puffer: einen Chip, den Sie wahlweise Gruppen von Drähten mit einem Bus ermöglicht. Verwendung einiger dieser Tri-State-Puffer, Ihnen jedes Registers und Chips auf dem gesamten Computer benötigen Kommunikationsanteil dieselben Leitungen wie einem Bus machen können. Im Fall von meinem Computer, es war eine 8-Draht-breites Band von Breadboard-Steckplätze, die die unteren Stifte des Steckbrett aufgespannt. Experimentieren, um mit Bussen, da sie alle Informationen, die von Stück zu im Computer piece tragen ein fehlerhafter Bus könnten fehlerhafte Daten, die die line.Step 7 unten plätschert bedeuten: ALU Die ALU (arithmetische Logikeinheit) eines Computers ist der Teil, mathematische Operationen ausführt. Für die SAP-Computer wird es müssen nur zwei Funktionen haben: Addition und Subtraktion. Addieren und Subtrahieren in binärer funktioniert sehr ähnlich wie die Addition und Subtraktion in Dezimalform ausgedrückt, zum Beispiel: 1 <- Carry 1 1 <- Übertragsbits 05 0101 05 0101 10 1010 Um binäre hinzufügen, die wir brauchen, was ein Volladdierer bezeichnet. Ein Volladdierer effektiv fügt ein Bit von binären zu einem anderen mit einem Übertrag in und durchführen. Der Übertrag in einer Volladdierer ist wie ein dritter Eingang für den Additionsprozess. Sie sind zu Kette mehrere Volladdierer zusammen verwendet werden. Der Übertrag aus einem Volladdierer tritt auf, wenn ein Paar von Einsen in dem Additionsverfahren. Der Übertrag aus einem Volladdierer in den Übertrag in den mehrere Bits binärer hinzuzufügen speist. Um einen Volladdierer zu bauen benötigen Sie zwei XOR-Gatter, zwei UND-Gatter und ein ODER-Gatter. Um binäre subtrahieren wir brauchen, um eine Zahl zu seiner negativen Gegenstück zu konvertieren und es auf die Anzahl wir aus der Subtraktion hinzuzufügen. Dazu nutzen wir die so genannte 2-Komplement. Um das 2er-Kompliment von einem binären Wort, das Sie jedes Bit invertieren nehmen (Wechsel alle 0, eine 1 und jeder 1 zu einer 0), und fügen Sie ein. 5 = 0101, -5 = 1010 + 1 = 1011 Nicht verwendet -> 1 1 10 1010 + (- 5) 1011 5 0101 Zur Steuerung der Invertierung von Bits verwenden wir XOR-Gatter mit einem in der Regel niedriger Eingangs. Einem normalerweise niedrigen Eingangs, ist der Ausgang gleich dem anderen Eingang. Wenn Sie den Steuereingang hoch eingestellt Sie invertieren die anderen Eingang. Wenn wir dieses Paar Inversion mit einem Bit mit dem Carry in der Volladdierer eine Subtraktionsoperation ist das Ergebnis gesendet. Schritt 8: Programmspeicher und RAM Der Programmspeicher des Computers werden die Befehle zu speichern, die ausgeführt werden. Es wird auch als RAM, die Werte während des Betriebs des Computers speichern handeln. Der Programmspeicher besteht aus drei Hauptteilen: dem Speicher, wobei der Speicheradressenregister (MAR) und dem Multiplexer. Der Speicher ist ein Chip, der 16 Byte Speicherplatz aufweist. Es ist ein Vier-Bit-Adresse, die in den Speicher, die es sagt, was Byte sollte es lesen oder zu schreiben zugeführt wird. Der MAR speichert die aktuelle Adresse für das Byte zu lesen oder aus dem Speicher geschrieben werden. Es wird ständig die Einspeisung in den Speicherchip, wenn der Computer in seiner Programmierungszustand. Ein Multiplexer ermöglicht es Ihnen, zwischen zwei Ein- und Ausgänge der gegebenen Eingabe zu wählen. Die in meinem Computer verwendet Multiplexer ermöglicht es Ihnen, zwei Vier-Bit-Eingänge (die MAR und eine manuelle Eingabe) auswählen. Wenn sich der Computer in der Programmierzustand der Hand-Adresse wird in den Speicher eingespeist und können Sie Bytes in den Speicher an der Adresse, die Sie define.Step 9 Computer zu programmieren: Instruction Register Das Befehlsregister eines Computers speichert den aktuellen Befehl und eine Adresse, die der Befehl operieren. Es ist ein sehr einfaches Bauteil mit einem sehr wichtigen Zweck. Während des Betriebs des Computers, wird der Inhalt einer bestimmten Speicheradresse in das Befehlsregister übertragen. In meinem Computer die am weitesten links fout Bits sind die OP-Code oder Stromanweisung durchgeführt werden. Die rechten vier Bits oder niedrigsten vier Bits, sagen dem Computer, welche Adresse für den Betrieb zu verwenden. Die ersten vier Bits ständig füttern die OP-Code in die Steuermatrix, die den Computer, was sie für einen gegebenen Befehl zu tun erzählt. Die am weitesten rechts vier Bits füttern wieder in den Computer so, dass die Adresse in das MAR oder Programm counter.Step 10 übertragen werden: Ausgangsregister Wenn ein Computer waren nur speisen den Ausgang des Busses an den Bediener würde die Auslese wenig bis keinen Sinn machen. Aus diesem Grund gibt es ein Ausgangsregister, deren Zweck es ist, zum Speichern von Werten für die Ausgabe bestimmt. Der Ausgang für Ihren Computer kann entweder einfache LEDs, die Raw-Binary-Anzeigen, oder Sie eine Anzeige, die auf Siebensegmentanzeigen liest tatsächlichen Zahlen haben könnte. Es hängt alles davon, wie viel Arbeit, die Sie in Ihrem Computer abgelegt werden soll. Für meinen Computer benutze ich einige IV-9 Russian Numitron Rohre für die Ausgabe von meinem Computer verbunden mit einem Arduino, um die Umwandlung von binär zu tun, um decimal.Step 11: Uhr Jeder Teil im Computer ist vollständig, um vollständig funktionieren zu können synchronisiert werden. Um diesen Computer tun muss, eine Uhr oder einen Schaltkreis, der einen Ausgang, der zum Ein- und Ausschalten mit einer konstanten Rate aufweist. Der einfachste Weg, dies zu tun ist, um eine 555-Timer zu verwenden. Die 555-Timer ist ein sehr beliebtes Timer, der in der Zeit der Entstehung des Computers, der Stille ist sehr beliebt bei Hobby heute erfunden wurde. Um die 555-Schaltung Sie wissen, wie man arbeitet, muss zu bauen. Die Uhr für Ihren Computer sollte zunächst relativ langsam sein. 1 Hz oder einer Schwingung pro Sekunde, ist ein guter Ausgangswert. Dies ermöglicht Ihnen, den Betrieb des Computers zu sehen und auf eventuelle Fehler. Die 555-Chip braucht zwei Widerständen und einem Kondensator für den Betrieb. Die beiden Widerstände bestimmen, wie lange die hohe und niedrige Impulse sowie die Gesamthäufigkeit. Der Kondensator ändert die Impulslänge für beide. Wenn Sie noch keine Erfahrung mit der 555-Timer haben, empfehle ich mit ihnen zu experimentieren. Nützliche Links: http://en.wikipedia.org/wiki/555_timer_IC Schritt 12: Architektur Dies ist der Schritt, in dem alles zusammenläuft. Es ist Zeit, um die Architektur des Computers zu entwerfen. Die Architektur ist, wie die Register und verschiedene Komponenten des Computers organisiert. Der Design-Aspekt ist völlig bis zu Ihnen, obwohl es hilft, ein Ziel vor Augen (was Sie Ihren Computer tun wollen) und ein Modell, um weg von zu gehen zu halten. Wenn Sie Ihren Computer nach der Minen entwerfen wollen, ist es völlig in Ordnung. Ich änderte die Architektur des SAP-1 in Digital Computer Electronics gefunden für meine 8-Bit-Computer. Ein Design-Aspekt, immer im Auge zu behalten ist, wie Daten zwischen den verschiedenen Komponenten des Computers übertragen werden. Die gebräuchlichste Methode ist, um einen gemeinsamen "Bus" für alle die Daten auf dem Computer. Die Ein- und Ausgänge der Register, ALU, Programmzähler und RAM Alle sind mit dem Bus des Computers angeschlossen. Die Drähte werden in der Reihenfolge vom niedrigstwertigen Bit (1) bis zur höchsten Bit (128) angeordnet ist. Irgendwelche und alle Ausgänge, die an den Bus angeschlossen sind vollständig getrennt, während inaktiv sonst würden sie miteinander verschmelzen und zu einer fehlerhaften Ausgabe. Dazu nutzen wir Tri-State-Puffer, um die Ausgabe bestimmter Elemente zu steuern, dass standardmäßig wie der Akkumulator ALU und Ist-Eingabe für die Programmierung der computer.Step 13 Ausgabe: Control Matrix Die Steuermatrix eines Computers erzählt jedes Einzelteil, wenn die Ein- und Ausgabe seinen Wert zu nehmen. Es gibt mehrere Zustände jeder Operation in einem Computer. Diese Zustände werden durch eine Art von Gegen genannt Ringzähler ausgelöst. Ein Ringzähler hat nur ein wenig hoch zu einer Zeit und durchläuft seinen Ausgängen nacheinander. Zum Beispiel, wenn ein Ringzähler besitzt 4 Ausgänge es wird zunächst seinen ersten Ausgang aktiv. Beim nächsten Taktimpuls wird es seinem zweiten Ausgang hoch (und die erste low) gesetzt. Der nächste Taktimpuls wird das Bit einem Ausgang höher und so weiter voranzutreiben. Diese Stufen sind T-Staaten genannt. Der Computer in diesem Instructable verwendet 6 T Zustände für den Betrieb einer Befehls. Die ersten drei T Zustände sind, was dem Aufrufzyklus, in dem der aktuelle Befehl abgerufen und in das Befehlsregister gesetzt bezeichnet. Der Programmzähler wird ebenfalls um eins erhöht. Der zweite Satz von drei Zuständen T hängt ab, welche OP-Code in die Steuermatrix aus dem Befehlsregister zugeführt wird. Die T-Zustände sind wie folgt: T1: Der Inhalt des Programmzählers in das Speicheradressenregister übertragen. (Anschrift Zustand) T 2: Der Programmzähler wird um eins erhöht. (Schrittweite Staat) T3: Der adressierte Byte in dem Programmspeicher in das Befehlsregister übertragen. (Speicherzustand) T4: abhängig, was Befehl ausgeführt wird. T5: abhängig, was Befehl ausgeführt wird. T6: abhängig, was Befehl ausgeführt wird. Es gibt zwei Möglichkeiten, um eine Steuermatrix erstellen: Verwendung diskreter Logik und mit ROM. Der ROM-Methode ist die einfachste und effektivste. Verwendung diskreter Logik beinhaltet die Gestaltung einer massiven Logik schematische, die folgende Ausgabe die korrekten Steuerwörter für den Computer auf der Basis eines OP-Code-Eingabe. ROM steht für Nur-Lese-Speicher. Es gibt mehrere Arten von ROM, die Sie für den Einsatz in Ihren Build in Betracht ziehen. Ich für meinen Computer, den ich ursprünglich eingesetzten EEPROM (elektronisch löschbarer programmierbarer ROM), aber dann verschoben, um NVRAM (nichtflüchtiger Direktzugriffsspeicher), nachdem die EEPROM-Chips nicht zu schreiben. Ich empfehle NVRAM, wie es für einen Direktzugriffsspeicher und nicht die dauerhafte Speicherung gedacht. EEPROM ist die effizienteste Lösung, meiner Meinung nach. Die Schaltmatrix hat drei ROM-Chips, die jeweils mindestens 32 Adressen der 8-Bit-Speicher (als auch die Zeit- und Zählfunktionen Elemente). Das binäre Wort, das von der Schaltmatrix geschickt wird, wird als Steuer-ROM und enthält alle Steuerbits für jede Komponente des Computers. Sie wollen sicher sein, um die Steuerbits zu organisieren und zu wissen, dass ihre Reihenfolge. Aus keinem Betrieb Sie wollen ein Steuerwort, das macht jeder Teil des Computers deaktiviert (außer die Uhr natürlich). Das Steuerwort für die in diesem Instructable beschriebenen Computer ist 16 Bit lang und in zwei der Steuer ROM-Chips gespeichert. Die ersten drei Adressen der Steuer ROM-Chips halten die Steuerwörter für den Abrufzyklus. Der Rest der Adressen auf dem Chip halten die Steuerwörter in Paaren von drei für jede OP-Code. Der dritte ROM-Chip enthält die Speicherstelle für den Start der Steuerung Wortfolge für jede OP-Code und wird durch den OP-Code selbst gerichtet. Zum Beispiel in meinem Computer, wenn Sie die Steuer des OP-Codes 0110 gibt er binäre 21, die die Adresse des Anfangs des Befehls JMP ist zu geben. Es ist ein 8-Bit-Zähler in zwischen dem OP ROM und die Steuer ROMs, die 0-2 (ersten drei T-Staaten) zählt dann am dritten T Zustand lädt die Adresse durch den OP ROM und zählt von dieser Position ausgegeben, bis die T1 Zustand löscht den Zähler wieder. Der Ring und die Binärzähler die Steuermatrix durch eine Inversion des Taktimpulses, so dass die Kontrollwörter vorliegen gesteuert, wenn die ansteigenden Takt geht zu den Elementen des Computers. Der gesamte Prozess, um sich wie folgt: 1.) T1 Zustand löscht den Zähler auf 0 wird das bei 0 gespeicherte Steuerwort verschickt 2.) Die Uhr geht hoch und die Adresse Zustand stattfindet 3.) Die Uhr auf niedrig und damit die Steuer Zähler erhöht und Steuerwort 1 ausgesendet wird 4.) Die Uhr geht hoch und der Zuwachs Zyklus stattfindet 5.) Die Uhr auf niedrig und das Steuer Zählerinkrementierungen bis 2, ist das Steuerwort 2 ausgesandt 6.) Die Uhr geht hoch und der Speicherzustand stattfindet, und der OP-Code kommt zu dem Befehlsregister, T3 ist auch aktiv, die auf der nächsten niedrigen Takteinrichtung Puls der OP Steueradresse geladen werden 7.) The clock goes low and loads the counter with the address for the first of the three control words for the given OP code 8.) T4, T5 and T6 execute the OP code 9.) T1 resets the counter, the process continues until a HLT OP is received. The HLT command stops the clock. Step 14: Microprogramming Now is the part where you decide what commands you want your computer to be capable of. I gave my computer 6 unique operations that would give it the basic programming functions that I would need. The commands that you will program into your computer are what is called Assembly language. Assembly is one of the earliest programming languages and can still be used on computers today. Commands in the language include loading the accumulator, adding, moving, outputting and storing variables. Each command has its own 4-bit OP code in this 8-bit computer. The commands that I chose for my computer are: NOP: No operation. (0000) LDA: Load the accumulator with the value at this address. (0001) ADD: Add the value at the specified address to the value in the accumulator. (0010) SUB: Subtract the value at the specified address from the value in the accumulator. (0011) STO: Store the accumulator's contents at the specified address. (0100) OUT: Store the accumulator's contents in the output register so that the operator can see it. (0101) JMP: Jump to a certain instruction in memory at the specified address. (0110) HLT: Stop the operation of the computer. (0111) To determine what control words need to be sent out for each OP you need to know what bits have to be active during each T state. For my computer I organized the bits as follows (an underline denotes an active-low bit): CE CO J MI RO II IO OI BI EO SU AI AO RI HLT X CE - Count Enable (enables the program counter's clock input) CO - Clock out enable J - Jump enable MI - MAR Input RO - Program memory out II - Instruction register in IO - Instruction register out OI - Output register in BI - B register in EO - ALU output enable SU - Subtract AI - Accumulator in AO - Accumulator output enable RI - Program memory in HLT - Halt X - Not used Here are what bits should be active for each T state for a given instruction as well as the address that they should be in the control ROM: Fetch: 0: CO, MI - The program counter outputs into the MAR 1: CE - The counter is enabled for the next clock pulse 2: RO, II - The addressed byte is outputted from RAM into the instruction register NOP: 3: X 4: X 5: X LDA: 6: IO, MI - The address in the instruction register is transfered to the MAR (lowest four bits) 7: RO, AI - The addressed byte is outputted from memory into the accumulator 8: X ADD: 9: IO, MI - The address in the instruction register is transfered to the MAR (lowest four bits) 10: RO, BI - The addressed byte is outputted from memory into the accumulator 11: EO, AI - The sum of the accumulator and the B register is loaded into the accumulator SUB: 12: IO, MI - The address in the instruction register is transfered to the MAR (lowest four bits) 13: RO, BI - The addressed byte is outputted from memory into the accumulator 14: AI, SU, EO - The difference of the accumulator and the B register is loaded into the accumulator STO: 15: IO, MI - The address in the instruction register is transfered to the MAR (lowest four bits) 16: AO, RO, RI - The accumulator outputs into the program memory at the addressed location (RO and RI have to be active for a write on the chip that I used) 17: X OUT: 18: OI, AO - The accumulator outputs into the output register 19: X 20: X JMP: 21: J, IO - The instruction register loads the program counter with its lowest four bits 22: X 23: X HLT: 24: HLT - A halt signal is sent to the clock 25: X 26: X Your OP ROM contains multiples of three at each memory location. This is of course because each cycle takes three execution states. Therefore the addressed data for your OP ROM will be: 0 - 3 1 - 6 2 - 9 3 - 12 4 - 15 5 - 18 6 - 21 7 - 24 To program your choice of chip you have many different options. You could buy an EEPROM and EPROM programmer, but they usually cost a considerable amount of money. I built a breadboard programmer for my ROM that is operated by moving wires around and controlling the write and read enable pins by push buttons. Later I simplified the process and designed an Arduino programmer for my NVRAM specifically. I'll attach the code as it can be easily modified to program almost any parallel memory chip that you would use for this project.Step 15: Buying Parts The great thing about building an 8-bit computer is that most parts will cost you less than a dollar a piece if you buy them from the correct place. I purchased 90% of my parts from Jameco Electronics and I have been completely satisfied with their services. The only parts I have really bought from anywhere else are the breadboards and breadboard wires (and the Numitron tubes). These can be found considerably cheaper on sites like Amazon. Always be sure to make sure the parts that you are ordering are the correct ones. Every part that you buy should have a datasheet available online that explains all of the functions and limitations of the item that you are buying. Make sure to keep these organized as you will be using many datasheets in the construction of your computer. To help you with your computer I will list the parts that I used for mine: 4-Bit Counter: 74161 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74161&langId=-1&storeId=10001&productId=49664&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView 4-Bit Register (I use two for each 8-bit register): 74LS173 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74LS173&langId=-1&storeId=10001&productId=46922&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView 2-1 Multiplexer: 74LS157 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_46771_-1 16x8 RAM (output needs to be inverted): 74189 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74189&langId=-1&storeId=10001&productId=49883&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView Full Adders: 74LS283 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=74LS283&langId=-1&storeId=10001&productId=47423&search_type=all&catalogId=10001&ddkey=http:StoreCatalogDrillDownView Tri-State Buffers: 74S244 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_910750_-1 XOR Gates: 74LS86 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295751_-1 AND Gates: 74LS08 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295401_-1 NOR Gates: 74LS02 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_283741_-1 Inverters: 74LS04 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_283792_-1 Ring Counter: CD4029 - http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?freeText=4029&langId=-1&storeId=10001&productId=12925&search_type=jamecoall&catalogId=10001&ddkey=http:StoreCatalogDrillDownView JK Flip-Flops: 74LS10 - http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_295427_-1 Step 16: Construction Here is where the patience really comes in. I chose using a breadboard for the actual computer, but there are many other methods out there (such as wire-wrapping) that will work just as well. To make things a lot more simple I included a block diagram for the actual schematic of my computer. I did not however include part numbers or pin numbers. I believe that this will make things more simple and open for creativity. The 4-bit program counter output, MAR input and instruction register output are all connected to the four least significant bits of the computer's bus. The second diagram shown is the control logic for the operation end of the computer. The controls are designed so that toggles can be an input for the computer. RS_NOR latches are placed in front of the toggle switches to debounce them. Toggle switches often have dirty connections that may bounce from an on to an off state and provide more pulses than you want. Adding a flip-flop to the output of a toggle eliminates the extra pulses. This would be extremely useful when using the manual clock option. You would not want to flip the switch and initiate 8 clock pulses. The read/write button writes the active input byte to the addressed memory. By changing the default control word input to RAM to two low RO and RI bits initiating a write cycle. The run/program switch changes which input is active on the memory address multiplexer. The JK flip flop after the 555 means that when the computer is run, it will not start on the middle of a clock pulse. A low HLT signal will stop the clock from passing on either the manual clock or 555. And finally, the run/clear switch is connected to all of the clear pins on the computer such as those on the registers and counters.Step 17: Programming Now that the computer is done, it can be programmed to carry out instructions. To do this you first have to put the computer into its program setting by flipping the run/program toggle switch into the program position. After that you select addresses starting at 0 and going to 15 and insert the needed data for your program. For instance, to start with 5 and add 4 with every output the program would be as follows: Address - Data: 0000 - 00010111 LDA 7: Load the accumulator with the value stored at memory address 7 (5) 0001 - 00101000 ADD 8: Add value stored at memory address 8 (4) 0010 - 01010000 OUT: Output the accumulator 0011 - 01100001 JMP 1: Jump to instruction 1 0100 - X 0101 - X 0110 - X 0111 - 00000101 5 1000 - 00000100 4 1001 - X 1010 - X 1011 - X 1100 - X 1101 - X 1110 - X 1111 - XStep 18: Going Further I hope you enjoyed this Instructable and, most of all, I hope that you got something out of it. You can consider all of this hard work an incredibly valuable learning experience that will give you a better understanding of electronics, computers and programming. In the end you will also have something very cool to show for all of your hard work as well. After constructing your first 8-bit computer you can go further and add more functionality. The ALU used in this computer is very simplistic in operation and true ALU's today have a myriad of functions such as bit-shifting and logical comparisons. Another important aspect to move onto is conditional branching. Conditional branching means that an instruction depends on the current state of flags set by the ALU. These flags change as the accumulator's contents become negative or are equal to zero. This allows for a much more expansive possibility for application of your computer. If you have any questions about this project feel free to comment on this Instructable, comment on my website at http://8bitspaghetti.com or shoot me an email at [email protected] . I wish you the best of luck with this project.$(function() {$("a.lightbox").lightBox();});

      9 Schritt:Schritt 1: Schaltplan Schritt 2: Einrichten des Arduino Uno Forum als Programmer Schritt 3: Vorbereiten der Skizze in ATMEGA328P-PU Geschrieben Seien Sie auf dem Steckbrett Schritt 4: Schritt 5: Schritt 6: Schritt 7: Schritt 8: Schritt 9: Referenzen

      Es gibt bereits mehrere instructables, wie Arduino Skizze bis ATMEGA328P-PU auf ein Steckbrett mit verschiedenen USB brennen - UART Module. Da jedoch die meisten dieser Module werden in China hergestellt, sie sind schlecht dokumentiert, falsch beschriftet, seltsam ausgelegt, einige von ihnen erfordern das Drücken der Reset-Taste zum richtigen Zeitpunkt, und einige von ihnen nur DOA (tot auf Ankunft). Alle diese Probleme verursachen große Kopfschmerzen für diejenigen, die eine vereinfachte Arduino aufbauen wollen. Da die meisten Menschen ihre Reise mit Arduino Arduino Uno aus, unten ist eine kurze Zusammenfassung, wie Arduino Skizze bis ATMEGA328P-PU auf ein Steckbrett mit Arduino Uno als Programmierer zu verbrennen.

      Seiten: