Forum: Mikrocontroller und Digitale Elektronik Ansteuerung Flash 39F040 mit klassischen Microprozessor


von Klaus L. (klaly)


Lesenswert?

Hallo liebe Leute,
ich möchte für einen alten historischen Einplatinencomputer 6802 eine 
RAM-Erweiterung bauen und möchte da auch gleich einen größeren Flash 
Baustein 39F040, bzw. SST39SF040 mit drauf machen. Primär um da 
Binärprogramme daraus laden zu können. Alles erstmal kein Problem.

Aber wie steuere ich die OE# Leitung an, die ich eigentlich statisch auf 
LOW legen wollte. Zum Schreiben muss ich die aber auch bedienen. Es gibt 
auf dem Board ein GAL, wo noch PINs frei sind.

Diese Frage habe ich auch bereits in den VzEkC Forum gestellt, link:
https://forum.classic-computing.de/forum/index.php?thread/35528-flash-39f040-mit-klassischen-prozessor-beschreiben/&postID=535143#post535143

dort ist auch ein Bild und der vorläufige KiCad Plan zu finden.
Im Moment nocht mit einem Fehler: OE# und CE# sind vertauscht.

Die adressen A11...A18 sollen über Latch, Page Switching gesteuert 
werden.
Für Tips wäre ich dankbar.

mfG.Klaus Loy

von Michael B. (laberkopp)


Lesenswert?

Klaus L. schrieb:
> Aber wie steuere ich die OE# Leitung an,

OE muss halt vor WE auf high gehen (und CE low sein) damit du überhaupt 
Daten an die Datenpins anlegen kannst.

Alleine das R/W Signal mit irgendeinem bisherigen Zugriffssignal zu 
verUNDen wird wohl nicht gehen weil auch noch Zeiten (setup und hold) 
einzuhalten sind.

von Klaus L. (klaly)


Lesenswert?

Danke Michael,
also das ist dann zunächst mal nicht so einfach.
Evtl. lasse ich das Schreiben dann erstmal weg.

von Frank K. (fchk)


Lesenswert?

Klaus L. schrieb:
> Danke Michael,
> also das ist dann zunächst mal nicht so einfach.
> Evtl. lasse ich das Schreiben dann erstmal weg.

Frage doch mal die Leute vom Commander X16, wie die das so machen. Die 
setzen zwar einen 6502 und keinen 6802 ein, aber das Businterface ist ja 
ähnlich.

fchk

von Harald K. (kirnbichler)


Lesenswert?

Klaus L. schrieb:
> Aber wie steuere ich die OE# Leitung an, die ich eigentlich statisch auf
> LOW legen wollte.

Invertiertes R/W#.

von Klaus L. (klaly)


Lesenswert?

> Invertiertes R/W#.
Ja, ich werde das mal probieren, R/W# geht ja eh schon in mein GAL rein, 
dann hänge ich den FLASH OE# an einen freien GAL Ausgang und invertiere 
das R/W# Signal.

Danke.

von Klaus L. (klaly)


Lesenswert?

Hier habe ich ein Projekt gefunden Flash an einem Z80:
https://github.com/b1ackmai1er/SBC-V2-005/tree/master

Da hängt einfach de Z80 WR# auf Pin31 PGM# des Flash
Und der Z80 RD# am OE#

Mal schaun, wie ich das für meinen 6802 hin bekomme.

mfG. Klaus Loy

von Harald K. (kirnbichler)


Lesenswert?

Klaus L. schrieb:
> Da hängt einfach de Z80 WR# auf Pin31 PGM# des Flash

Der SST39SF040 hat keinen PGM#.

Der hat genau drei Steuerleitungen:

CE#, OE# und WR#

WR# kannst Du direkt mit R/W# verbinden, OE# wie gesagt mit dem 
invertierten R/W#.

