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! :)
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.
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...
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
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.
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? :)
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.
@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 ^^
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 :)
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).
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
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.
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.
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.
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?
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.
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.
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
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.
Bau es zusammen und teste es mit wenigen kHz, danach mach alles auf 4-lagige Platinen.
Vielen Dank an alle. Werde es tatsächlich erstmal mit breadboards probieren, das ganze mit einer niedrigen Taktung testen und dann auf Platinen bringen :)
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
