Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf ·...

22
www. MyCPU .eu Ein Computer zum Selbstbauen von Dennis Kuschel

Transcript of Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf ·...

Page 1: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

www. MyCPU .eu

Ein Computer zum Selbstbauenvon Dennis Kuschel

Page 2: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Gliederung:

1. Was ist die MyCPU und warum existiert sie ?

2. Architektur der MyCPU

3. Befehlssatz

4. Emulator

5. Software

6. Nachbau

Page 3: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Was ist die MyCPU ?

� 8 Bit Prozessor

� max. 8 MHz „schnell“

� Harvard Architektur

� 64k Programm- und 64k Datenspeicher adressierbar

� komplett aus Einzelteilen aufgebaut

� besteht aus 61 IC‘s der 74er Serie auf 5 Platinen

� verwendet keine Spezial-IC‘s

� kann von jedermann nachgebaut werden

� mit weiteren Komponenten entsteht ein kompletter „PC“

Page 4: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

MyCPU: 5 Platinen, 61 IC‘s

Page 5: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Warum das Ganze?

� Die MyCPU entstand aus einer Laune heraus. Während der Vorbereitungen zu meiner Diplomprüfung hatte ich Langeweile.

� Inspiriert wurde ich durch die Vorlesung „Digitaltechnik“

� Die MyCPU sollte anfangs nur ein Taschenrechner werden

� Absolute kreative Freiheit (Architektur, Software, u.s.w.)

� Der Weg ist das Ziel. Es gibt viel zu lernen.

� Andere können hoffentlich etwas von meiner CPU lernen

„Andere haben eine Modelleisenbahn im Keller, ich eine CPU !“

Page 6: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Aufbau der MyCPU

DatabusDriver

Bus-Control

Bus-Interface

Reset-curcuit

Accu

Register Set (each register has 8 bit)X Y Scratch-

RegisterStack-Pointer

ConstantValueRegisterRegister

Arithmetic Logic Unit (ALU)

ALU

Lookup

Tables

(2064kb)

D-Input Reg. 1

D-Input Reg. 2

Output Register

Output Bypass

Flags Latch

Flags Driver

Flags Register

F-Input Register

Carry

Carry

Clock-Generator

InterruptLogic

384 kb Microcode

DecoderLatchOP-Code

5 BitCounter

Control Unit

tributionClock Dis-

8Bitinternaldatabus

ext

ern

al b

us

Address LogicProgram-Counter

directaddress

addressreadback

address

BusClk, 4MHZ

/INT

A0-A15

D0-D7

/RD, /WR

/HALT

/RESET

DatabusDriver

Bus-Control

Bus-Interface

DatabusDriver

Bus-Control

Bus-Interface

Reset-curcuitReset-curcuit

Accu

Register Set (each register has 8 bit)X Y Scratch-

RegisterStack-Pointer

ConstantValueRegisterRegister

Accu

Register Set (each register has 8 bit)X Y Scratch-

RegisterStack-Pointer

ConstantValueRegisterRegister

Arithmetic Logic Unit (ALU)

ALU

Lookup

Tables

(2064kb)

D-Input Reg. 1

D-Input Reg. 2

Output Register

Output Bypass

Flags Latch

Flags Driver

Flags Register

F-Input Register

Carry

Carry

Arithmetic Logic Unit (ALU)

ALU

Lookup

Tables

(2064kb)

D-Input Reg. 1

D-Input Reg. 2

Output Register

Output Bypass

Flags Latch

Flags Driver

Flags Register

F-Input Register

Carry

Carry

Clock-Generator

InterruptLogic

384 kb Microcode

DecoderLatchOP-Code

5 BitCounter

Control Unit

tributionClock Dis-

Clock-GeneratorClock-Generator

InterruptLogic

InterruptLogic

384 kb Microcode384 kb Microcode

DecoderDecoderLatchOP-CodeLatchOP-Code

5 BitCounter5 Bit

Counter

Control Unit

tributionClock Dis-tributionClock Dis-

8Bitinternaldatabus

8Bitinternaldatabus

ext

ern

al b

us

Address LogicProgram-Counter

directaddress

addressreadback

address

Address LogicProgram-Counter

directaddress

addressreadback

address

BusClk, 4MHZ

/INT

