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?
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
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... ;)
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?
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
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.
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,
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.
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.
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 :-)
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...
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
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