Intel 4004 Spielereien

Ich bin aktuell dabei, eine Intel 4004 CPU in Betrieb zu nehmen:

formatting link

Habe heute mal etwas von dem Assembler gelernt, was nichts besonderes Neues ist, wenn man schon 68000 und 6502 kennt. Schade daß Intel in späteren CPUs tatsächlich weniger Register eingebaut hat, denn der 4004 fühlt sich beim Programmieren etwas wie ein 68000 und weniger wie ein x86'er an. Knight Rider im Emulator läuft schon :-)

formatting link

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss
Loading thread data ...

Cool :) Herrlich sinnfrei, aber ich kann Dich voll verstehen. An den Vintage-Geräten meiner Kunden habe ich immer noch mit 6809 und Z80 zu tun, Freitag habe ich gerade einen 6809 Code von HD43160 auf HD44780 Displays geändert - macht auch Spaß. Besonders wenn man nach dem Brennen der EPROMs merkt, dass sich irgendwo noch ein "show cursor" versteckt hat, der beim 44780 leider zum Umkehren der Schreibrichtung, sprich dekrementieren des Character Counters, führt ;)

Am 08.07.2012 15:12, schrieb Frank Buss:

Reply to
Stefan Huebner

"Frank Buss" schrieb im Newsbeitrag news:jtc10u$e22$ snipped-for-privacy@newsreader4.netcologne.de...

formatting link
formatting link
formatting link

--
Manfred Winterhoff, reply-to invalid, use mawin at gmx dot net
homepage: http://www.reocities.com/mwinterhoff/
 Click to see the full signature
Reply to
MaWin

formatting link

Danke, die Applet-Simulation kannte ich noch nicht. Interessante Studienarbeit auf der Seite.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Einen Z80 habe ich auch noch hier herumliegen. Sollte viel einfacher sein, damit was zu bauen, da es mehr Bausteine mit dem 5V Interface gibt.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Frank Buss schrieb: (...)

4004

Das liegt daran, dass die Befehlssatzarchitektur des 8008 (in dessen Tradition auch die Nachfolger 8080, 8085, 8086, 8088 u.s.w. standen) auf einen Terminal-Entwurf von CTC zugeschnitten war und nicht in der Tradition des 4004 stand.

Reply to
Martin Peters

Die logische Fortführung der 4004-Architektur fand sich stattdessen in den frühen Microcontrollern von Intel (MCS-48).

Hergen

Reply to
Hergen Lehmann

Habe mittlerweile das Board aufgebaut:

formatting link

Hier die Schaltung als Eagle-Datei und PDF-Export:

formatting link

Gibt allerdings das Problem, daß der PIC zu langsam ist. Diese Schleife hier:

while (1) { #asm MOVLW 0x60 ; phi1+phi2 MOVWF 0x5 MOVLW 0x40 ; phi2 MOVWF 0x5 MOVLW 0x60 ; phi1+phi2 MOVWF 0x5 MOVLW 0x20 ; phi1 MOVWF 0x5 #endasm }

Generiert bei 20 MHz Takt gerade mal ein 500 kHz Signal für den 4004, und da fehlt noch die ganze restliche Logik, um ein ROM zu emulieren.

Im Datenblatt vom 4004 sind die Zeiten zwischen den beiden Taktleitungen recht eng definiert und eine minimale Periode von 1.35 us und maximal 2 us erlaubt. Hängt wohl mit den internen Leckströmen zusammen, was man so im Internet liest. Ich versuche aber dennoch mal die Peripheriebausteine mit dem PIC zu simulieren, denn ist ja schon ein neuerer 4004 im Plastikgehäuse, vielleicht hat der niedrigere Leckströme. Ich hoffe da kann nichts kaputtgehen bei?

Ein anderes potentielles Problem ist die maximal erlaubte Anstiegs- und Abfallzeit für den Takt. Die ist mit 50 ns angegeben. Mein 40190 schafft da gerade mal 200 ns. Wie kann man also 0 V / 5 V in 0 V / 15 V mit 50 ns umsetzen? Am besten noch bei Reichelt oder Farnell als fertiges IC bestellbar, vielleicht ein schneller OP? Aber diskret aufgebaut wäre vielleicht auch interessant. Falls ich dann den PIC durch einen FPGA ersetzen muß, wäre eine Wandlung von 0 V / 3,3 V nach 0 V / 15 V noch prima.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Normalerweise nicht. Es koennen hoechstens Bits kippen, wobei diese Timings damals so konservativ angegeben wurden wie heutzutage Flash Schreibzyklenzahlen.

Mit Gate Drivers, diese Art:

formatting link

Keine Ahnung ob Reichelt Gate Drivers hat, deren Web Site tue ich mir nicht an und ich weiss eh nicht wie die Dinger auf Deutsch heissen :-)

Gate Driver sind heutzutage fast alle fuer eine Ansteuerung ueber 3.3V Logik geeignet.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Prima, werde es dann mal testen.

