Hallo zusammen, ich habe mit einem Arduino eine Schaltung und ein C Programm geschrieben, mit dem ich ein 2716 EPROM emulieren kann. Faktisch nehme ich die Adresse binär auf dem Adressbus an und gebe die gewünschten Daten auf dem Outputbus binär aus. Bevor ich das ganze in der realen Umgebung teste noch eine Frage: Wann genau ist der Zeitpunkt die Daten auf dem Adressbus auszulesen? Meine Überlegungen dazu: 1. Sofort sobald sich ein Bit geändert hat 2. die Spannung stabil ist Beides kommt mir aber spanisch vor. google bringt dazu nix, vielleicht weil mir die richtigen, kurzen Begriffe fehlen. Danke für Eure Hilfe Andre
Andre schrieb: > Wann genau ist der Zeitpunkt die Daten auf dem Adressbus auszulesen? > Meine Überlegungen dazu: Die Daten Timings stehen im Datenblatt eines EPROM 2716. Z.B. bei Output valid after Chip select oder Output Enable nach Address Setup Time.
Hallo Wilhelm, so ganz habe ich es noch nicht verstanden. Wenn ich dieses Datenblatt nehme und auf Seite 5 die Wellenform anschaue, dann könnte ich doch anfangen zu lesen sobald EP auf 0 geht. Dann wechselt EP wieder auf 1 und beim erneuten Wechsel lese ich wieder. Richtig oder falsch? http://www.futurlec.com/Memory/2716_Datasheet.shtml Vermutlich eine absolute Anfängerfrage :) Gruß Andre
Du hast folgende Zustände: EP oder G sind High -> Datenleitungen sind hochohmig EP und G sind Low -> Daten am Ausgang Gelesen werden die Adressleitungen wenn EP auf Low ist und anschliessend G auf Low geht (in der Grafik ist über der Flanke der Adressbus valid - bei der EP Flanke NICHT!). Aber im Endeffekt ist es wohl egal. Lies die Adressleitungen sobald EP und G low sind (also auf der zweiten Flanke H->L). Übrigens: für eine echte Simulation ist der Arduino viel zu langsam. Wenn Du also einen Prozessor an den Simulator hängst, dann erwartet der die korrekten Daten nach tGLQV = 120ns (Nanosekunden! Der Arduino braucht eher Microsekunden (Faktor 1000).
Du hast ein zuwenig ausführliches Datenblatt. Nimm lieber folgendes: http://www.google.de/#sclient=psy-ab&q=2716+eprom&oq=2716&gs_l=serp.1.2.0l4.409265.412548.0.416126.4.4.0.0.0.0.314.810.0j3j0j1.4.0...0.0...1c.1.17.psy-ab.LWhFuNNuIJw&pbx=1&bav=on.2,or.r_qf.&fp=eefdd29a84764d60&biw=1143&bih=687 dort ist das "Valid-Timing" auf Seite 3 erklärt.
Andre schrieb: > Wann genau ist der Zeitpunkt die Daten auf dem Adressbus auszulesen? Der richtige Zeitpunkt ist die fallende Flanke des /CE (oder /CS) Signals. In diesem Moment sind die Adressleitungen stabil. Mit der fallenden Flanke des /OE Signals solltest du dann deine Daten auf den Bus legen. Sobald /OE wieder ansteigt, muss der Datenbus auf Tri-State gehen.
Hi >Der richtige Zeitpunkt ist die fallende Flanke des /CE (oder /CS) >Signals. In diesem Moment sind die Adressleitungen stabil. Wo steht das? Man kann auch Lesen ohne das CS zwischen zwei Zugriffen wieder H wird. Dann ist die Änderung auf dem Adressbuss maßgebend. MfG Spess
Wofür braucht man denn einen so derart langsamen EPROM-Emulator? EPROM arbeiten asynchron. Nach jedem Adreßwechsel wird auch das Datenbyte geändert. Du müßtest den Pin-Change-Interrupt über alle Adreßleitungen verwenden. Die 450ns wirst Du jedenfalls nicht schaffen.
Peter Dannegger schrieb: > EPROM arbeiten asynchron. Nach jedem Adreßwechsel wird auch das > Datenbyte geändert. Du müßtest den Pin-Change-Interrupt über alle > Adreßleitungen verwenden. > Die 450ns wirst Du jedenfalls nicht schaffen. warum dann überhaupt Interrupts? while( 1 ) { PORT_OUT = daten[ PORT_IN ]; } so in der Art, man müsste aber noch das schreiben berücksichtigen.
Hallo, danke für die vielen hilfreichen Antworten. Die bringen mich wirklich ein ganzes Stück weiter. Ich dachte, dass der Arduino schnell genug für die Geschichte ist. Da dies leider nicht so ist, wäre die nächste Frage welches EEPROM als Ersatz für das 2716 (ist ja "nur" ein EPROM) gehen würde. Ich habe gelesen, dass das 2816 kompatibel ist. Dies bekomme ich aber in keinem Shop. Vom Verfahren her würde ich dann die Daten von der SD Karte lesen (per Arduino) und nicht an den Pins des Arduino emulieren, sondern von dort auf ein kompatibles EEPROM schreiben. Von dort würde der Prozessor dann die Daten lesen. Gruß Andre
Andre schrieb: > Da > dies leider nicht so ist, wäre die nächste Frage welches EEPROM als > Ersatz für das 2716 (ist ja "nur" ein EPROM) gehen würde. Ich habe > gelesen, dass das 2816 kompatibel ist. Dies bekomme ich aber in keinem > Shop. Das ist ja auch alles uraltes Zeugs. Das wirst du wohl einen groesseren Baustein nehmen muessen und die nicht gebrauchten Addresseingaenge auf GND legen. Andre schrieb: > Vom Verfahren her würde ich dann die Daten von der SD Karte lesen (per > Arduino) und nicht an den Pins des Arduino emulieren, sondern von dort > auf ein kompatibles EEPROM schreiben. Von dort würde der Prozessor dann > die Daten lesen. Dann nimm ein 29F040 Flash Eprom oder bessere ein RAM. Zwischen deinem Arduino und Speicherbaustein und Zielsystem wirst du dann aber noch einige Multiplexer schalten muessen um den Datenfluss zu steuern. Die ersten Versionen vom 2716 mit 450ns Zugriffzeit waren in den 80er fuer viele CPU schon zu langsam. Also mit simulieren durch Software im Arduino funktioniert das nicht.
Hallo! Für den Notfall geht oft auch ein RAM. Für den 2716 könnte man ein so genanntes Timekeeper-RAM M48T02 (z.B. Reichelt) verwenden. Das hat neben der eingebauten Batterie gleich noch eine Echtzeituhr.
isnah schrieb: > Du hast ein zuwenig ausführliches Datenblatt. Nimm lieber folgendes: > http://www.google.de/#sclient=psy-ab&q=2716+eprom&oq=2716&gs_l=serp.1.2.0l4.409265.412548.0.416126.4.4.0.0.0.0.314.810.0j3j0j1.4.0...0.0...1c.1.17.psy-ab.LWhFuNNuIJw&pbx=1&bav=on.2,or.r_qf.&fp=eefdd29a84764d60&biw=1143&bih=687 > dort ist das "Valid-Timing" auf Seite 3 erklärt. Gerade besonders EPROMs differieren von Hersteller zu Hersteller sehr, auch wenn es der gleiche pin- und funktionskompatible Grundtyp ist. Die einen wollen eine Programmierung mit vielen kleinen Impulsen, und die anderen eine Programmierung mit einem langen Impuls bzw. einem Einzelimpuls, haben da noch Zusatzlogik im Baustein drin. Man sucht sich da wirklich am besten genau das Datenblatt des Herstellers, von dem man ein EPROM hat. Besonders differieren sie in der Programmierspannung, die wollen mal 12,5V oder auch 13V oder 21V oder 25V. Und eben die Schaltzeiten. Wenn schon, dann kauft man heute für 8-Bitter bspw. ein 27C512, und legt da die höheren Adreßpins einfach auf Low, dann hat man sein 2716. Aber warum emuliert einer ein 2716? Geht es da um Retro-Zeugs?
Andre schrieb: > Ich dachte, dass der Arduino schnell genug für die Geschichte ist. Bei EProms kann das schon mit einem µC funktionieren - 2 Ports einlesen, Daten bestimmen, entscheiden ob Ausgabe oder Tristate am Ausgang schaffen viele in der Zeit von 150 ns, was eine damals schon schnelle Zugriffszeit war. Ein Arduino-System ist da viel zu umfangreich. Die Frage ist nur, wofür eigentlich - ich würde einen Adapter bauen mit Stiften für 2716 und einer Fassung PLCC32 ähnlich wie auf dem Bild, da passt z.B. ein 29F010 rein, den ich extern programmiere. Da stellt sich die Frage nach der Zugriffszeit garnicht und das Ding passt überall rein wo ein 2716 drin war. Gruss Reinhard PS natürlich müssen die Eingänge ständig gelesen werden, EProms sind nicht getaktet!
Wenn Du von DS lesen und in das ROM schreiben willst, dann kannst Du ein DualPort RAM verwenden. Dise CHips gibt es mit einem parallelem Addressbus (so wie das EPROM) und einem seriellen Bus, den Du dann jederzweit vom Arduino beschreiben kannst. Alle Multiplxer sind im RAM, und du brauchst nur noch einen Pin-Adapter. Kostet aber auch ein bisschen mehr.
Matthias M. schrieb: > Wenn Du von DS lesen und in das ROM schreiben willst, dann kannst Du ein > DualPort RAM verwenden. Wow, vielen vielen Dank für den Tip. Habe schon mit fritzing überlegt wie ich die ganzen Multiplexer auf dem Board unterbringe. So ist das natürlich deutlich einfacher und zudem seriell. Danke! Andre
Wenn du verraten würdest, was du konkret vor hast, könnte man dir besser helfen. - Du musst ein 2716 ersetzen, um eine alte Schaltung zu beleben: 2716 findet man in gut sortierten Bastelkisten. Es gibt auch Leute, die so etwas noch programmieren können. - Du möchtest ein 2716 simulieren, um schnell verschiedene Dinge ausprobieren zu können: Es gibt erprobte Schaltungen. Es gibt sogar fertige Leiterplatten dafür, die man nur noch mit etwas Hühnerfutter bestücken muss. Die werden üblicherweise wie ein Drucker angesprochen, teils auch seriell. - ???
Andre schrieb: > Hallo zusammen, > > Wann genau ist der Zeitpunkt die Daten auf dem Adressbus auszulesen? WENN die Daten stabil sind :-) Das kann von Hersteller zu Hersteler bei EPROMS verschieden sein. Deswegen hat der Z80 z.B. Waits eingefügt bei io-Aktionen.
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.