Forum: FPGA, VHDL & Co. ein CP/M System auf FPGA?


von Micha (Gast)


Lesenswert?

Kennt jemand eine komplette Implementierung für einen CP/M fähigen 
Computer auf FPGA? Am besten noch in Verilog geschrieben...

Ich interessier mich derzeit grade sehr für das Thema. Auf opencores.com 
hab ich das Intel 8080 Projekt von Scott Moore gefunden. Was ich toll an 
jenem Code finde - in dem Verilog Quelltext wird ausgiebig Gebrauch von 
Präprozessor Strings gemacht, dadurch ist der Verilog-Code sehr gut 
lesbar.

Was ich an dem Projekt richtig doof finde - das "Repository" ist eine 
regelrechte Müllhalde. Alles ist in 'zig Versionen abgelegt, ein bunter 
Mix aus Quelltexten und Dateien die von der Xilinx Entwicklungsumgebung 
stammen. Anhand der Dokus bleibt es für mich unklar, ob das Projekt 
"nur" die CPU umfasst oder doch einen kompletten CP/M Computer. 
Bestimmte weitere Komponenten sind offenbar dabei. Unklar allerdings 
auch welches File die Top-Level-Instanz des Projekts enthält.

Hab den Autor mal angeschrieben. Bis der antwortet hier mal die Frage in 
die Runde - kennt jemand dieses Projekt oder vielleicht ein 
(anderes/besseres) Projekt für ein CP/M fähiges System auf FPGA?

von Dimi S. (ilovespeccy)


Lesenswert?

Hallo,

meinen aktuellen Projekt ist eine FPGA-Implementation eines 
Retro-Computers. Es ist eine TRS-80-ähnliches System aus 80-er Jahren, 
welche in einem Uni in Moskau entwickelt wurde ("Korvet PK8020" 
http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D0%B2%D0%B5%D1%82_%28%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%29). 
Der hat CP/M-80 als Betriebsystem. Als Entwicklungsplatform verwende ich 
Altera's DE1 Board und schreibe mit VHDL. Zurzeit arbeite ich an einem 
Floppy-Disk-Controller. An sich läuft der Controller schon, nur eine art 
"GUI" für Diskimage-Auswahl muss noch rein. Projekt ist offen und wird 
bald auf meine Internetseite veröffentlicht. Vielleicht kannst du davon 
etvas gebrauchen...

MfG aus Westerwald

von Micha (Gast)


Lesenswert?

Vielen Dank! Ich hab mir gerade ein Altera DE1 Board bestellt und werde 
dieses Projekt mit großem Interesse verfolgen!

Ansonsten hab ich - abseits des Themas FPGA - heute dieses wunderschöne 
bunte Breadboard Projekt entdeckt:

http://searle.hostei.com/grant/cpm/

ich glaub dieses Projekt muss ich die Tage mal ganz genau unter die Lupe 
nehmen. Gibt leider keine Teile-Liste, und manche Details sind 
Geschmacks-Sache. Aber der Breadboad-Aufbau gefällt mir. Ich glaub ich 
werd erst mal so einen Breadboard CP/M Computer ins Auge fassen bevor 
ich mit ner FPGA Variante Ernst mache...   ;)

von Micha (Gast)


Lesenswert?

