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. 

Holgi's Epromsimulator von oben

Holgi's Epromsimulator von unten

Epromsimulator Stiftleiste









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. 

E-Mail

Zur Startseite