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!
>/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!
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
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.