Moin zusammen,
wenn ich ein 16Bit EPROM (27C4002) an einen M68000 anflanschen will,
dann kann ich doch A0 des EPROMs fest mit GND verbinden? Oder muss da
eine Logik dran, die /UDS /LDS auswertet und daraus ein A0 generiert?
Gruß, Arne
Arne S. schrieb:> A0 des EPROMs fest mit GND verbinden?
Nö dann würde ja mit den restlichen 17 Adressleitungen die Hälfte des
Speichers ungenutzt bleiben.
Gruß Anja
Arne S. schrieb:> Oder muss da> eine Logik dran, die /UDS /LDS auswertet und daraus ein A0 generiert?
Genau das brauchst du. /CS kannst du daraus auch gleich erzeugen, wenn
du es mit deinem Adressdekoder verschnurzelst.
Reicht es /UDS mit A0 des EPROMs zu verbinden oder muss da eine
kompliziertere Logik dran? Wenn ja: wie müsste die aussehen? Meine
M68000 Zeit ist leider schon ein paar (viele) Jahre her.
Speziell geht es um den ROM-Port des Atari ST. Der liegt im Bereich
$FA0000 - $FBFFFF. Von einem ASIC wird ein /ROM4 erzeugt, wenn die
Adresse im Bereich $FAxxxx liegt und ein /ROM3, wenn sie im Bereich
$FBxxxx liegt. Hieraus würde ich über ein XNOR das /G Signal des EPROMs
generieren.
Am ROM-Port liegen dann noch /LDS, /UDS, A1-A15 und D0-D15 an.
Was mir vorschwebte war folgendes: der 68000 kann ja nur auf gerade
Adressen zugreifen, sonst gibts ne Exception. Ergo A0 fest auf GND, so
dass bei einem Zugriff immer ein 16Bit Datenwort auf D0-D15 anliegt, das
von einer geraden Adresse stammt. Der 68000 weiss ja bei einem 8Bit
Zugriff welches Byte ihn interessiert (D0-D7 oder D8-D15) und wertet nur
dieses aus.
Liege ich damit verkehrt?
Gruß,Arne
Arne S. schrieb:> Liege ich damit verkehrt?
Ja. Wie Anja bereits sagte, verlierst du die Hälfte des EPROM
Speicherplatzes.
Arne S. schrieb:> Am ROM-Port liegen dann och /LDS, /UDS, A1-A15 und D0-D15 an.
Das sieht doch gut aus.
Arne S. schrieb:> Reicht es /UDS mit A0 des EPROMs zu verbinden oder muss da eine> kompliziertere Logik dran?
Das beantworten dir die Timing Diagramme im M68000 Datenblatt und evtl.
die Unterlagen des ST-Sauriers.
Arne S. schrieb:> Von einem ASIC wird ein /ROM4 erzeugt, wenn die> Adresse im Bereich $FAxxxx liegt und ein /ROM3, wenn sie im Bereich> $FBxxxx liegt. Hieraus würde ich über ein XNOR das /G Signal des EPROMs> generieren.
Wenn dein EPROM eine höhere Kapazität als 128kbyte hat, solltest du aus
den ROM /CS Signalen ein Adresssignal (A16) generieren. Zusätlich kannst
du dann auch /CS draus machen.
Ich frage auch gar nicht, warum du die Atari Grotte nochmal in Gang
setzen willst, versprochen.
Danke für die Antworten. Dann werde ich mich demnächst mal mit
Steckbrett, Oszi und Bastel-ST dem Thema nähern.
Ja, EPROM hat 256KBit x16. A16 und A17 erzeuge ich über Jumper, da immer
nur eine der vier 64KBit x16 "Partitionen" sichtbar zu sein braucht.
Hallo,
es ist alles etwas anders, der 68000 adressiert mit seinen Adressen
Bytes, das EPROM jedoch 16bit Worte. Daher verbindest du A1 MPU -> A0
EPROM, A2 MPU -> A1 EPROM usw.
LDS und UDS brauchst du in diesem Fall nicht zu einzeln zu beachten, du
kannst sie zusammenfassen zu einem DS da der 68000 bei 8bit Zugriffen
das überflüssige Byte einfach ignoriert und eben entweder auf D0..D7,
D8..D15 oder auch D0..D15 liest.
Von Bedeutung sind LDS und UDS bei Aufbau des ROMs aus 8bit Bausteinen
oder viel wichtiger, beim RAM, da hier der Speicher das überflüssige
Byte ignorieren muss bei 8bit Zugriffen. Natürlich auch bei Anschluss
von 8bit IO.
Gruß,
Christian
Matthias Sch. schrieb:>> eine Logik dran, die /UDS /LDS auswertet und daraus ein A0 generiert?>> Genau das brauchst du.
Da würde ich noch mal nachdenken. Das Prom ist 16 Bit breit, A0 .. Axx
addressiert also Worte. Ob der 68000 auch Worte mit A0 addresiert weiß
jetzt nicht, vermute aber das das Bytes sind. Wenn das so ist, müßte die
68000 A1 Leitung an A0 vom Prom, usw. Ob man bei einem Read only Memory
/UDS und /LDS braucht und damit einen Bytebreiten Buffer enablen muß,
bin ich mir nicht sicher.
MfG Klaus
Ich glaube Christian hat den Jackpot geknackt :-)
Wenn man sowas mit zwei 8Bit Eproms (27C256 etc) aufbaut, dann ist das
wie folgt:
CPU A1 -> EPROM A0
CPU A15 -> EPROM A14
/LDS geht als /OE an ein ein EPROM, /UDS geht als /OE an das andere
EPROM.
Und /ROM4 geht als /CS an beide EPROMs.
Klar... das 16Bit EPROM adressiert ja 16Bit WORTE.
Danke!
Wenn das AS-Signal im Adressdecoder für das CS-Signal bereits enthalten
ist, dann kannst du die Datastrobes ebensogut auch ignorieren. Willst du
sicher gehen, dass kein Buskonflikt auftritt wenn die CPU doch mal ins
ROM schreiben will, dann legst du das OE vom EEPROM ans invertierte
R/W-Signal.
A. K. schrieb:> Wenn das AS-Signal im Adressdecoder für das CS-Signal bereits enthalten> ist, dann kannst du die Datastrobes ebensogut auch ignorieren. Willst du> sicher gehen, dass kein Buskonflikt auftritt wenn die CPU doch mal ins> ROM schreiben will, dann legst du das OE vom EEPROM ans invertierte> R/W-Signal.
Ähmmm... weder /AS noch R/W liegen am ROM Port an. Und wenn Code in den
ROM-Port schreiben will, dann generiert das o.g. ASIC eh eine Exception
(/BERR IIRC). Von daher weiss ich nicht, was Du mir sagen willst.
Dieses ASIC hat bereits einen Adressdekoder on-board und generiert für
den ROM-Port ($FA0000-$FBFFFF) die o.g. /ROMx Signale. Oder meinst Du,
dass auf meine Schaltung noch ein Adressdekoder sollte?
Arne S. schrieb:> Ähmmm... weder /AS noch R/W liegen am ROM Port an. Und wenn Code in den> ROM-Port schreiben will, dann generiert das o.g. ASIC eh eine Exception> (/BERR IIRC). Von daher weiss ich nicht, was Du mir sagen willst.
Ich ging vom 68000 Bus aus, nicht von einer speziellen vorgekauten
Schnittstelle des Atari. Ich kenne zwar die 68000 recht gut, spreche
aber kein Bisschen Atarisch. Insofern vergiss was ich geschrieben hatte.
A. K. schrieb:> Ich ging vom 68000 Bus aus, nicht von einer speziellen vorgekauten> Schnittstelle des Atari. Ich kenne zwar die 68000 recht gut, spreche> aber kein Bisschen Atarisch. Insofern vergiss was ich geschrieben hatte.
Nein, nein... nicht falsch verstehen. Sollte kein Afront sein ;)
Der ROM Port ist der direkte (auf genannte Leitungen A1-A15, D0-D15 und
/LDS, /UDS minimierte) 68k Bus + zwei Leitungen:
/ROM4 ist low, wenn der Adressdekoder im Atari eine Adresse im Bereich
$FAxxxx erkannt hat und /ROM3 ist low, wenn die Adresse im Bereich
$FBxxxx liegt. Man kann somit zwei Bänke zu 32KBit x16 (insgesamt 128KB)
adressieren.
Die /ROMx formen somit quasi eine weitere Adressleitung.
Der ROM Port läuft auch nicht über Treiberstufen - man kann da direkt
von aussen die CPU killen :-(
Gruß, Arne
Die entscheidende Frage ist, ob in der Adressdekodierung, die im ROMx
Signal mündet, das AS-Signal bereits berücksichtig wird. Das weiss ich
nicht, das wissen nur Atari-Spezialisten. Wenn das da bereits drin ist,
dann sind die Datastrobes überflüssig. Da andererseits die Datastrobes
aber auf dem reinen Readonly-Port draufliegen, kann es sein, dass man
sie auch verwenden muss.
Also /UDS und /LDS sind wichtig, wenn man zwei (vier) 27C256 anflanschen
will, da sie direkt an die /OE Signale der EPROMs gehen. /LDS vermutlich
ans EPROM mit den ungeraden Adressen und /UDS ans EPROM mit den geraden
Adressen.
Die /ROMx Signale müssen eigentlich vom ASIC kurz nach der fallenden
Flanke von /AS erzeugt werden, da ja erst dann die Adressen gültig sind.
Mit "kurz nach" meine ich während desselben Taktes.
Aber Ihr habt mir alle schon sehr weitergeholfen. Vielen Dank!
RD und WR Leitungen waren bei EPROMs der Atari-Ära nicht eben häufig
anzutreffen. Sein 27C4002 hat sie auch nicht.
Ob man LDS/UDS überhaupt anschliessen muss weiss ich angesichts des
Atari-Krams auch nicht, mit AS und R/W im Dekoder wärs unnötig.
Andererseits stellt sich dann die Frage, wozu diese Signale überhaupt
auf dem Port liegen.
>>/LDS geht als /OE an ein ein EPROM, /UDS geht als /OE an das andere EPROM.> Falsch.> /LDS u. /UDS gelten für RD und WR!
Das ist Blödsinn!
> Andererseits stellt sich dann die Frage, wozu diese Signale überhaupt> auf dem Port liegen.
Lass Dich vom Begriff "ROM-Port" nicht verwirren. Man könnte da z.B.
auch eine Relaiskarte anschließen, bei der die Unterscheidung
HiByte/LowByte wichtig wäre. Gab von der c't ein Projekt, um einen
Handscanner anzuschließen...
>>>/LDS geht als /OE an ein ein EPROM, /UDS geht als /OE an das andere EPROM.>> Falsch.>> /LDS u. /UDS gelten für RD und WR!>Das ist Blödsinn!
Mann, du bist zu blöd ein EPROM anzuschliessen (!), und raffst nichtmal,
wenn dir einer n Tip gibt.
A. K. schrieb:> Ob man LDS/UDS überhaupt anschliessen muss weiss ich angesichts des> Atari-Krams auch nicht, mit AS und R/W im Dekoder wärs unnötig.> Andererseits stellt sich dann die Frage, wozu diese Signale überhaupt> auf dem Port liegen.
Dafür das man 8bit-ROMs benutzen kann.
Gruß,
Christian
Christian Erker schrieb:> Dafür das man 8bit-ROMs benutzen kann.
Unwiefern? Der Port hat, soweit ich erkennen kann, kein Rückmeldesignal
"ich habe nur 8 Bits" (die 68000 CPU auch nicht), also arbeitet der Port
weiterhin mit 16 Bits Breite. Und ob man den mit einen 16-Bit EPROM oder
zwei 8-Bit EPROMs implementiert ist völlig schnurz. Wenn eines der
EPROMs seine Daten ins Nirvana bläst, weil niemand zuhört, dann kostet
dass ein paar Milliampere mehr als nötig, aber das wars auch schon.
Christian Erker schrieb:> Dafür das man 8bit-ROMs benutzen kann.>> Gruß,> Christian
Nein, dafür stellt die 68k CPU ja /UDS und /LDS bereit. ( 'Upper Data
Strobe' und 'Lower DS')
R/W am ROM Port wäre widersinnig, klar.
MCUA schrieb:>>>>/LDS geht als /OE an ein ein EPROM, /UDS geht als /OE an das andere EPROM.>>> Falsch.>>> /LDS u. /UDS gelten für RD und WR!>>Das ist Blödsinn!> Mann, du bist zu blöd ein EPROM anzuschliessen (!), und raffst nichtmal,> wenn dir einer n Tip gibt.
Leute, Leute - ganz ruhig. Das MC68000 Datenblatt enthält alle Timing
Diagramme, die man braucht, um auch einen 16-bit EPROM anzudocken. Und
nicht vergessen, es ist ein Atari ST , da lohnt sichs nicht, zu
streiten. Wir haben aus unserem Übungsraum vor 6 Monaten drei von den
Dingern entsorgt, und vermissen sie ganz und gar nicht.
Matthias Sch. schrieb:> Nein, dafür stellt die 68k CPU ja /UDS und /LDS bereit. ( 'Upper Data> Strobe' und 'Lower DS')
Das ist doch grad der Punkt. Um aus Speicher zu lesen benötigt man die
Datastrobes nicht wirklich. Anders wirds wenn man schreiben will.
A. K. schrieb:> Das ist doch grad der Punkt. Um aus Speicher zu lesen benötigt man die> Datastrobes nicht wirklich.
Für das 16-bit EPROM ist das sicher richtig. Ich würde die beiden
Signale verodern, mit /RD verknüpfen und als /OE benutzen. /CS und A16
aus den /ROM3 und /ROM4 Signalen und fertig. Aber da ich jetzt keine
Lust habe, das Timing aus dem Datenblatt rauszusuchen, um dieses tote
Pferd zu schlagen, halte ich mich wieder raus.
Matthias Sch. schrieb:> Für das 16-bit EPROM ist das sicher richtig. Ich würde die beiden> Signale verodern, mit /RD verknüpfen und als /OE benutzen.
Was für ein "/RD" Signal? Die 68000 CPU hat keines und laut
http://wiki.newtosworld.de/ROM-Port hat es der ROM Port auch nicht. Du
verwechselst das nicht etwa mit der Intel Welt?
MCUA schrieb:>>/LDS geht als /OE an ein ein EPROM, /UDS geht als /OE an das andere EPROM.> Falsch.> /LDS u. /UDS gelten für RD und WR!
Große Klappe hast du ja! /UDS + /LDS haben so gar nichts mit RD + WR zu
tun. Das sind die DataStrobes. RD + WR hat kein 68k!
Mal'n Tip von mir: einfach mal die Schnauze halten, wenn man keine
Ahnung hat
@Mr.T
Bei dir fällt mir das Wort Ober-Schwachkopf ein!
> /LDS u. /UDS gelten für RD und WR!
heisst nichts weiter, als
/LDS (LowerDataStobe) u. /UDS (UpperDataStobe) gilt für RD (also für
CPU-Read) UND auch für WR (also für CPU-Write). (RD / WR wird durch
R/\W-Signal unterschieden).
Man muss also für Data -Read oder -Write die Signale R/\W und auch /LDS
u. /UDS mit auswerten. Sollte R/\W beim (ROM)-Bus fehlen muss es dafür
(für RD) ein anderes \Select-Signal geben (bsp ROMxselect).
>RD + WR hat kein 68k!
Tja, nur ein Ober-Schwachkopf behauptet, ein 68k könne weder Read noch
Write machen.
>Mal'n Tip von mir:
Du willst Tips geben?
HAHAHAHAHAHA
MCUA schrieb:> Man muss also für Data -Read oder -Write die Signale R/\W und auch /LDS> u. /UDS mit auswerten. Sollte R/\W beim (ROM)-Bus fehlen muss es dafür> (für RD) ein anderes \Select-Signal geben (bsp ROMxselect).
Da das ROM-Select Signal am Chipselect vom EPROM landet ist eine
logische Verknüpfung davon mit den Datastrobes unnötig.
MCUA schrieb:>>RD + WR hat kein 68k!> Tja, nur ein Ober-Schwachkopf behauptet, ein 68k könne weder Read noch> Write machen.
Wenn du solche völlig überflüssigen Flamewars vermeiden willst, dann
verwende bitte allgemeingültige Begriffe. Eine Verwendung spezifischer
Bezeichnungen aus der Intel-Welt provoziert unweigerlich
Missverständnisse, da niemand in deinen Kopf hineinsehen kann.
@MCUA: Man sollte sich schon audrücken können, auch wenn man es weiß ...
Allerdings ist mir Deine großspurige, trollige Art ja schon bekannt.
Es gibt noch ein Signal, welches Ihr noch nicht betrachtet habt: /DTACK
Dieses Signal signalisiert der CPU, daß die Daten nun bereit stehen und
von der CPU eingelesen werden können.
/AS, /LDS und /UDS werden vom M68K in der S2-Phase gesetzt und die
Hardware erzeugt daraus der Hardware entsprechend zeitabhängig ein
/DTACK. Ist /DTACK da, liest die CPU die Daten vom Bus.
Kommt kein /DTACK, wartet der M68K ewig. Sieht die Hardware, daß kein
/DTACK kommen kann, muß sie ein /BERR an die CPU schicken.
Gruß
Jobst
Jobst M. schrieb:> Es gibt noch ein Signal, welches Ihr noch nicht betrachtet habt: /DTACK
Weil es am ROM-Port nicht existiert. Offenbar macht das schon das ASIC
bei der Erzeugung des ROM-Select Signals.
Da habe ich nicht ganz aufgepasst ;-)
Aus ROM3+4 musst Du eine weitere Adressleitung erzeugen (um den gesamten
Bereich mit dem EPROM abzudecken) und auch das CE Signal für das EPROM
mußt Du daraus erzeugen. UDS und LDS kannst Du links liegen lassen, da
bei jedem Zugriff auf ROM3 oder ROM4 aus diesem EPROM gelesen werden
soll. Entweder das untere, das obere oder beide Bytes. Das ist bei der
Ausgabe aber egal, da die CPU nur für die angeforderten Daten
interessiert und das EPROM eben nur ganze 16-Bit liefern kann.
A1 CPU wird mit A0 EPROM verbunden - das wurde hier schon korrekt
gesagt.
A16 CPU mit A15 EPROM
A16 EPROM ist aktiv, wenn /ROM4 aktiv (=L) ist - also direkt mit /ROM3
verbinden.
CE vom EPROM ist aktiv, wenn /ROM3 oder /ROM4 aktiv ist (vermutlich
einfach ein UND)
Gruß
Jobst
>Da das ROM-Select Signal am Chipselect vom EPROM landet ist eine>logische Verknüpfung davon mit den Datastrobes unnötig.
Nur wenn dieses ((irgentwie) extern erzeugte) 'ROM-Select Signal' vom
Timing her schon genau stimmt. Sicherer ist es auf jeden Fall /LDS > u.
/UDS mit auszuwerten.
>@MCUA: Man sollte sich schon audrücken können...
Ich habe nichts falsches gesagt.
MCUA schrieb:>>Da das ROM-Select Signal am Chipselect vom EPROM landet ist eine>>logische Verknüpfung davon mit den Datastrobes unnötig.> Nur wenn dieses ((irgentwie) extern erzeugte) 'ROM-Select Signal' vom> Timing her schon genau stimmt. Sicherer ist es auf jeden Fall /LDS > u.> /UDS mit auszuwerten.
Die Adressleitungen werden vor AS, LDS und UDS gesetzt. Ich weiß auch
nicht, wie Du Dir eine weitere Auswertung vorstellst. Wenn ROM3 oder
ROM4 auf L geht, tut dies kurze Zeit später UDS und/oder LDS auch. Ein
Lesezugriff auf dem Bus ohne mindestens eine dieser Leitungen wird nicht
erfolgen. Wenn eine der beiden ROM-Leitungen auf L geht, kann man
getrost Daten auf den Bus legen.
>>@MCUA: Man sollte sich schon audrücken können...> Ich habe nichts falsches gesagt.
Stimmt. Aber es war sehr missverständlich.
Gruß
Jobst