Hardware > Hardware (Classic 16-/32-Bit)

VME Bus Zugriffe

(1/8) > >>

guest522:
Hallo,

ich versuch gerade den Nova VME Adapter zu verstehen und habe da ein Problem. Eigentlich versteh ich nicht, warum die Nova überhaupt funktioniert.

8bit ISA I/O Zugriffe erwarten die Daten auf D7-D0. Diese sind bei der Nova wegen Little Endian/Big Endian mit D15-D8 verbunden.
Wenn nun ein Byte-Zugrifff auf eine gerade Adresse erfolgt, so müßte DS0 = 1 und DS1 = 0 sein. DS1 ist mit ISA A0 verbunden und greift somit auf eine gerade Adresse zu. Der ATARI erwartet die Daten in D8-D15 die ja mit ISA D0-D7 verbunden sind. Das sieht also gut aus.

Wenn aber ein Byte-Zugrifff auf eine ungerade Adresse erfolgt, so müßte DS0 = 0 und DS1 = 1 sein. DS1 ist mit ISA A0 verbunden und greift somit auf eine ungerade Adresse zu. Der ATARI erwartet die Daten aber nun in D0-D7 die ja mit ISA D8-D15 verbunden sind. Der ISA 8 bit I/O erfolgt aber immer auf D0-D7.

Die geraden Adressen kan ich auch beschreiben und lesen. Die ungeraden verhalten sich aber sehr merkwürdig. Ich kann sie offensichtlich beschreiben, sonst würde die Nova nicht funktionieren. Beim Lesen erhalte ich aber immer 0xFF zurück.

Ich habe nur eine Erklärung. Wenn am VME ein 8 bit Schreibzugriff gemacht wird, wird das Byte D0-D7 auch in D8-D15 angelegt.

Kann das jemand bestätigen oder hat eine bessere Erklärung?  Das raubt mir den Schlaf!!!!










 

frank.lukas:
Hallo Idek,

ich kann da nichts zu sagen aber lies mal die SMC_TT Dokumente sowie die Quellen der MiNT VME Bus Netzwerkkarten ...


Ethernet fÅr TT


Zugriffe
Wie in der Schaltung zu sehen ist, wurden die Daten und Adressleitungen der beiden Bussysteme
einfach miteinander verbunden.
Im Schaltplan sind die Pull Up WiderstÑnde von 1.2kOhm von alle Adressen und
Datenleitungen, sowie der MEM und IO Leitungen nicht eingezeichnet. Diese mÅssen ganz
dicht an den ISA Pins angeschlossen werden.
Zwei GAL's sorgen fÅr eine Anpassung des Timings von Zugriffen des VME Busses auf den ISA
Bus. Dabei werden drei Arten von Zugriffen unterschieden:

1.   16 Bit Memoryzugriff. Hier erfolgt ein wortweiser Zugriff vom VME Bus auf high und low Byte
gleichzeitig. Auch die LAN Karte beherrscht diesen Zugriff. Dabei muû die Leitung /SBHE
aktiviert werden, wÑhrend der Lese/Schreibzugriff erfolgt. Der Zugriff erfolg auf den Adressen
$FE000000 bis $FE100000. Wichtig: Da der PC ein little Endian Maschine ist, mÅssen die
Datenleitungen des low und high Byte vertauscht werden!!.

2.    8 Bit IO Zugriff gerade Adressen. Dieser Zugriff greift auf die geraden Adressen der ISA Karte
zu. Diese Adressen werden beim ISA Bus Åber D0-D7 Åbertragen. /SBHE wird hier nicht
aktiviert, da der Transfer nur Åber den PC Slot lÑuft. A0 ist hier 0

3.   8 Bit IO Zugriff ungerade Adressen. Hier soll auf die ungeraden Adressen der ISA Karte
zugegriffen werden. Diese werden bei dieser aber auch Åber D0-D7 transferiert. Der 68000
erwartet diese aber auf seinen D0-D7 die mit D8-D15 des ISA Bus verbunden sind. Um hier
keinen Bustreiber verwenden zu mÅssen, wurde dieser Zugriff ebenfalls auf eine gerade
68000er Adresse gelegt. Nur die Leitung A0 erhÑlt hier einen anderen Wert. Dieser wird aus
A20 des VME Bus abgeleitet. Somit zerfÑllt der IO Adressbereich in zwei getrennte Bereiche
fÅr gerade und ungerade Bytes.

Timing
Das VME Timing ist grundsÑtzlich asynchron, und lÑût sich somit recht einfach an das andere
Timing anpassen. Dabei wird der VME Buszyklus solange verlÑngert, bis die Karte die Daten
bereitsgestellt bzw abgeholt hat. Dieser Vorgang wird Åber die Verzîgerung von /DTACK mit Hilfe
des Schieberegisters IC1 (74164) durchgefÅhrt. Das Schieberegister wird mit jedem Zyklus (/DS
und /AS werden aktiviert) Åber /T_ST freigegeben, und schiebt dann eine 1 hindurch. Diese
erscheint dann jeweils nach einem Clock Impuls einen Ausgang weiter. Nach 4 Impulsen erreicht
sie schlieûlich den Ausgang Q3. dadurch wird DTACK aktiviert, falls die PC Karte nicht mit /RDY
noch etwas Zeit fordert. Der gesamte Vorgang dauert ca. 280ns, wodurch eine Transferrate von ca
6 MB/s erreicht werden kann. Hier zeigt sich, daû die SMC Karte anderen Karten weit Åberlegen ist.
Bei einem Blick in die GAL Gleichungen ist festzustellen, daû die MEM und IO Leitungen des ISA
Bus erst bei T1 aktiviert werden. Das ist notwendig, damit die Adressen lange genug vor dem
Kartenzugriff stabil sind. Hier ist das PC Timing sehr kritisch und vor allem Åberhaupt nicht logisch!
ursprÅnglich hatte ich noch ein BALE Signal aus T1 erzeugt, es hat sich aber gezeigt, daû das
Åberhaupt nicht notwendig ist.