Danke, aber das hat sich zum Glück erledigt. Ich habe eben die 10k Serienwiderstände R5 und R6 überbrückt (anders als bei der Datenleitung, wo ich noch nicht 100% weiß, wann der 4004 auf Ausgang schaltet, macht das da auch überhaupt keinen Sinn) und der HCF40109BE schafft da jetzt locker unter 50 ns. Nochmal mehr als doppelt so schnell, wie ich letztens auf meinem Breadboard per fliegendem Aufbau gemessen hatte:

formatting link

Auch fast überhaupt kein Überschwingen (zumindest wenn nur das Scope als Last dranhängt), was mich schon wundert, da ich die Platine initial mit dem Eagle Autorouter geroutet habe, aber ich habe das Schlimmste von Hand korrigiert :-)

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

[...]

Sauber! Du hast ja ein fancy Scope, ist das neu?

Bei solch geriatrischen Chips ist das kein Wunder. Laut Datenblatt liegen die Rdson der Ausgangstreiber des 40109 im Bereich mehrerer hundert Ohm. Da hast Du "eingebaute Serienterminierung" :-)

Mit 3.3V Ansteuerung kommt der 40109 vermutlich jedoch nicht gut zurecht, selbst wenn Du einen DC-Shift nach oben machst kann das was knapp werden. Aber es soll ja sicher keine Serienfertigung sondern nur ein Unikat werden.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Ja, ist relativ neu, ein Jahr alt. Ein DSO-X 3012A. Man gönnt sich ja sonst nichts :-) Aber der relativ große Speicher macht wirklich Spaß beim Debuggen von Sachen wie SPI oder I2C, zusammen mit den Triggermöglichkeiten, wie erst auf die 742. Flanke o.ä. zu triggern.

Vielleicht kann man es ja verkaufen. Falls sich jemand auf eBay sowas hier kaufen sollte (meine Plastikversion war bedeutend preiswerter)

formatting link

dann ist er vielleicht auch bereit noch ein wenig Geld auszugeben, um den Chip auf Echtheit zu testen. Denn sowas könnte man heutzutage relativ leicht vom Gehäuse her fälschen, denke ich mal.

Die vollständige Funktion bei 700 kHz nachzubauen wäre aber aufwendiger und werden Fälscher nicht machen, da sie wohl zu recht vermuten, daß der Chip normalerweise in einer Vitrine verschwindet und nicht auch tatsächlich eingesetzt wird. Würde sich von den Kosten wohl auch nicht lohnen bei den kleinen Stückzahlen.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Der Bildschirm sieht ja erste Sahne aus, endlich mal was groesser als die uebliche Schiesscharte:

formatting link

Aber warum hat es nur 100MHz Bandbreite obwohl Sampling mit 4GSPS erfolgt? Das wuerde bei mir was eng.

Da duerfte dem Verkaeufer preislich die Phantasie durchgegangen sein :-)

Ich kann mir nicht vorstellen dass da echt ein Markt ist. Ingenieure haben ja normalerweise keine Vitrinen fuer Sammeltassen und sowas. Obwohl es manchmal erstaunlich ist. Bei einem aktuellen Projekt wo ich den HF-Kram ein wenig mitbetreue soll das meiste in bedrahtet bestueckt werden. Wegen des "Retro Look" und man soll alles sehen koennen. Nicht ganz trivial sowas einstrahlfest zu bekommen wenn z.B. jemand ein GSM Handy danebenlegt.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Weil Agilent Bandbreite als Option verkauft. :-D

Olaf

Reply to
Olaf Kaluza

formatting link

Kann man wohl sagen. Ich hatte vorher ein uraltes TDS2012, ist ein Unterschied wie Tag und Nacht.

Das ist leider Politik bei Agilent, man muß alles extra dazukaufen. Ich habe die 200 MHz Erweiterung dazu gekauft (gab neue Probes und man konnte es per Software freischalten), weil ich für ein zukünftiges Projekt auch SRAMs bei 100 MHz Takt damit debuggen möchte.

Stimmt, schon von der Menge an gehandelten 4004 her gesehen würden es wohl höchstens ein paar Einzelanfertigungen sein. Aber macht schon Spaß sowas rein der Übung halber bis zu einem fertigen Produkt zu entwickeln.

Habe ich bei meiner Schaltung auch drauf geachtet, natürlich alles in bedrahtet :-) Obwohl SMD eigentlich viel einfacher einzulöten ist, wenn es nicht gerade 0402 ist.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

formatting link

Ich habe die Serie auch nie gemocht und daher ein stattdessen ein Instek gekauft. Das hat 200MHz Bandbreite, vier Kanaele und lag deutlich unter $2000.

So eine Vertriebspolitik mag ich ueberhaupt nicht, oder in Neu-Speak, das "turned mich off".