Zum Beschreiben musst Du Dich aber genau an die Kommandotabele halten, 
was bedeutet, daß Du die Adressen 0x5555 und 0x2aaa beschreiben kannst - 
dabei genügen 15 der Adressleitungen, die oberen Leitungen (A15..) 
können auf beliebigem stabilen Pegel liegen.

von Thomas Z. (usbman)


Lesenswert?

Klaus L. schrieb:
> dort ist auch ein Bild und der vorläufige KiCad Plan zu finden.
> Im Moment nocht mit einem Fehler: OE# und CE# sind vertauscht

Das hilft uns hier natürlich ungemein. Normalerweise würde ich hier 
immer 74HC139 vorschlagen. Ich werde mich jedenfalls nirgendwo anmelden 
um einen Schaltplan zu sehen

Sowas ähnliches hatten wir hie schon vor nicht allzu langer Zeit.

Beitrag "Re: 28C256 programmieren"

Entspricht nicht ganz deinem Problem ist aber ähnlich

: Bearbeitet durch User
von Klaus L. (klaly)


Angehängte Dateien:

Lesenswert?

@Thomas Z.,
nein, Niemand soll sich irgendwo anmelden müssen um einen Schaltplan zu 
sehen. Ich dachte, in dem VzEkC Forum könnte jeder sowas sehen, sorry.

Den Plan habe ich mittlerweile korrigiert und hier mit diesem post als 
PNG hochgeladen, Ich hoffe es hat geklappt.

Das OE# wird jetzt im GAL invertiert, mal schaun ob das dann so geht.
GAL-Gleichungen sind im Moment nur für das RAM und EPROM funktional.

Vielen Dank für euere schnelle hilfreiche Reaktion.

mfG. Klaus Loy

von Thomas Z. (usbman)


Lesenswert?

Ich würde ev /WE vom Flash auch auf das GAL legen. Allerdings ist die 
Dekodierung so simpel, dass ich gar kein GAL benutzen würde.
Ja ich weiss die waren sehr beliebt und das ganze ist auch max. flexibel 
nur ist halt der Stromverbrauch gewaltig und die Dinger waren schon 
immer etwas empfindlich gegen ESD.
Wo bekommst du heute noch 16V8 her?

von Harald K. (kirnbichler)


Lesenswert?

Klaus L. schrieb:
> um einen Schaltplan zu sehen.

Das ist kein Schaltplan.

Ein Schaltplan zeigt miteinander verbundene Bauelemente. Und das ist 
hier einfach, da man funktionial gruppierbare Signale in einem Bus 
zusammenfassen kann, so daß nicht Unmengen einzelner Leitungen über den 
Plan geführt werden müssen, sondern letztlich nur Adress- und Datenbus, 
und der Rest des Platzes für Steuerleitungen übrig bleibt.

Es macht echt überhaupt keinen Spaß, zusammenpassende Label zu suchen.

Und wenn dann auch noch der Plan so klein ist, daß man die Schrift kaum 
lesen kann, dann kommt noch weniger Freude auf.

von Dieter W. (dds5)


Lesenswert?

Thomas Z. schrieb:
> Wo bekommst du heute noch 16V8 her?

Bei vielen Distris.
Atmel ATF16V8 werden immer noch hergestellt.

von Klaus L. (klaly)


Angehängte Dateien:

Lesenswert?

Hallo Leute,
jetzt muss ich nochmal nerven.

Ein Forumskollege vom VzEkC meinte, den OE# meines EPROMs auf GND zu 
legen wäre auch keine gute Idee. Weil, wenn versehentlich oder 
absichtlich vom Prozessor auf die Adresse des EPROMs schreibt, dann gibt 
es einen Buskonflikt, EPROM wird selektiert, OE# ist ist aktiv und es 
treibt.

Also wäre es vermutlich besser, alle OE# Signale auf den inversen R/W# 
zu legen, auch beim RAM. Was meint Ihr ?

mfG. Klaus Loy