Interrupts
Eine LAN Karte ohne Interrupt ist praktisch wertlos, daher wurde eine eigene Interruptlogik
installiert, die einen Vektorinterrupt auf dem VME Bus auslîst. Das ist notwendig, weil der VME Bus
keinen Autointerrupt unterstÅtzt. Der Vektorgenerator ist hier IC2 (74LS245) dessen EingÑnge fest
auf den Vektor $AA verdrahtet sind. Hier kann auch ein beliebiger anderer freier Vektor gewÑhlt
werden. Auf meinem Prototypen ist hier ein Schalterarray angeordnet.
Die Logik, die zu Erkennung und BestÑtigung eines Interruptes notwendig ist befindet sich im Gal
VME_PC17. Dieses GAL benîtigt die Adressen A1-A3, da die CPU hierÅber bekanntgibt welcher
Interruptlevel bestÑtigt werden soll. Das Interface verwendet Interruptlevel 4.
Aus Faulheit wurde die Interruptkette (IACKIN/IACKOUT) nicht implementiert. Daher darf keine
andere VME Buskarte den Interrupt 4 verwenden.
Die Interruptquelle ist der Interrupt 3 (IRQ3) der ISA Karte. Diese Leitung ist high aktiv, und benîtigt
daher einen pull-down Widerstand!

GAL VME_PC16
*IDENTIFICATION
VME_PC;

*TYPE
GAL20V8;

*PINS
/AS = 23,
/WR = 2,
/DS0 = 3,
/DS1 = 4,
A21 = 5,
A22 = 6,
A23 = 7, T1 = 8,
T2 = 9,
/WAIT = 10,
A20 = 11,

/DTACK.T = 15,
T_START.T = 18,
/SBHE.T = 17,
A0.T = 16,
/MWR.T = 22,
/MRD.T = 21,
/IOW.T = 20,
/IOR.T = 19;

*BOOLEAN-EQUATIONS
DTACK = /A22 & /A23 & (DS1 + DS0) & AS & T2 & /WAIT;
T_START = /A22 & /A23 & AS & (DS0 + DS1);
IOW = A21 & /A22 & /A23 & AS & DS1 & WR & T1;
IOR = A21 & /A22 & /A23 & AS & DS1 & /WR & T1;
MWR = /A21 & /A22 & /A23 & AS & (DS0 + DS1) & WR & T1;
MRD = /A21 & /A22 & /A23 & AS & (DS0 + DS1) & /WR & T1;
SBHE = /A21 & /A22 & /A23 & AS & (DS0 & DS1 + DS0 & /DS1);
A0 =  /A21 & /A22 & /A23 & AS & /DS1 & DS0  + A21 & /A22 & /A23 & AS & A20;

*END

GAL VME_PC17
*IDENTIFICATION
VME_PC1;

*TYPE
GAL16V8;

*PINS
/RESET = 1,

/DS0 = 7,
/IACK = 8,
A1 = 4,
A2 = 5,
A3 = 6,
IRQ3_PC = 9,

/DTACK.T = 12,
/VEKTOR.T = 14,
/IRQ4.T = 13,

RESET_PC.T = 19;

*BOOLEAN-EQUATIONS

DTACK = /A1 & /A2 & A3 & DS0 & IACK;
VEKTOR = /A1 & /A2 & A3 & DS0 & IACK;
IRQ4 = IRQ3_PC;

RESET_PC = RESET;
*END

frank.lukas:
Diverse Dokumente über den VME Bus findet man wenn
man unter   http://www.datasheetarchive.com/
bei der Suche "VME", "Motorola" etc eingibt.
Nicht bei den angezeigten PDF Links schauen sondern die Liste
am Ende der Webseite weiter unten durchgehen. Bei FreeScale
findet sich auch das ein oder andere Dokument ... .

http://www.interfacebus.com/Design_Connector_VME.html


grüße

  Frank

guest522:
Das SMC_TT Projekt habe ich schon studiert. Aber da wird das anders gelöst. Die A0 Zugriffe werden in einen anderen geraden Speicherbereich geblendet. Das macht die Nova imho nicht, da A0 fest mit DS1 verbunden ist.

frank.lukas:
Hallo Idek,

vielleicht habe ich auch beim Erstellen des Schaltplanes einen Fehler gemacht. Ansonsten denke ich mir das DS0 und DS1 ...


--- / Als Tri-State werden digitale Schaltungselemente bezeichnet, deren Ausgänge nicht wie üblich nur zwei (0 und 1), sondern zusätzlich noch einen dritten Zustand annehmen können, der mit „Z“ oder auch mit „high impedance“ (hochohmig) bezeichnet wird.
Durch Tri-States ist es möglich, die Ausgänge mehrerer Bauelemente zusammenzuschalten, ohne dass es zu Kurzschlüssen, einer Überlagerung oder einer wired-and-Verknüpfung kommt, z. B. bei Datenbussen. / ---

... Tristate Eingänge am VME Bus sind und man dazu das Gal in seine Überlegung mit einbeziehen muss ...



Ich würde auch vorschlagen am eigenen Nova Adapter mal den Schaltplan mit einem Ohmmeter zu prüfen.

grüße

  Frank

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln