Forum: Mikrocontroller und Digitale Elektronik Max. Taktung Hombrew CPU (ähnlich z80)


von Jonas B. (dr_j0nes)


Lesenswert?

Heyho zusammen.
Ich Frage mich, ob man mit einem Breadboard eine Homebrew CPU bauen kann 
welche 4mhz erreichen kann. Die CPU besteht dabei aus einzelnen Logic 
ICs (and, or, xor Gattern) und aus sRAM bzw EEPROM ICs. Vorgestellt habe 
ich mir das ähnlich der CPU von Ben Heck (https://eater.net/8bit/).

Mein eigentliches Ziel ist es einen LR35902 Prozessor nachzubauen. 
Dieser basiert auf dem 8080 und dem z80. Eingesetzt wird der LR35902 im 
ersten Gameboy.

Der LR35902 läuft im Gameboy mit einer Taktung von etwa 4mhz. Nun die 
Frage: meint ihr das ist möglich oder stellt sich mir da die Impendanz 
der Breadboards, bei so hohen Taktungen, in den Weg?

Lieben Dank für's durchlesen! :)

von Michael B. (laberkopp)


Lesenswert?

Jonas B. schrieb:
> Ich Frage mich, ob man mit einem Breadboard eine Homebrew CPU bauen kann
> welche 4mhz erreichen kann.

Nein.

Kapazitäten zu hoch, Kabel zu lang, keine vernünftige 
Versorgungsspannungsabblockung möglich.

Realisiere das in EINEM FGPA.

von Possetitjel (Gast)


Lesenswert?

Michael B. schrieb:

> Jonas B. schrieb:
>> Ich Frage mich, ob man mit einem Breadboard eine
>> Homebrew CPU bauen kann welche 4mhz erreichen kann.
>
> Nein.

Unglaublich.
Und Seymour Cray rotiert im Grabe...

von Klaus (Gast)


Lesenswert?

Jonas B. schrieb:
> Ich Frage mich, ob man mit einem Breadboard eine Homebrew CPU bauen kann
> welche 4mhz erreichen kann.

Gefädelt hab ich das damals (Z80), andere haben sowas gewrapt (PDP). 
Wenns eine Platine wurde, waren die die groß wie Kuchenbleche. Ob das 
auch auf dem Breadboard geht?

MfG Klaus

von Possetitjel (Gast)


Lesenswert?

Jonas B. schrieb:

> Ich Frage mich, ob man mit einem Breadboard eine
> Homebrew CPU bauen kann welche 4mhz erreichen kann.

"homebrew CPU": Machbar.
"4MHz": Sicherlich machbar.
"Breadboard": Würde ich mir nochmal überlegen.

Rechenbeispiel: Angenommen, Du benötigst ca. 70 ICs.
Angenommen weiter, ein Logik-IC habe 14 Pins. Dann
sind das in der Summe fast 1000 Kontakte.

Wenn die Zuverlässigkeit der Steckkontakte 99% beträgt,
hast Du bei 1000 Kontakten praktisch nie eine fehlerfrei
funktionierende Schaltung.

Die 4MHz werden ein synchrones Design, Grundwissen über
Terminierung und unter Umständen Berücksichtigung der
Kabellaufzeiten erfordern.

von Jonas B. (dr_j0nes)


Lesenswert?

Wow danke schonmal für die ganzen antworten!

@Michael: Eine FPGA-Lösung ziehe ich noch immer in betracht. Allerdings 
geht es mir nicht nur um Funktion sondern auch ein bisschen um den 
Charme des ganzen. Eine einzige kleine Platine die ähnlich wie ein mC 
aussieht ist mir für dieses Projekt ein bisschen zu "einfach". :) Ich 
werde aber auf jeden Fall eine FPGA-Lösung zusammen schustern bevor ich 
mich an die Löt-/Steck-Lösung begebe.