von Peter D. (peda)


Lesenswert?

Dieter W. schrieb:
> Atmel ATF16V8 werden immer noch hergestellt.

Achten muß man aber darauf, daß die im Standby bis zu 100mA 
verschlingen. Der BQL-Typ geht bis 15mA runter. Der alte PALCE16V8Z 
schaffte sogar 15µA.

von Harald K. (kirnbichler)


Lesenswert?

Klaus L. schrieb:
> Also wäre es vermutlich besser, alle OE# Signale auf den inversen R/W#
> zu legen, auch beim RAM.

Der einzige Grund, so etwas nicht zu machen, kann sehr behäbiges Timing 
der beteiligten Bausteine sein, aber der behäbigste in Deiner Runde ist 
die CPU mit gerade mal einem oder vielleicht zwei MHz Takt (dann wäre es 
ein 68b02).

Dein Schaltplansymbol für das Flash-ROM ist interessant; das Datenblatt 
des SST39SF040 
(https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/SST39SF010A-SST39SF020A-SST39SF040-Data-Sheet-DS20005022.pdf) 
kennt keinen "PGM" genannten Pin. Pin 31 heißt dort WE#.

Das Flashrom scheint an zwei separierten Adressbussen zu hängen (BA0..10 
und FA11..18); Du musst bei Schreibzugriffen die im Datenblatt auf S. 8, 
Tabelle 4-2 beschriebenen Verhältnisse herstellen können, d.h. dafür 
sorgen, daß Du gezielt bestimmte Bitmuster an den Adressleitungen A0..14 
anlegst (0x5555 und 0x2AAA); offensichtlich hast Du da irgendeine 
Bankswitchlogik dazwischen, die FA11..18 liefert.

von Thomas Z. (usbman)


Lesenswert?

Harald K. schrieb:
> Dein Schaltplansymbol für das Flash-ROM ist interessant;

nicht nur das Flashrom, das Eprom hat einen WR Anschluss...

> Das Flashrom scheint an zwei separierten Adressbussen zu hängen (BA0..10
> und FA11..18);

hat er ja geschrieben. Die höheren Adressen liegen auf einem Page Latch. 
Das macht Sequenzen zum programmieren halt etwas komplizierter. Er kann 
immer nur 2kB in den Adressraum einblenden.

von Klaus L. (klaly)


Lesenswert?

Danke für euere Beiträge,
ich werde da wohl noch ein bisschen experimentieren müssen.
Was die Symbole angeht,
das EPROM Symbol, glaube ich, habe selbst gemacht.
Das für den Flash kommt aus der KiCad Lib.

Ja, das Flash hat zwei Adresssignal Quellen:
A0...A10 vom Prozessor Bus,
A11...A23 von dem Page Latch.

Das alles ist ja Vintage Spielerei.
Man bastelt ja sonst nichts :-)

mfG. Klaus Loy

von Rainer W. (rawi)


Lesenswert?

Klaus L. schrieb:
> Den Plan habe ich mittlerweile korrigiert und hier mit diesem post als
> PNG hochgeladen, Ich hoffe es hat geklappt.

Dieses Stückwerk nennst du "Plan"?
Sorry - seit der Erfindung von Bus-Strukturen kann man übersichtlich 
einzeichnen, welche  Signalgruppe wo hin geht.

Wenn du z.B. im das Datenblatt deines Prozessors guckst, findest du dort 
gleich auf S. 2 so Dinge, wie einen Datenbus ("D0-D7") oder einen 
Adressbus ("A0-A15"). Und auch die Leitungen vom Control-Bus kann man so 
zusammenfassen. Nicht ohne Grund werden Busstrukturen auch in modernen 
eCAD-Programmen unterstützt.

von Klaus L. (klaly)


Lesenswert?

jeder kann doch seinen PLAN machen wie er will.

von Rainer W. (rawi)


Lesenswert?