A0-A15

D0-D7

/RD, /WR

/HALT

/RESET Speicher

Rechenwerk(ALU)

Steuerwerk

Ein- / Ausgabe-werk

Page 7: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Aufbau der MyCPU auf 5 Platinen

Rechenwerk (ALU)

Steuerwerk, Teil 1

Adressierungslogik

Steuerwerk, Teil 2

Speicher und Ein-/Ausgabe

Page 8: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Ein kleiner Computer mit der MyCPU

Zentraleinheit (MyCPU)

Daten- und Programmspeicher (Permanent: ROM)

Ein- und Ausgabe über ein Terminal via RS232 (kann ein PC sein)

Bauteilkosten: 400 €, Arbeitsaufwand: Je nach dem... Basteln macht doch Spaß!

Page 9: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Ein echter Computer mit der MyCPU !

8 MHz CPU, 1216 kB Speicher, Festplatte, Tastatur, Grafikkarte

Page 10: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Aufbau des Steuerwerks

Microcode-Tabelle

3 EPROMs

OP-Code-Register

5 Bit Binärzähler

Schreibsignal-Decoder

Lesesignal-Decoder

Steuersignale (z.B. für ALU)

/WR1/WR2

/WR3/WR4

/RD1/RD2

/RD3/RD4

RESET

Z

V

C

Flags

Datenbus

IRQ

Page 11: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Ablaufsteuerung (State Machine)

OP-Code laden, fortfahren mit State-Machine für den OP-Code

Daten laden

Daten verarbeiten

Daten speichern

OP-Code 1

Zieladresse laden

Sprung ausführen wenn Carry == 1

OP-Code 2

Accu := Accu + 1

OP-Code n

Innerhalb eines OP-Codes kann nicht zurück gesprungen werden. Das Überspringen von Mikro-OP‘s ist allerdings möglich.

Page 12: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Der Mikrocode Compiler

� Für die Erstellung der 256 Mikrocodes wurde ein spezieller Compiler geschrieben.

� Ein Mikrocode kann komfortabel nach dem Schema „Lade OP-Code, lade Operand vom RAM in ALU, lade Inhalt von Akku in ALU, führe Addition aus, speichere das Ergebnis der Addition im Akku“ erstellt werden.

� Der Compiler erstellt unter Beachtung von Timing-Vorgaben den korrekten Code für die State-Machine.

/* 82 - ADC abs */{ 0x82,

FETCH,NOP,MOVE_ROMPC_TO_ADDR_LO |INC_PC,MOVE_ACCU_TO_AREG1,MOVE_ROMPC_TO_ADDR_HI,INC_PC,MOVE_RAM_TO_AREG2,ALU_TO( MODE_ADC,

CFLAG_VISIBLE,ALU_TO_ACCU ) |

LOAD_FLAGS_ALU |NEXTOP,

},

Mikrocode des OP-Codes „ADC“

Page 13: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Assembler-Sprache

� Die Assembler-Syntax der MyCPU ist dem Prozessor 6502 sehr ähnlich.

� Es werden die meisten der 6502-Befehle unterstützt.

� Keine Binärkompatibilität !

� Es gibt keine relativen Sprünge, nur absolute (auch bedingte Sprünge sind bei der MyCPU immer absolut, da Zeitersparnis)

� Zusätzliche Befehle:

-- MUL / DIV für 8/16 Bit Integer Zahlen

-- 16 Bit Zeiger-Operationen: LPT, SPT, LPA, SPA

-- Befehle zur schnellen Berechnung von CRC-Summen

-- Befehle zur schnellen Umschaltung von Speicherseiten

-- erweiterte Befehle für Stack-Manipulationen

-- u.v.m.

Page 14: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Der MyCPU - Emulator

Ein Emulator versucht eine reale Hardware so naturgetreu wie möglich auf einem anderen Computer nachzuahmen.

Definition:

Nutzen:

� Testen von Hardware, die noch nicht real existiert. Die CPU und die Grafikkarte wurden zuerst in Software emuliert, um deren Funktion sicherzustellen.

� Entwicklung von Software. Programme können auf dem PC geschrieben und im Emulator getestet werden. Der Emulator erlaubt vielfältige Debugging-Möglichkeiten, die die reale Hardware nicht bieten kann.