@Posdetitjel: Hmmm OK bei Ben Eaters CPU kommen recht hochwertige 
Breadboards zum Einsatz und die CPU scheint fehlerfrei zu funktionieren. 
Nichtsdestotrotz vertraue ich dir in der Hinsicht mal :D Wie wäre es 
denn wenn ich die CPU in verschiedene Arbeitsbereiche aufteile, diese 
Stück für Stück auf einem Breadboard baue und sobald ein Bereich 
funktioniert diesen bspw. auf eine Lochrasterplatine bringe? Noch eine 
Frage: Wenn das Breadboard extrem hochwertig wäre und die Steckkontakte 
zu 100% zuverlässig wären, wären dann eine Frequenz von 4mhz möglich? 
Die Steckkontakte kann ich ja quasi beim Bau überprüfen oder sogar 
(Achtung festhalten) mit Heißkleber Festkleben. :D

@Klaus: stimmt das habe ich auch mal irgendwo gesehen. Hast du mehr 
Infos zu diesen Techniken für mich? :)

von Possetitjel (Gast)


Lesenswert?

Jonas B. schrieb:

> @Posdetitjel: Hmmm OK bei Ben Eaters CPU kommen recht
> hochwertige Breadboards zum Einsatz und die CPU scheint
> fehlerfrei zu funktionieren.

Ich wollte Dich nur auf das Problem aufmerksam machen.
Man unterschätzt leicht die Zuverlässigkeitsprobleme,
die eine solche Vielzahl an Kontakten mit sich bringt.


> Wie wäre es denn wenn ich die CPU in verschiedene
> Arbeitsbereiche aufteile, diese Stück für Stück auf
> einem Breadboard baue und sobald ein Bereich funktioniert
> diesen bspw. auf eine Lochrasterplatine bringe?

Das wäre eine Möglichkeit -- vorausgesetzt, Du kannst
anständig löten. Und -- nein, das ist nicht boshaft
gemeint.


> Wenn das Breadboard extrem hochwertig wäre und die
> Steckkontakte zu 100% zuverlässig wären, wären dann
> eine Frequenz von 4mhz möglich?

Schätzungsweise meinst Du nicht 15 Impulse je Stunde
(4mHz = 4 Millihertz), sondern 4 Millionen Impulse je
Sekunde (4MHz = 4 Megahertz).

Ich hatte das, glaube ich, schon beantwortet: Ich halte
das sehr wohl für machbar, allerdings brauchst Du ein
solides Grundwissen nicht nur über Digitaltechnik, sondern
auch über Hochfrequenztechnik.

von Jonas B. (dr_j0nes)


Lesenswert?

@Possetitjel: Keine Sorge ich nehme das mit dem Löten nicht böse gemeint 
auf :)
Danke du hast mir auf jeden Fall schonmal sehr weiter geholfen!
Könntest du mir evtl noch verraten was bei der Hochfrequenztechnik in 
diesem Falle besonders relevant für mein Vorhaben sein könnte? Ein paar 
Stichwörter zum googlen wären Klasse. :)

Ou ja natürlich meinte ich Mega-Herz. Blöde Autokorrektur ^^

von Possetitjel (Gast)


Lesenswert?

Jonas B. schrieb:

> Könntest du mir evtl noch verraten was bei der
> Hochfrequenztechnik in diesem Falle besonders
> relevant für mein Vorhaben sein könnte?

Klar -- Leitungstheorie:
Wellenwiderstand, (Fehl-)Anpassung, Terminierung,
Freiraumwellenlänge, Verkürzungsfaktor.

Bei Bedarf in "HF, Funk und Felder" fragen :)

von Jonas B. (dr_j0nes)


Lesenswert?

Super! Vielen lieben Dank für alles Possetitjel! :)

von Mario M. (thelonging)


Lesenswert?

Jonas B. schrieb:
> Hmmm OK bei Ben Eaters CPU kommen recht hochwertige
> Breadboards zum Einsatz und die CPU scheint fehlerfrei zu funktionieren.

Zitat Ben:
Our clock is adjustable-speed (from less than 1Hz to a few hundred Hz).

von Joerg W. (joergwolfram)


Angehängte Dateien:

Lesenswert?

Ich glaube nicht, dass das realisierbar ist. Zumindest nicht etwas 8080 
kompatibles mit 4MHz auf Breadboard. Kabellaufzeiten werden eine 
untergeordnete Rolle spielen (bei 4MHz kommt der Strom in einer 
Clock-Periode ca. 72m weit) aber Gatterlaufzeiten und die RC-Glieder, 
die durch Übergangswiderstände und Eingangskapazitäten gebildet werden. 
Und parallele EEPROMs wie der 28C16 sind meist auch nicht gerade 
schnell, bei 120ns Zugriffszeit ist dann nicht mehr viel Luft für 
Drumherum.

Zu Z80-Zeiten hatte ich mehrere "Grafikkarten" mit TTL-Bausteinen und 
SRAMs gebaut, selbst bei doppellegigen Platinen (Handgezeichnet und/oder 
mit Abreibesymbolen) ist man da schnell an die Grenzen gekommen. Und 
einige davon haben auch nie richtig funktioniert... Das angehängte Bild 
ist der Scan von einem abfotografierten Bild (SW-Fernseher) einer 
Grafikkarte mit stolzen 64x64 Pixeln aus dem Jahre 1987. Grundfläche ca. 
20x25cm, 4KBit RAM (4xU215), angesteuert von einem auf ca. 4,5 MHz 
übertakteten LC80. Auf Breadboard würde ich mir so etwas nicht zutrauen 
(und zumuten)...

Jörg

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Gefädelt auf Lochrasterplatine sind durchaus höhere Frequenzen als 4 MHz 
stabil möglich. Man muss in erster Linie für eine gute Stromversorgung 
sorgen, die sollte nicht gefädelt werden, sondern aus dickerem CU-Draht 
angefertigt werden. Spendiert man dem ganzen dann sehr kurz angebundene 
100nF-SMD-Kondensatoren (die man direkt an die dicken CU-Drähte lötet), 
dann ist ein 4-MHz-Design kein unlösbares Problem.

Wenn man die Bauteile dann auch noch sehr dicht nebeneinander anordnet, 
resultieren auch keine dramatisch langen Leitungszüge; man sollte 
allerdings auf "Fädelkämme" verzichten und bei der Verlegung der 
Fädeldrähte nur funktional zusammengehörende Busse parallel verlegen, um 
Übersprechen zu vermeiden. Das Übersprechen innerhalb einer 
Funktionsgruppe wie z.B. den Datenleitungen kann man ignorieren, denn 
diese Leitungen werden alle gleichzeitig umgeschaltet und erst nach 
einer gewissen Totzeit ausgewertet.

Ich habe mir auf diese Weise mal ein Textterminal mit 16 MHz Pixeltakt 
gebaut (mit 68B09E und 68B45), das hat auf einem BAS-Monitor 96 Zeichen 
in 25 Zeilen in einer 9x12-Pixelmatrix ausgeben können.

Das ganze hat eine Europakarte (160x100) gefüllt, von oben sind nur noch 
sehr wenige Löcher des Lochrasters zu sehen.

von Peter D. (peda)


Lesenswert?

Mit den alten TTL-ICs im DIP-Gehäuse konnte man problemlos 20MHz 
Frequenzzähler aufbauen. 4MHz sind also bequem machbar.
Was aber nicht geht, sind Steckbretter. Man muß die Verbindungen löten, 
damit sie zuverlässig halten.

Als ALU hat man früher oft den 74LS181 genommen. Heutzutage könnte man 
sich einen Flash entsprechend programmieren.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
> Mit den alten TTL-ICs im DIP-Gehäuse konnte man problemlos 20MHz
> Frequenzzähler aufbauen. 4MHz sind also bequem machbar.

Die maximale Frequenz von CPUs wird nicht so sehr von der Grenzfrequenz 
der verbauten Komponenten bestimmt, sondern von der Summe der Laufzeiten 
jener Komponenten, die innerhalb eines Taktes nacheinander durchlaufen 
werden. Clock to output delay + Nx gate delays + input to clock setup 
time.

von (prx) A. K. (prx)


Lesenswert?