Klaus L. schrieb:
> jeder kann doch seinen PLAN machen wie er will.

Natürlich - aber falls er Hilfe haben möchte, tut er gut daran, einen 
möglichst leicht lesbaren Plan zu zeigen, sonst schränkt er die Zahl der 
möglichen Helfer unnötig ein.

von Klaus L. (klaly)


Lesenswert?

Rainer,
ich muss dir mit den Bus Linen, die man in KiCad auch machen kann recht 
geben. Früher hatte ich das auch gerne gemacht. Aber aus funktionaler 
Sicht sind diese Linien überflüssig.

OK, bei meinem "Plan" / Schematic gibt es mehrere Buse:
1. Prozessor Seite Datenbus, Adressbus und Steuerleitungen
2. Dann nach den Treiberchips wieder Daten- und Adressbus
   und wieder Steuerleitungen.
3. Verwirrend kommt noch dazu, dass bei EPROM und Flash nocht Teile der
   Adressen, bzw. Adressbus auch noch auf Schalter oder einen Latch
   gegehen.

Den "Schaltplan", in der leider unübersichtlichen "Buslosen" Ansicht, 
habe ich hier rein gestellt, dass die Leute mein Anliegen im Prinzip 
verstehen können. Die ganze Schaltung zu verstehen war zunächst mal 
nicht angedacht.

Auch bei uns hier in der Firmware zeichnen unsere Hardware Leute keine 
Busse, sondern die kleben nur ihre Symbole an die entsprechenden 
Signalleitungen dran.

Was evtl. schön wäre, wär eine art Blockdiagramm, als Blatt 1, wo die 
Chips und Verbinder sind, z.B. Rückwandbusstecker, Bustreiber, RAM, 
EPROM, Flash, Adr-Latch. Und diese Komponenten wären auf dieser 
Übersicht nur mit solchen Bus Linien verbunden, ohne auf die einzelnen 
Signale einzugehen.

Mein KiCad "Plan" ist entstanden, weil ich eben mal "schnell" in China 
so ein board bestellen wollte. Nun ist eine Woche rum und es ist noch 
immer nicht bestellt. Mal schaun.

Wenn das Board funktioniert werde ich das KiCad Projekt auf Github hoch 
laden, frei zugänglich für everyone, aber wer braucht schon eine 
Speicererweiterung für einenb 45 Jahre alten Eurocom 1 Computer.

mfG. Klaus Loy

von Harald K. (kirnbichler)


Lesenswert?

Klaus L. schrieb:
> Aber aus funktionaler
> Sicht sind diese Linien überflüssig.

Aber nicht, wenn es darum geht, daß sich Menschen den Plan ansehen. Und 
der Plan ist in erster Linie dafür da, daß ihn sich Menschen ansehen, 
und erst in zweiter Linie dafür, daß daraus eine Netzliste generiert 
wird.

von Klaus L. (klaly)


Lesenswert?

Hallo Harald,
entschuldige, wenn ich dir minimal widerspreche.

Du hast absolut recht damit, ein Plan / Schaltplan sollte so aufgebaut 
sein, ein Blick und alles ist klar. Genau diese Funktion erfüllt mein 
Plan nicht, diese Kritik nehme ich an.

Aber letztes Wochenende habe ich diesen KiCad Schematik dafür entworfen, 
dass KiCad eine Netzliste hat, die mit Rulcheck überprüfbar ist und die 
sich als Layout abbilden lässt. Beides ging und das meinte ich mit 
funktional.

OK um die Schaltung mit Menschen zu diskutieren, wäre bessere 
Übersichtlichkeit sicher angebracht.

mfG. Klaus Loy

Beitrag #7859831 wurde vom Autor gelöscht.
von Thomas Z. (usbman)


Lesenswert?

Deine Gleichungen im Plan sind falsch. Alle CS Signale sind Low aktiv

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
Noch kein Account? Hier anmelden.