Holgi's Eprom Simulator
bis 64kB
Nachdem ich mit einem Xilinx XC9536 zu Versuchszwecken nur mal ein
paar witzige Lauflichter programmiert hatte wollte ich wissen was man mit
einem großen CPLD noch verwirklichen kann. Einen XC9572 im PLCC84
Gehäuse hatte ich mir vorsorglich auch gleich mitbestellt. Einen Epromsimulator
für 8 Bit Eproms am Parallelport wollte ich schon immer mal bauen.
Die Anzahl der IO-Pins reicht dafür aus. Mal sehen ob das klappt !?
Wahnsinn: Es geht mit einer einseitigen Platine
und nur fünf Brücken.
Ich habe schon eine Menge Epromsimulatoren im Web gefunden. Meistens
mit 10 oder mehr CMOS-Chips. Nachbau ohne doppelseitige Platine fast unmöglich.
Mein Epromsimulator kann mit nur drei Chips aufgebaut werden. Kleiner als
eine halbe Eurokarte ! Ich habe jetzt auch eine neue Version mit vier Chips
aufgebaut. Sie benutzt zwei schnelle 32kB 20ns Cache RAM's von einem alten
Mainboard.
Warnung: Jeder
der den Epromsimulator nachbauen möchte tut dies auf eigene Gefahr.
Ich habe den Epromsimulator bisher in drei verschiedenen Schaltungen mit
80C32 erfolgreich eingesetzt. Taktfrequenz bis 20.0MHz. Auch im X2 Modus,
also quasi ein 80C32 Prozessor mit 40MHz. Das entspricht einer Zugriffszeit
von 75ns ! Dabei kam ein 70ns SRAM auf dem Epromsimulator zum Einsatz.
Ich hatte bisher noch keine Probleme mit dem Simulator ! Der zweite Entwurf
scheint recht gut gelungen zu sein ;) Der dritte Versuch mit zwei schnellen
20ns Cache RAM's funktioniert auch ziemlich gut. Wie schnell der wirklich
ist konnte ich noch nicht testen.
Was kann der Epromsimulator ?
Der Epromsimulator tut gegenüber der Zielschaltung so als wäre
er ein 27C512 Eprom. Er kann aber auch 27C256, 27C128 und 27C64 Eproms
simulieren. Unbenutzte Leitungen, z.B. NC(Pin26) beim 27C64, dürfen
beim Einsatz des Epromsimulators nicht offen sein. Entweder an Masse oder
5V legen. Die Leitungen Vpp(Pin1) und /PGM(Pin27) beim 27C64 liegen meist
auf 5V. Das sind die Adressleitungen A14,A15 beim 27C512. Die Schaltung
greift also immer auf den oberen Adressbereich des Simulator-SRAMs zu.
Das macht aber nichts. Man kann dem Uploadprogramm einen Offset übergeben
um die Daten in diesen Bereich zu verschieben:
eprsim hello.bin -o 0xC000 oder
eprsim
hello.bin -o 0xD000 wenn auch NC(Pin26) beim 27C64 auf 5V
liegt.
Die Portadresse des Simulators ist beliebig. Sie kann EprSim übergeben
werden: eprsim hello.bin -a 0x3bc -o 0xC000
EprSim kann zur Zeit nur Binärdaten lesen. Im ZIP-Archiv
ist dazu mein Hex2Bin Programm um Intel8-Hex-Dateien in Binärdaten
umzuwandeln. Systemvorraussetzungen: Bisher DOS/Win95/98 und ein freier
Druckerport. Prozessor egal. Meinetwegen einen alten 286er.
Software, Brenndateien, Schaltpläne und
Boards Eagle3.5
Beide Versionen: Eine mit 128kB RAM und eine mit zwei 32kB Cache
RAM's !
!!! NEU !!! Eprsim wurde mit giveio.sys verheiratet. Funktioniert
bei mir jetzt auch mit WinXP. NT und W2k sollten auch gehen.
giveio.sys muss NICHT installiert werden. Das macht Eprsim selbst.
Eprsim muß dazu einmal mit Admin Rechten gestartet werden.
giveio.sys muß im selben Verzeichnis liegen wie Eprsim !
Linux Version des Upload Programmes
Danke an Marc ! Das Programm muß mit ROOT Rechten aufgerufen werden.
Der Xilinx XC9572
Der XC9572 vereinfacht das Platinenlayout ungemein. Die Pins können
fast beliebig zugeordnet werden. Ein großer Teil des Platinenlayouts
wird quasi im Chip gemacht. Im XC9572 wurden ungefähr folgende Bauteile
einprogrammiert.
-
3x 74573 8 Bit Latch
-
2x 74244 8 Bit Tristate Buffer
-
16x 2 zu 1 Multiplexer
-
und noch ein paar kleinere Logikbausteine
Ich mag mir gar nicht vorstellen wie groß eine Platine mit diesen
Chips geworden wäre. Einseitige Platine fast unmöglich. Der XC9572
muß natürlich programmiert werden . Dazu ist der JTAG-Anschluß
da. Man muß den Epromsimulator dann irgendwie mit 5V versorgen. Am
besten gleich in die Zielschaltung stecken. Das Sub-D Kabel muß bei
der Programmierung nicht angeschlossen werden. Der Parallelport ist also
frei für den JTAG-Adapter: Programmer
für den XC9572. Die Brenndatei ist "epromsim.jed" im ZIP-Archiv.
Sie wird mit Impact aus dem ISE-Webpack programmiert. Man braucht wahrscheinlich
nicht das ganze ISE-Webpack runterzuladen. Es dürfte reichen sich
unter Support -> Software -> WebPack erstmal zu registrieren. Auf der Downloadseite
dann Individual Modules -> Programming Modules -> CPLD Programmer -> Select
Module und dann ganz rechts unten im Bild "Download" drücken. Dann
muß man nur noch ca. 10MB statt 100MB runterladen.
Das 128kx8 SRAM
Die eine Hälfte vom 128kx8 SRAM wird nicht verwendet. Es gibt
scheinbar keine 64kx8 SRAMs, und zwei 32kx8 SRAMs wollte ich aus Platzgründen
nicht einbauen. Ein 32kx8 SRAM war mir zu wenig. So teuer ist ein 128kx8
SRAM dann ja auch nicht.
Zwei RESET-Pins
Auf der Platine sind zwei Lötnägel für Resetsignale
vorgesehen. Ein positives und ein negatives Reset-Signal. Je nach Schaltung
verwendbar. Bevor das SRAM beschrieben wird, wird die Zielschaltung damit
angehalten bzw. in den Resetzustand gebracht. Alle Adress-, Steuer-
und Datenleitungen werden vom XC9572 von der Schaltung getrennt. Dann kann
das SRAM beschrieben werden. Zum Schluß alle Leitungen wieder auf
die Zielschaltung umschalten und RESET beenden. Das Programm läuft
los. Das ganze erledigt der Epromsimulator in wenigen Sekunden. Wenn der
Epromsimulator per Batch-Datei in den Compiler eingebunden wird braucht
man nur noch auf einen Knopf zu drücken, und darauf zu warten das
das neue Programm losläuft. Das ist Luxus pur, spart jede Menge Zeit
und vermeidet Stress wenn man beim Löschgerät zwar den Deckel
zugemacht, aber nicht auf den Löschknopf gedrückt hat !
Der PIC16F84-10
Der PIC verteilt die Daten. Die erste Version ohne PIC lief zwar,
aber nicht besonders stabil und nicht an jedem PC bzw. nicht mit jedem
Kabel. Ich hätte es besser wissen sollen. Alle Schaltungen die ich
für den Parallelport baue bekommen bei mir nicht ohne Grund einen
Handshakebaustein. Auch das erledigt der PIC. Der PIC muß programmiert
werden. Die Brenndatei ist "eprsim.hex" im ZIP-Archiv.
Wer noch keinen PIC-Prommer hat kann ja mal hier
nachsehen. JDM ist besonders leicht nachzubauen. Siehe dazu aber auch das
hier
!
Der Eprom Anschluß:
Der Anschluß sollte so aufgebaut werden wie ich es vorgesehen
habe. Die Stiftleisten kommen bei mir in einen etwas höhergesetzten
Textoolsockel auf der Zielplatine. Das hält recht gut. Die Verbindung
zwischen Epromsimulator und Zielschaltung ist dann maximal 5cm lang. Man
kann natürlich auch kürzere Stiftleisten nehmen wenn die Teile
auf der Zielplatine nicht zu hoch sind. Ich rate davon ab zwei 28polige
Platinenverbinder zu nehmen und ein 30cm oder noch längeres Flachbandkabel
dranzuquetschen. Wer das tut kann seine Schaltung dann möglicherweise
im Radio hören oder er bekommt Streifen auf seinem Fernsehbild.
Nachteile:
Der Simulator läuft bisher nur mit 5V. Der Stromverbrauch ist
wesentlich höher als bei einem Eprom ! Ich würde so von 100mA
bis 150mA mehr als bei einem Eprom ausgehen, je nach Taktfrequenz der Schaltung.
Wenn die Stromversorgung abgeschaltet wird geht das Programm im SRAM verloren.
Nach einschalten der Stromversorgung muß es wieder gefüllt werden.
Eine Batteriepufferung habe ich nicht vorgesehen. Der Simulator ist nur
für die Programmentwicklung vorgesehen. Wer genug Geld hat könnte
evtl. ein 128kx8 NVRAM einsetzen. Es ist aber ungewiß ob beim einschalten
dann nicht doch Daten verloren gehen. Zurücklesen der Daten aus dem
SRAM ist nicht vorgesehen. Wozu auch.
Erste Erfahrungsberichte:
Es hat bisher keinerlei Timing-Probleme bei mir gegeben. Der Xilinx-Chip
war in Verbindung mit einem 70ns SRAM immer schneller als der Rest der
Schaltung.
Man kann den Sub-D Stecker nach füllen des SRAMs abziehen. Dabei
ist bei mir bisher noch kein Datenverlust aufgetreten bzw. der Simulator
ist nicht beschädigt worden.
Stromverbrauch Epromsimulator gegenüber einem
Eprom in einer 80C32 Schaltung:
CPU-Clock |
Epromsimulator
|
Eprom
|
Eprom-Typ
|
11.059MHz |
249mA
|
159mA
|
ST M27C512-15
|
11.059MHz X2 Modus |
282mA
|
182mA
|
ST M27C512-15
|
20MHz |
273mA
|
179mA
|
ST M27C512-15
|
20MHz X2 Modus |
343mA
|
220mA
|
AMD AM27C512-15
|
Die ST Eproms haben beim 20MHz X2 Test die Backen dicht gemacht.
Ist ja auch kein Wunder. Die Zugriffszeit war doppelt so schnell wie erlaubt.
Der AMD Eprom hat ja eine Wahnsinnsreserve !
Ich entwerfe keine Schaltungen oder Programme für
andere. Dazu fehlt mir einfach die Zeit. Bei mir sind keine Bausätze,
Platinen oder programmierte Chips zu den Schaltungen erhältlich.
|