Den MyCPU-Emulator gibt es für MS Windows und BSD/Linux.

Page 15: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Debug- und Status-Fenster

Bildschirmausgabe der MyCPU

Page 16: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Software für die MyCPU

Haupt-Programmiersprache: Assembler

� Es gibt 247 verschiedene OP-Codes. 9 OP-Codes sind noch undefiniert und können vom Anwender frei definiert werden (z.B. für Lehrzwecke).

� Ein OP-Code benötigt im Schnitt 9 Takt-Zyklen. Die MyCPU erreicht somit bei einer Taktrate von 8 MHz eine Geschwindigkeit von 0,89 MIPS.

� Es gibt zwei verschiedene Macro-Cross-Assembler für die MyCPU: ca65 (Unix/DOS) und hasm (nur DOS). Zusätzlich gibt es einen Assembler, der auch direkt auf der MyCPU läuft.

Page 17: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Zusätzliche Programmiersprachen

Basic

� Die MyCPU lässt sich in einem alten Basic-Dialekt, dem Basic V2 (bekannt vom Commodore 64), programmieren.

� Basic-Programme, die für den C64 geschrieben wurden, funktionieren auch auf der MyCPU.

ANSI-C

� Es gibt einen C-Cross-Compiler (cc65, DOS/Unix) für die MyCPU. Die gängigsten C-Funktionen werden direkt unterstützt: Konsolen- Ein-/Ausgabe, Dateizugriffe, Standard-C Laufzeitbibliothek (Speicherverwaltung, String-Funktionen, Systemaufrufe).

Page 18: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

MyCPU Betriebssystem

� Das Betriebssystem ist zu 100% in Assembler geschrieben

� Das Betriebssystem belegt 160 kb ROM

� Bedient wird es über eine DOS-artige Eingabeaufforderung

� Alle gängigen DOS-Befehle sind vorhanden

� Bis zu 8 Speicherlaufwerke (RAM-Disk, Festplatte, CDROM, CF-Karte, Netzwerklaufwerk) werden unterstützt.

� Direkte Unterstützung von zwei seriellen (COM1: / COM2:) und einer parallelen (LPT1:) Schnittstelle

� Ein Basic-Interpreter ist integriert.

Page 19: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Vorhandene Software

� Basic-Interpreter für den schnellen Einstieg

� Text-Editor

� Assembler

� Netzwerk TCP/IP-Stack

� Telnet-Demon und HTTP Webserver

� Pico]OS - Echtzeit Betriebssystem

� Verschiedene Spiele

� Tools: Datei-Packer, Grafik-Viewer, und vieles mehr

Folgende Software läuft auf der MyCPU:

Page 20: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Datenaustausch mit der MyCPU

RemoteFS

� Die MyCPU wird über eine serielle Schnittstelle (RS232) mit einem Dateiserver verbunden.

� Ein beliebiges Verzeichnis auf dem Server-PC wird in der MyCPU als physikalisches Laufwerk abgebildet.

� Die MyCPU erhält Vollzugriff auf das freigegebene Verzeichnis. Alle DOS-Operationen sind möglich. Beispiel: 8:\>deltree 8:\windows

Oft ist es nötig, Dateien zwischen dem MyCPU-System und einem PC auszutauschen. Diese Aufgabe übernimmt der „Remote Filesystem“-Treiber:

Page 21: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

Nachbau

� Das gesamte MyCPU-Projekt ist „Open Source“.

� Auf www.mycpu.thtec.org gibt es ein Forum zum Austausch von Ideen und zum Stellen von Fragen.

� Platinenlayouts im PDF-Format stehen zum Selberätzen der Platinen bereit. Fertige Platinen können erworben werden.

� Die gesamte Hardware ist Open Source, die Schaltpläne und Platinenenlayouts können von der Homepage herunter geladen werden (Eagle-Format)

� Software und alles Weitere, das zum Nachbau benötigt wird, steht auf www.mycpu.eu zum download bereit.

Page 22: Ein Computer zum Selbstbauen - blit.orgblit.org/2008/folien/h01/BLIT2008_Kuschel_MyCPU.pdf · Andere können hoffentlich etwas von meiner CPU lernen ... Zentraleinheit (MyCPU) Daten-

ENDE