Peter D. schrieb:
> Als ALU hat man früher oft den 74LS181 genommen. Heutzutage könnte man
> sich einen Flash entsprechend programmieren.

Wobei sich man die Frage stellen muss, wo man die Grenze in der Nutzung 
moderner Komponenten zieht. Man kann ziemlich viel Logik durch 
Flash-ROMs ersetzen und damit sowohl Platz einsparen als auch 
Fehlerkorrekturen erleichtern. Nur bewegt man sich damit dann immer 
weiter vom Original weg. Geht es darum, die Funktion nachzubilden, egal 
wie, oder geht es um Retro?

von Peter D. (peda)


Lesenswert?

Man muß natürlich rechnen, daß die 250ns nicht überschritten werden und 
bei Bedarf zwischenspeichern (74AC574) oder schnellere ICs nehmen 
(74ACxxx).
Ich hab auch schon 74ACxxx im DIP auf ner Lochrasterplatine verwendet.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Rufus Τ. F. schrieb:
> Gefädelt auf Lochrasterplatine sind durchaus höhere Frequenzen als 4 MHz
> stabil möglich.

Jo, das ist kein Problem. Der TMS32C025, der hier auf einer Fädelplatine 
sitzt, spricht ohne Probleme den gefädelten externen SRAM mit 20Mhz an, 
man muss halt ein wenig kompakter bauen.
Steckbrett lässt aber leider oft eine kompakte Leiterbahnführung nicht 
zu - 4MHz sollten aber klappen. Nur ist die Kontaktgabe meistens nicht 
so doll, so das man mit debuggen länger zu tun hat.

von Thomas W. (diddl)


Lesenswert?

Jonas B. schrieb:
> @Michael: Eine FPGA-Lösung ziehe ich noch immer in betracht. Allerdings
> geht es mir nicht nur um Funktion sondern auch ein bisschen um den
> Charme des ganzen.

Das verstehe ich sehr gut.

Warum nicht etwas dazuwischen?

- SMD TTL um Platz zu sparen
- GAL oder 5V CPLD um mehrere TTL zusammen zu fassen

von Michael K. (Gast)


Lesenswert?

Jonas B. schrieb:
> 4mhz

Ach, 4 Millihertz sind garkein Problem.

Solltest Du 4Mhz meinen, das kann Dir niemand sagen.
Kennt doch keiner die Plazierung und Verkabelung.

von Bla (Gast)


Lesenswert?

Bau es zusammen und teste es mit wenigen kHz, danach mach alles auf 
4-lagige Platinen.

von Jonas B. (dr_j0nes)


Lesenswert?

Vielen Dank an alle.
Werde es tatsächlich erstmal mit breadboards probieren, das ganze mit 
einer niedrigen Taktung testen und dann auf Platinen bringen :)

von Helmut S. (helmuts)


Lesenswert?

Sobald man das mit FLASH, PALs und integrierter ALU baut hat es doch 
nichts mehr mit der Uridee das mit Gattern zu machen zu tun. Dann kann 
man es auch gleich im FPGA realisieren. Dabei lernt man dann sogar noch 
mehr dabei.

von Sebastian V. (sebi_s)


Lesenswert?

Nur nochmal so als Vergleich zwischen dem was in deinem verlinkten 
Artikel gebaut wurde und was die Gameboy CPU kann. Die Breadboard CPU 
kann gerade mal eine Hand voll Instructions während der Gameboy über 500 
Instructions kennt (OK viele sind ähnlich). Dazu ist es mit dem reinen 
Ausführen von Instructions nicht getan. Die Gameboy CPU hat noch weitere 
Funktionen wie Interrupts, Timer und DMA.

Ich nehme mal an, dass als Ziel von dem Ganzen ein Gameboy Spiel 
ausgeführt werden soll. Sonst hätte man wohl eine andere CPU gewählt. 
Dazu fehlt aber noch mindestens der Grafikchip, da es sonst kein Bild 
gibt. Nicht zu vergessen ist auch der Soundchip der je nach Spiel auch 
dazu führen kann, dass sich das Spiel aufhängt wenn der Chip fehlt.

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.