Da heute Nikolaus ist, gibt es eine neue Version. Ich habe die Resetlogik entfernt, dass übernimmt jetzt der ATMega. Jetzt sind es tatsächlich nur noch 2 Schaltkreise :) An den TX/RX-Pins habe ich ein CP2104 USB-to-Serial Adapter angeschlossen (19200 Baud). ZAtmel: ein minimalistisches Z80-System
:
Bearbeitet durch User
Joe G. schrieb: > Jetzt nur noch RAM drauf Wenn ich das richtig sehe, übernimmt hier der ATmega RAM und ROM. Verkehrte Welt würde ich sagen...
Joe G. schrieb: > Jetzt nur noch RAM drauf, dann sind wir hier: > Beitrag "Z180-Stamp Modul" oder hier: http://www.projekte.daleske.de/cpm/06_z80hwe/cpm_z80hwe.htm
Hi Steffen, mir gefällt Dein minimalistisches System sehr gut. Vielleicht braucht es noch irgend eine Schnittstelle, damit man Programme vom PC herunterladen kann. Wieviel MIPS hat Dein Z80 in der Konfiguration?
Die neue Reset-Logik gefällt mir. Man muss eben wissen, wozu man Dinge missbrauchen kann. ***thumbs up*** :)
Jens schrieb: > Wenn ich das richtig sehe, übernimmt hier der ATmega RAM und ROM. > Verkehrte Welt würde ich sagen... Nun, er übernimmt nicht nur RAM und ROM sondern ist auch PIO, SIO, CTC und was du noch so möchtest. Weiterhin spart man sich den ROM neu zu brennen. Der AVR bringt das Z80 Programm über eine ihm genehme Schnittstelle in den RAM.
chris_ schrieb: > Wieviel MIPS hat Dein Z80 in der Konfiguration? Der Z80 hat kaum MIPS ;-), der läuft mit 2,5 Mhz.
> mir gefällt Dein minimalistisches System sehr gut. Vielleicht braucht es > noch irgend eine Schnittstelle, damit man Programme vom PC herunterladen > kann. Leider sind keine Ports/Pins mehr frei. Es bleibt nur die eine USART. Man könnte darüber sicher was hoch/runterladen.
Detlef Kunz schrieb: > Die neue Reset-Logik gefällt mir. > Man muss eben wissen, wozu man Dinge missbrauchen kann. > ***thumbs up*** > :) Ich habe mich riesig gefreut als ich doch noch ein Output-Pin gefunden habe ;) Aber schade, 1 Port mehr wäre wirklich schön...
Coole Sache. Habe zufaellig in etwa das gleiche vor mir auf einem Steckbrett auf dem Tisch stehen. Der Atmega ist bei mir auch RAM/ROM und IO zugleich. Software ist aber noch nicht fertig.
Achja: Du kannst noch zwei Pins am Adressbus entfernen da der ATmega ja nur 16 Kb RAM hat wirst du sicher nicht mehr simulieren.
Leider doch nicht. Im Wiki habe ich gerade gesehen du simulierst noch 48k ROM.
Joe G. schrieb: > Steffen S. schrieb: >> Aber schade, 1 Port mehr wäre wirklich schön... > > Vielleicht ein ATMEGA1281 ? leider nur 16 MHz (und 8 kByte RAM)
Hallo, ich habe gestern dein Projekt entdeckt und versuche den Code zu verstehen. Die Idee den Pinstatus als Sprungziel zu benutzen ist mir soweit klar. Innerhalb deiner Macros wird es aber etwas unklar. Erste wird die entsprechende Aktion durchgefuehrt dann mit NOPs gewartet. Die Anzahl NOPs sollte nach meiner Rechnung einem Takt des Z80 entsprechen!? Anschließend wird der Datenbus wieder freigegeben und Abhängig vom Z80-status in den nächsten Codeteil gesprungen. Gehst du dabei davon aus das der Takt immer. Synchron ist und du somit Taktgenau deine Aktionen durchführen kannst? Warum brauchst du die speziellen M1 macros? Grüße, ffd.
Harald Nagy schrieb: > Gibt's auch einen Quellcode zum Z80-Programm? Noch jemand der der es genauer wissen will! Vielleicht findet er ja bald mal die Zeit zu antworten.
Ich finde dieses Projekt sehr interessant und minimalistisch. Nur leider schaffe ich es nicht, den Assemblercode zu compilieren. AVR-Studio und Microchip steigen mit Fehlermeldungen aus. Zudem bin ich in Assembler noch ziemlich neu und das sieht mir doch sehr speziell aus. Vielleicht hat ja jemand hier im Forum oder der Programmierer ein paar Tipps parat :-). Würde mich sehr darüber freuen um weiter in die Welt der Microcontroller einzusteigen.
Jens schrieb: > AVR-Studio und > Microchip steigen mit Fehlermeldungen aus Tipp Nr1: schreibe möglichst viele Details. Beispiel: Poste die Fehlermeldung. Tipp Nr2: verwende das richtige Format: https://www.mikrocontroller.net/articles/Formatierung_im_Forum
>> Wenn ich das richtig sehe, übernimmt hier der ATmega RAM und ROM. >> Verkehrte Welt würde ich sagen... > > Nun, er übernimmt nicht nur RAM und ROM sondern ist auch PIO, SIO, CTC > und was du noch so möchtest. Eher nicht oder nur rudimentär, weil das Interruptsystem resp. die Leitungen dafür nicht gezogen sind. Ebenso IORQ. Da mal ein Stück kleine SIO/CTC: https://smallcomputercentral.com/wp-content/uploads/2018/10/sc110-v1-1-sio2ctc-schematic.pdf Also IMHO ist das Ganze unterhalb IO-fähiges-Minimalsystem und damit ein typisches Beispiel von "Kaputt gespart". Und der Sinn hinter der offenen WR-Leitung ist auch nicht ersichtlich.
:
Bearbeitet durch User
Beitrag #7831230 wurde vom Autor gelöscht.
Bradward B. schrieb: >>> Wenn ich das richtig sehe, übernimmt hier der ATmega RAM und > ROM. >>> Verkehrte Welt würde ich sagen... >> >> Nun, er übernimmt nicht nur RAM und ROM sondern ist auch PIO, SIO, CTC >> und was du noch so möchtest. > > Eher nicht oder nur rudimentär, weil das Interruptsystem resp. die > Leitungen dafür nicht gezogen sind. Ebenso IORQ. > Da mal ein Stück kleine SIO/CTC: > https://smallcomputercentral.com/wp-content/uploads/2018/10/sc110-v1-1-sio2ctc-schematic.pdf > Also IMHO ist das Ganze unterhalb IO-fähiges-Minimalsystem und damit ein > typisches Beispiel von "Kaputt gespart". > Und der Sinn hinter der offenen WR-Leitung ist auch nicht ersichtlich. Du bist so wie ich das sehe der Meinung, das dieses System so garnicht lauffähig ist?
Die Thread-Leiche funktioniert nicht so einfach, da /IOREQ und der /BUSREQ die so im Raum haengen, macht es schon "schwierig". Der nicht-vorhandene RAM macht es auch nicht einfacher (der ATMega1284 hat zwar 16kb RAM, aber da auch das /WAIT ignoriert wird wuesste ich nicht, wie man dieses Ding zum fliegen bringen kann). Vermutlich musst Du auch eine CMOS-Z80-CPU verwenden: die NMOS haben eine Mindestfrequenz von ca. 100kHz (gucke ins Datenblatt der Z80). Wenn Du wirklich Interesse an einer Z80-Maschine mit 128kB RAM, Massenspeicher (SD-Card) und so hast: Der 4IC-Z80-Computer https://hackaday.io/project/19000-a-4-4ics-z80-homemade-computer-on-breadboard. Ein schoenen fertigen Bausatz (mit PCB und Firmware) findest Du unter https://github.com/SuperFabius/Z80-MBC2 Ich habe hier einen auf dem Schreibtisch, CP/M ist so schoen primitiv, das kannst Du mit dem Hirnstamm durchdringen. Wenn man alle Teile kaufen muss, ist man bei ca. 50EUR (z.b. ein Haendler aus Italien: https://shop.mcjohn.it/en/diy-kit/22-kit-z80-mbc2.html) Gruesse Th. P.S.: RC2014 waere auch noch ein Kandidat: https://rc2014.co.uk/ Platinen kann man auf ebay finden.
>>> auch PIO, SIO, CTC >>> und was du noch so möchtest. >> >> Eher nicht oder nur rudimentär, weil das Interruptsystem resp. die >> Leitungen dafür nicht gezogen sind. Ebenso IORQ. >> Also IMHO ist das Ganze unterhalb IO-fähiges-Minimalsystem und damit ein >> typisches Beispiel von "Kaputt gespart". >> Und der Sinn hinter der offenen WR-Leitung ist auch nicht ersichtlich. > > Du bist so wie ich das sehe der Meinung, das dieses System so garnicht > lauffähig ist? Definiere "lauffähig" ?! Ein Z80 "läuft" auch mit einer NOP-MIMIK am Datenbus hoch: * https://www.makerhacks.com/wp-content/uploads/2024/01/IMG_4610-1024x631.avif * https://www.makerhacks.com/homebrew-z80-on-breadboard/ Das wäre allerdings nur die erste und die letzte von sieben Grundfunktion der Z80-CPU: 1) Befehlskodelesen (ROM) 2) Speicherlesen (RAM) 3) Speicherschreiben 4) I/O-Lesen (PIO,) 5) I/O-Schreiben 6) Interruptbestätigung 7) CPU-Intern Betrachtet man DMA Bus-Arbitrierung kommen noch Funktionen hinzu (siehe Z80-Bus-timings). PIO, SIO, CTC werden per I/O-Befehle (IND/OUTD) angesprochen und signalisieren Ereignisse über Interruptreques (um der CPU das Polling zu ersparen). Da der ATMEGA aber die IOREQn Leitung nicht lesen kann, kann er nicht (oder "schwierig) zwischen IO-Port Zugriffen und SpeicherZugriffen unterscheiden. https://www.zilog.com/docs/z80/um0080.pdf S.7 (21) ff, Minimalsystem: S.21 (35) Deshalb bin ich "skeptisch", das man in diesem System Original Z80-Code für PIO, SIO, CTC abarbeiten kann. Schaut man sich den .asm Quelltext Zeilen 239 bis 278 an, wird deutlich das im ATMEGA-Code lediglich Z80-M1 und Speicherbuszyklen anhand einer "harten" Memory-Map implementiert sind, aber keine Z80-IO-Zyklen oder Interrupthandling. Bei der Unterscheidung zwischen Speicherlesen und -schreiben scheint sich der ATMEGA auch eines "Tricks" zu bedienen, normalerweise dient dem System dazu die WRn-Leitung, die hier lt. Schematic hier nicht verbunden ist. Diese Sparmassnahmen sind nicht ganz unverständlich, wenn man um die beschränkten Bit-Einzelzugriffe weiß. Allerdings habe ich den Eindruck, das nicht viel Funktionalität eines (beliebigen) Z80 Systems mit dieser Z80-Configuration nachgestellt werden kann. Einige Grundfunktionen wie Befehl-Holen (ROM-lesen) ja, andere Funktion/Maschinenbefehle dagegen nicht. Das ist mit hier mit "rudimentär" und "unter IO-fähiges Minimalsystem" gemeint. Also vielleicht nicht "100% kaputt gespart" sonder eher "zum 'Krüppel' gespart". Wie ein Auto, mit dem man nur noch rückwärts im Kreis fahren kann weil Gangschaltung und Lenkung blockiert resp. "weg-improvisiert" wurden.
:
Bearbeitet durch User
Bradward B. schrieb: > Allerdings habe ich den Eindruck, > das nicht viel Funktionalität eines (beliebigen) Z80 Systems mit dieser > Z80-Configuration nachgestellt werden kann. Einige Grundfunktionen wie > Befehl-Holen (ROM-lesen) ja, andere Funktion/Maschinenbefehle dagegen > nicht. Wenn Du jeden Clock-Zyklus analysieren willst, dann solltest Du andere HW (wie z.B. meinen Z80-Dongle) einsetzen, ansonsten funktioniert ja dieses System im angestrebten Rahmen. CP/M wird darauf nicht laufen. https://github.com/Ho-Ro/Z80_dongle
> ansonsten funktioniert ja > dieses System im angestrebten Rahmen. Welcher "Rahmen" würde/wird von diesem System angestrebt? Insbesonders die Mutmassung, man könnte damit Systeme die PIO, CTC, SIO oder andere Z80-Zilog Peripherie voraussetzen, nachstellen, scheint IMHO nicht erfüllbar. > Wenn Du jeden Clock-Zyklus analysieren willst, Nicht Clock-, sonder Bus- resp. Befehls-Zyklen. Da sind nun mal bei einem Z80-System mehr nötig als lediglich Systemspeicher-Zugriff (siehe Anhang).
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.