doch noch mal 'ne Frage zu meinem Anliegen ganz oben - von dem 8080 
Projekt von Scott Moore hab ich bisher ein grundlegendes Verständnis zu 
paar Teilen (Prozessor, Terminal-Emulation) aber ich durchschaue die 
Grundstruktur des Projekts noch nicht, also was die Top-Level-Instanz 
ist, welche anderen Files eingebunden werden usw. Offernbar wird nichts 
mit `include gemacht sonderen das Projekt ist per 
Xilinx-Entwicklungsumgebungs-Klickibunti-Schweinkram strukturiert.

Der Autor schreibt ja auch, dass sich der ganze Müll, verzeihung - die 
Projektstruktur - offenbart, wenn man es in die Xilinx 
Entwicklungsumgebung lädt. Also wär meine schlechteste Idee, mich bei 
Xilinx zu registriern, paar Gigabyte Software runterzuladen und zu 
installieren, nur um mal in das Projekt reinzuschauen, was oben und was 
unten ist. Nen Haufen Aufwand und Zeugs was ich nie wieder brauche.

Hat jemand nen Tip, wie man in einem Xilinx Projekt die Struktur auch so 
rausbekommt - gibts da eventuell eine Datei aus der man die Struktur und 
die Anhängigkeiten  der Quelltexte mit etwas gutem Willen auslesen kann?

von Dimi S. (ilovespeccy)


Lesenswert?

Die cpu8080-Core habe ich in meinem Projekt früher verwendet. Klappt 
auch ganz gut, nur die Timings sind nicht wie beim echten i8080. 
Deswegen verwende ich nun eine andere 8080-Core.
cpu8080 ist eigentlich sehr verständlich geschrieben und ich hatte 
keinerlei Schwierigkeiten es zum laufen zu bekommen. Habe allerdings 
Altera's Quartus benutzt. Mit Xilinx wird's genau so gut laufen!

MfG

von Micha (Gast)


Lesenswert?

sorry, Missverständnis. Die Quelltext-Datei des Projekts cpu8080 die die 
CPU darstellt ist wirklich super übersichtlich geschrieben.
Allerdings hatte ich nach Lesen der Doku den Eindruck, dass das Projekt 
einen kompletten CP/M-fähigen Computer modelliert (irre ich mich da 
womöglich?). Und da hatte ich mich festgefahren im Verständnis, wie die 
Komponenten zusammengefasst werden.

von Fpgakuechle K. (Gast)


Lesenswert?

Micha schrieb:

> Hab den Autor mal angeschrieben. Bis der antwortet hier mal die Frage in
> die Runde - kennt jemand dieses Projekt oder vielleicht ein
> (anderes/besseres) Projekt für ein CP/M fähiges System auf FPGA?

Hallo Micha,
 bei den Recherchen zu dem Artikel 
http://www.mikrocontroller.net/articles/Retrocomputing_auf_FPGA bin ich 
auch über CP/M Projekte gestolpert, hab mich aber nicht in diese 
vertieft. Möglicherweise nur Absichtserklärungen.

Von dem Amateurfunkcomputer AC-1 weiss ich das das Orginal CP/M kann 
(http://www.kc85emu.de/scans/fa0489/AC1.htm) und das es einen 
FPGA-Nachbau gibt: http://www.ac1-info.de/galerie/hein_andreas/hein.htm

Vioelleicht kommst Du ja mit diesem Projekt deinem Ziel näher.


Für CP/M benötigts du eine Z80 kompatible CPU, Tastatur, Firmware, 16k+ 
RAM, Zeichensatzgrafik und Diskettenlaufwerk resp Emulation. Bis auf das 
Laufwerk findest du dergleichen in dem SVN-Depot des oben erwähnten 
Artikels (Z1013 Nachbau). Als CPU wird der T80 core eingesetzt, der 
zuverlässig tut. Sourcen werden per make zusammengebastelt, sollte also 
nachvollziehbar sein.

MfG,

von W.S. (Gast)


Lesenswert?

Micha schrieb:
> Allerdings hatte ich nach Lesen der Doku den Eindruck, dass das Projekt
> einen kompletten CP/M-fähigen Computer modelliert

Wie soll man das verstehen?

Also, ein CP/M-Rechner ist ein 8080 oder Z80 plus 64 K RAM plus etwas 
Software für den Prozessor (CCP, BDOS, BIOS). Das war's - soweit das 
Allgemeine reicht. Natürlich kann und sollte man auch ne Tastatur und 
einen Textbildschirm und einen wie auch immer gearteten Massenspeicher 
dran haben, aber das ist ne Ausführungsfrage, die im BIOS erledigt wird 
- und nicht abhängig vom CP/M.

Eigentlich sollte man diese doch recht separaten Bestandteile im 
Quellen-"Misthaufen" finden können, oder?

W.S.

von Micha (Gast)


Lesenswert?

genau so ist es - ne PS/2 Ansteurung, ein (glaubich?) Siegler/Lear S3A 
Terminal und Ram/Rom sind in dem Projekt neben der 8080 CPU jeweils als 
Dateien enthalten, mir ist nur momentan nicht klar wie das alles 
zusammengefasst wird bzw was die Top-Level-Instanz ist und was die so 
alles sonst noch definiert.

von J. S. (engineer) Benutzerseite


Lesenswert?

Micha schrieb:
> das "Repository" ist eine
> regelrechte Müllhalde.
Zeige mir bitte mal ein einziges REP auf open cores, dass diesen 
Ausdruck nicht verdient. Ich beobachte diese Plattform seit 10 Jahren 
und habe nie keinen einzigen Core nicht dort gefunden, den ich irgendwo 
hätte einsetzen können.

W.S. schrieb:
> Also, ein CP/M-Rechner ist ein 8080 oder Z80 plus 64 K RAM plus etwas
> Software für den Prozessor
Oder kurz gesagt: Ein Commodore 128 :-)

von Micha (Gast)


Lesenswert?

viel Erfahrung hab ich noch nicht, aber so pauschal möchte ich da nicht 
zustimmen. Im gegebenen Fall (dem cpu8080 Core) konnte ich die CPU als 
Verilog Datei identifizieren, der Quelltext ist wirklich super 
strukturiert und gut lesbar. Hab einiges gelernt beim Lesen im 
CPU-Quelltext, u.A. die intensive Verwendung von `define Anweisungen, 
die Trennung in CPU und ALU Module war auch sehr lehrreich. Möchte den 
CPU-Code fast als Lehrbeispiel bezeichnen. Inzwischen bin ich bei ersten 
Versuchen, die CPU in ein eigenes Projekt einzubinden. Sieht ganz 
erfolgversprechend aus.
Ich komm' mir nur ziemlich doof vor, weil ich die Projektstruktur von 
cpu8080 (jenseits des CPU Moduls) nicht verstehe. Da sind weitere 
Quelltexte, die in Summe wahrscheinlich einen Computer ergeben. Aber das 
ist für mich regelrecht unbegreiflich: Wie kann jemand einerseits so 
sauberen Code schreiben und dann so ein Müllprojekt zusammenschieben? 
Ist mir völlig schleierhaft...