Ich wundere mich manchmal wieviele Auftragsbestuecker in westlichen Laendern bei 0402 rumzetern und 0201 als total unmoeglich ablehnen. In Asien fragen sie meist hoechstens nach der Monatsstueckzahl.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Habe die Taktgenerierung zum Debuggen mal etwas langsamer mit 250 Hz laufen lassen (damit ich noch genug Zeit habe, das Display anzusteuern), und der Chip gibt das Sync-Signal alle 8 Takte aus, genau wie laut Datenblat beschrieben, er lebt also erstmal:

formatting link
(bei periodischen Signalen kann man per Persistenz- und Capture Waveform-Funktion ein wenig tricksen, auch nur mit 2 Kanälen)

Die CPU wird allerdings nach ein paar Minuten bis ca. 50°C warm (per IR-Thermometer gemessen). Der 6502 wurde auch etwas warm, ist wohl bei den alten Chips so, vermute ich mal. Ein PIC bleibt bei 20 MHz kalt. Vielleicht habe ich ja noch was falsch angeschlossen. Aber er darf ja bis 70°C warm werden laut Datenblatt, also erstmal nicht so schlimm, hoffe ich.

--
Frank Buss, http://www.frank-buss.de
electronics and more: http://www.youtube.com/user/frankbuss
Reply to
Frank Buss

Nimm einen AVR.

loop: ldi R16,$60 ; 1 out PORTx,R16 ; 1 ldi R16,$40 ; 1 out PORTx,R16 ; 1 rjmp PC+1 ; 2 ldi R16,$60 ; 1 out PORTx,R16 ; 1 ldi R16,$20 ; 1 out PORTx,R16 ; 1 rjmp loop ; 2 ;-- ;12

Sprich: die Schleife läuft bei 20MHz Takt mit 1,67MHz. Und erzeugt im Gegensatz zu deiner Variante wenigstens auch zwei symmetrische Phasen.

Da müßte man also sogar noch ganz erheblich "bremsen". Naja, die freien Takte kann man gut nutzen, um darin den Rest der Arbeit zu erledigen. Freundlicherweise ändert nämlich keine der obigen Instruktionen irgendein Flag oder Register außer R16.

Man kann also die Schleife recht problemlos ausrollen und mit dem Rest des Codes verschachteln, für den dann noch 31 andere Register zur Verfügung stehen. Dabei verflüchtigen sich übrigens auch noch mindestens einer der beiden Sprünge als unnötig und setzt somit zwei Takte pro Zyklus für den restlichen Nutzcode frei.

Wenn's dann immer noch nicht reichen würde, könnte man noch weiter gehen und im Extremfall zwei weitere Register für die Takterzeugung exclusiv verwenden. Dann würden auch noch die Register-Initialisierungen in der Schleife wegfallen und man könnte vier weitere Takte pro Zyklus für den Nutzcode freisetzen.

Aber obwohl es so locker gehen würde: Es wäre trotzdem ein ziemlich dummer Ansatz.

Der AVR hat nämlich Timer, die für so regelmäßige Sachen ideal geeignet sind. Ein einzelner Timer kann in modernen AVRs zwei PWM-Ausgänge ansteuern, würde also allein bereits völlig ausreichen, um diesen Zweiphasentakt zu erzeugen. Also Timer einmalig geeignet initialisieren und die gesamte Recheneinheit kann sich dann vollständig auf den Rest der Sache konzentrieren, die Takterzeugung läuft nebenbei, ohne einen einzigen Takt Rechenzeit zu beanspruchen. Die Synchronisation zwischen Takt und dem Rest ist sowohl über Polling also auch über Interrupt möglich.

Reply to
Heiko Nocon

Warum sind die Horizontalen denn so dick? Ist das Scope so noisy oder sind das Einstrahlstoerungen?

Der 4004 zieht sich laut der Graphik auf Seite 8 ganz gut was rein:

formatting link

Er erschien ja vor der Energiekrise auf dem Markt, als Strom einfach so aus der Steckdose kam.

--
Gruesse, Joerg

http://www.analogconsultants.com/
Reply to
Joerg

Die SH7045 die ich hier letztens mal geschenkt bekommen habe werden auch sehr deutlich warm. Im Datenblatt steht da aber auch eine typische Stromaufnahme von 160mA bei 5V. Oh..und im Sleepmode sind es

140mA. :-D Da habe ich beim ersten einschalten auch gedacht das ich was falsch gemacht habe....

Das sind alles Bausteine die optimal sind um in Norwegen im Winter zu ueberleben, man fragt sich bloss wie die ICs einen Sommer in heisseren Laendern ueberstanden haben.

Oh..und der SH7045 wurde ja sogar in Satelliten eingesetzt. Ich meine ihr hab euch ja bestimmt schon immer gefragt warum die so aufwaendige Solar und Kuehlpannels haben. :-D

Olaf

Reply to
Olaf Kaluza

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.