von FPGA'ler (Gast)


Lesenswert?

Jürgen Schuhmacher schrieb:
> und habe nie keinen einzigen Core nicht dort gefunden, den ich irgendwo
> hätte einsetzen können.

Dreimal verneinen, da Blick ich nicht mehr durch.
Hast du nun einen Core gefunden, den du einsetzen
konntest, oder nicht? ;-).

Ich jedenfalls habe dort noch nie einen Core
gefunden, den ich einsetzen konnte...

FPGA'ler

von Uwe (Gast)


Lesenswert?

> Ich jedenfalls habe dort noch nie einen Core
> gefunden, den ich einsetzen konnte...
tg68
Beitrag "TG68 - Ab sofort 68000 als Open Source!"

von Dimi S. (Gast)


Lesenswert?

Stimmt nicht.
Ich habe mehrere SoftCores von "opencores" ausprobiert: Plasma, T80, 
T65, cpu8080, ZPU. Alle haben auch gut funktioniert.
Mit "Plasma" laufen maine aktuelle Projekte. Letztens habe ich für 
meinen Altium NanoBoard NB3000AL eigene Firmware für Host-FPGA 
geschrieben. Das Board kann im Originalzustand nur mit Altium-Software 
angesprochen werden. Ich habe Plasma als SoftCore am laufen. Kleine Lib 
für CY7C68001 gescrieben und ein Paar Tools mit libusb. Jetzt kann ich 
über JTAG-Anschluss mittels USB Blaster auf beide FPGA's zugreifen und 
über eingebaue Programmierschnittstelle user-FPGA (ep3c40) in 2.5 
Sekunden programmieren. Und das ohne Altium Designer (Lizenz 
abgelaufen). Habe noch ein Paar Ideen die Firmware zu erweitern.
Bis jetzt keinerlei Probleme mit Plasma-Core gehabt. Kann nur 
weiterempfehlen! Klein und schnell! Dazu kommt noch vollständige 
GCC-Kompiler (C und C++) mit Newlib. Was will man mehr???

MfG aus Westerwald

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.