
Ethernet fr TT
Die hier vorgestellte Lsung einer LAN Karte fr den TT basiert auf der PC ISA Karte SMC ELITE 
ULTRA von SMC (siehe Abbildung). Diese Karte zeichnet sich durch hervorragende Performance 
und ein gut geeignetes Bus Interface aus. Diese Karte ist zwar teurer (ca 160,-) als eine NE2000 
kompatible Karte, was aber durch die obigen Vorteile eindeutig wett gemacht wird.
Das Interface kann auch fr andere Karten verwendet werden, wobei aber zu Beachten ist, da nur 
wenige der mglichen ISA Buszyklen untersttzt werden.
Bei der Entwicklung der Schaltung stand der geringe Aufwand im Vordergrund. Um das zu 
erreichen waren einige Kompromisse notwendig, die aber der Performance nicht im geringsten 
abtrglich sind!

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 Widerstnde von 1.2kOhm von alle Adressen und 
Datenleitungen, sowie der MEM und IO Leitungen nicht eingezeichnet. Diese mssen ganz 
dicht an den ISA Pins angeschlossen werden.
Zwei GAL's sorgen fr 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, whrend der Lese/Schreibzugriff erfolgt. Der Zugriff erfolg auf den Adressen 
$FE000000 bis $FE100000. Wichtig: Da der PC ein little Endian Maschine ist, mssen 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 luft. 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 mssen, wurde dieser Zugriff ebenfalls auf eine gerade 
68000er Adresse gelegt. Nur die Leitung A0 erhlt hier einen anderen Wert. Dieser wird aus 
A20 des VME Bus abgeleitet. Somit zerfllt der IO Adressbereich in zwei getrennte Bereiche 
fr gerade und ungerade Bytes.

Timing
Das VME Timing ist grundstzlich asynchron, und lt sich somit recht einfach an das andere 
Timing anpassen. Dabei wird der VME Buszyklus solange verlngert, bis die Karte die Daten 
bereitsgestellt bzw abgeholt hat. Dieser Vorgang wird ber die Verzgerung von /DTACK mit Hilfe 
des Schieberegisters IC1 (74164) durchgefhrt. 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 schlielich 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! 
ursprnglich 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 auslst. Das ist notwendig, weil der VME Bus 
keinen Autointerrupt untersttzt. Der Vektorgenerator ist hier IC2 (74LS245) dessen Eingnge fest 
auf den Vektor $AA verdrahtet sind. Hier kann auch ein beliebiger anderer freier Vektor gewhlt 
werden. Auf meinem Prototypen ist hier ein Schalterarray angeordnet.
Die Logik, die zu Erkennung und Besttigung eines Interruptes notwendig ist befindet sich im Gal 
VME_PC17. Dieses GAL bentigt die Adressen A1-A3, da die CPU hierber bekanntgibt welcher 
Interruptlevel besttigt 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 bentigt 
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

Stckliste
IC1	74LS164
IC2	74LS245
VME_PC16	GAL 20V8
VME_PC17	GAL 16V8
R1	1k
R2	1k
D1-D3	1N4181
RN1-5	Widerstandsarrays 8*1.2k (nicht eingezeichnet, siehe Text)
Cx	100nF Blockkondensatoren an jedem IC und am PC Slot (mglichst mehrfach!)

AUFBAU
Der Aufbau der Schaltung ist vor allem eine mechanische Herausforderung. Beim Aufbau ist darauf 
zu Achten, da alle Adress und Datenleitungen mit den angegebenen Pull-up Widerstnden 
versehen werden. Wird das nicht gemacht, kommt es zu Lese und Schreibfehlern beim Zugriff auf 
die Karte, die sehr unschne Systemabstrze zur Folge haben knnen.
Ich habe die Schaltung auf einer Europa-Experimentierplatine aufgebaut. Der PC Slot ist mit ca 
20cm fliegenden Leitungen angeschlossen. Da mein TT im Tower wohnt kann ich keine Aussagen 
zum Originalgehuse treffen.
Falls der VME Slot schon mit einer Grafikkarte belegt ist, mu man sich etwas einfallen lassen, um 
einen weiteren VME Slot zu erhalten. Dazu mu der neue Slot einfach mit dem bestehenden 
parallel geschaltet werden. Das Interface bentigt eigentlich nur eine 64-polige Verbindung (a und 
c Reihe), da die mittlere Pinreihe des VME-Bus (fast) nicht bentigt wird. Die IRQ-4 Leitung ist die 
einzige, die auf der mittleren Pinreihe liegt!
Falls es zu Adresskonflikten mit einer anderen VME Karte kommen sollte mu das GAL VME_PC16 
umprogrammiert werden (Auswertung von A22 und A23).

Konfigurieren der Karte
Die Karte beitzt zum Glck nur einen einzigen Jumper, der in die Stellung "280 3 D000 NONE" 
gebracht wird. Fr die Tests mit der Software sollte mindestens ein T Stck mit 2 
Abschluwiderstnden auf den BNC Connector gesteckt werden. Die Karte besitzt eine LED, die 
die Netzaktivitt anzeigt.

Test der Hardware
Bein Einschalten, sowie bei einem Reset (CTRL-ALT-DEL gengt) mu die Akivitts LED auf der 
Karte aufleuchten und nach einigen Sekunden wieder erlschen. Damit ist der Reset schon in 
Ordnung.
Bevor der Treiber installiert wird kann die Hardware grob geprft werden. Dazu wird ein Debugger 
bzw Monitor bentigt (z.B. PD, der Pure C Debugger). Mit diesem Monitor wird die Adresse 
$FE200280 beobachtet. Hier sollte jedes 2. Byte != $FF sein. Ab $FE2002A0 sollten wieder alle 
Bytes $FF sein, wie auch vor der obigen Adresse. Dieses Verhalten mu auch an Adresse 
$FE300280 feststellbar sein, wobei hier aber andere Werte stehen mssen. Durch wechselseitiges 
zusammensetzen der Bytes mu die auf der Karte aufgedruckte Ethernetadresse erkennbar 
werden. War das erfolgreich, kann der Treiber installiert werden.

Software
Die Software besteht aus einem Treiber fr das ANS (Atari Network System). Dieser Treiber stellt 
einfache Funktionen zum lesen und schreiben von Datenpaketen zur Verfgung. Die Einbindung 
erfolgt ber ein Cookie.
Der Treiber wurde bei mir mit dem TUW TCP/IP Stack sowie Telnet und FTP getestet. Als 
Gegenstelle dient mir ein LINUX PC. Auf dem TT wird bei mir MAG!C eingesetzt, Plain TOS sollte 
genauso gehen. Mit MinT wird's wahrscheinlich nicht funktionieren (hab's aber nicht getestet).

Damit jeder sehen kann, wie die Karte angesteuert wird, sind dem Paket die Sourcen des Treibers 
beigelegt. Mit PURE-C sollte das bersetzen kein Problem sein. In dem File WD_TOOLS.C kann 
die Initialisierung und der Test der Karte eingesehen werden, falls der Vorgang zu Testzwecken 
manuell durchgefhrt werden mu.

Hinweise
Alle Angaben dieses Paketes sind ohne Gewhr. Fr durch den Betrieb oder Aufbau der Scahltung 
oder der Software entstehende Schden kann ich keine Haftung bernehmen. Der Betrieb ist auf 
eigene Gefahr und Risiko.
Die Weitergabe und Verwendung dieses Dokumentes und der zugehrigen Software ist frei.
Falls jemand die Schaltung erfolgreich aufgebaut hat oder falls noch Fragen bestehen, stehe ich 
gerne fr weitere Fragen zur Verfgung. Ich setzte jedoch voraus, da der Erbauer dieses 
Interfaces etwas Erfahrung im Umgang mit dem Oszilloskop hat, denn ansonsten ist eine 
Ferndiagnose vollkommen sinnlos. Falls jemand Fehler findet, bitte ich ebenfalls um Nachricht, 
damit ich diese in dem Paket korrigieren kann.
Es wird von mir jedoch keine Platine oder fertig gebrannte GAL's geben, da ich nicht in der 
Lage bin, diese zu vertreiben. Falls jemand eine Platine dafr erstellt hat, bitte ich um Nachricht, 
denn ich htte gerne auch eine :-) )

Pinbelegungen
Das Platinenprogramm nummeriert die Pins eines Steckers fortlaufend durch. Somit ergebn sich 
folgende Zuordungen:

VME Bus:	Pin a1-a32	1-32
	Pin b1-b32	33-64
	Pin c1-c32	65-96

PC Bus:	Pin A1-A31	32-62
	Pin B1-B31	1-31

	Pin C1-C18	19-36
	Pin D1-D18	1-18

Adressen
Sackpost:	Ulrich Rhr
	Gustav Adolf Str. 13
	63452 Hanau

Maus:	Ulrich Roehr @ F

Internet:	ulrich_roehr@f.maus.de
ANHANG PC Bus Signalbeschreibung























AEN	A11	0	This output signal when inactive (low) indicates that the CPU or controller board bus master 
has control of the bus. When active, the DMA controller has control of the bus. It is often used 
to disable devices which must not respond during a DMA cycle. 
BALE	B28	0	This output signal (when high) indicates that a valid address is present on the LA<23..I7> 
address lines. The LA<23. .I7> address lines or any decodes developed from them should be 
latched at the falling edge of BALE. This line is high when a 0MA or bus master operation is 
occurring.
BCLK	B20	0	This output signal is provided to allow synchronization to the main processor clock. Its 
freguency will be either 8 MHz or 8 MHz with a duty cycle of 50%.
BUSR0Y	A10	I	This input signal is used to lengthen a bus cycle from its standard time if a controller board 
cannot respond guickly enough. It should be pulled low by an open collector type device as 
soon as a slow addressed device is selected and held low until the device has responded. 
Bus cycles are lengthened by an integral number of (BCLK) cycles. This line should not be 
held low for more than 2.5 us. This line should be driven by an oPen-collector device capable 
of sinking 20 mA. ..

DAK0- 	D08	0
DAK1-	B17	0
DAK2-	B26	0
DAK3-	B15	0
DAK5-	B10	0
DAK6-	D12	0
DAK7-	D14	0	These output lines (DMA Acknowledge) indicate that a reguest for a 0MA service from the 
DMA subsystem has been recognized. The acknowledge is indicated by a L0W on this line. 
Use this line with the l0RC- or I0WC- line to decode the desired 0MA device. If used to signal 
acceptance of a bus-master reguest, this signal indicates when it is legal to pull GRAB- low.

DRQ0	D09	l
DRQ1	B18	l
DRQ2	B06	I
DRQ3	B16	I
0RQ5	D11	I
0RQ6	D13	I
DR07	D15	l	These input lines are used to request a DMA service from the DMA subsystem or to gain 
control of the system bus from the main CPU (DMA request). The request is made when the 
Iine goes from a low to a high and must remain high until the appropriate DAK<7. .5>, <3. 
.0> line goes active.

GRAB-	D17	l	This input signal is used to indicate that a controlIer board bus master is controlling the bus. A 
controlIer board can puIl this line Iow when the appropriate DAK line is made active, signalIing 
that a master request is granted. The system address, data and controI lines wiII be floated, 
allowing the controller board to begin controlling them one full DCLK period after GRAB is 
made active. At Ieast one more fulI BCLK period should be allowed after putting a vaIid 
address on the bus before activating any of the controI lines. This line should be driven by an 
open-collector device capabIe of sinking 20 mA.

GROUND	B01	-
	B10	-
	B31	-
	D18	-	These lines are connected to the system ac and dc ground. The maximum current allowed on 
any singIe contact is I.5 A.

IOCHK-	A01	I	This input signal is used to signaI the CPU about Parity or other serious errors on controller 
boards. This signal should be driven low by an open colIector type output capabIe of sinking 
20 mA when an uncorrectabIe system error occurs.
lORC-	B14	l/0	This output Iine (l/O read) indicates (when low) when an I/0 device is to send data to the data 
bus. lt can be driven bv a controller board acting as a bus master.
I0WC-	B13	I/0	This output Iine (I/0 write) indicates (when low) when an I/0 device is to accept the data from 
the data bus. It can be driven bv a controlIer board acting as a bus master.
l016-	D02	I	This input line (I/0 is l6 bits) signaIs the system that the addressed I/0 device is capable of 
transferring l6 bits of data at once. When this line is made active, during an l/0 read or write, 
the standard one wait state I/0 cycle wiIl be run. This line should be driven low by an 
open-colIector device canabIe of sinking 20 mA.
IRQ3	B25	I
lRQ4	B24	l
IRQ5	B23	l
IRQ6	B22	I
IRQ7	B21	I
IRQ9	B04	I
IRQ10	D03	I
IRQ11	D04	I
lRQ12	D05	l
lR014	D07	l
IRQ15	D06	l	These input lines are used to interrupt the CPU to request some service. The interrupt is 
recognized when the line goes from a low to a high and remains there until the appropriate 
interrupt service routine is executed.
LA17	C08	I/O
LA18	C07	I/O
LA19	C06	l/O
LA2D	CD5	I/O
LA21	CD4	I/O
LA22	C03	I/O
LA23	C02	I/O	These output signals (LatchabIe Address) are used to decode memory which must respond 
with zero or one wait state. They are only guaranteed to be valid when BALE is high. These 
can be driven by a controller board acting as a bus master.
MRDC-	C09	I/O	This output line (Memory Read) indicates (when Iow) when a memory device is to send data 
to the data bus. This signaI is active over the entire address space of the system. It can be 
driven by a controIler board acting as a bus master.
MWTC-	C10	I/O	This output line (Memory Write) indicates (when low) when a memory device is to accept the 
data from the data bus. This signal is active over the entire address space of the system. It can 
be driven bv a controIler board acting as a bus master.
MI6-	D01	I	This input Iine (memory is l6 bits) signais the system that the addressed memory is capabIe of 
transferring I6 bits of data at once. When this line is made active, during a memory read or 
write, the standard one wait state memory cycle wilI be run. This line shouId be derived from 
the LA<23. .I7> address Iines. This line shouId be driven low by an open collector device 
capabIe cf sinking 20 mA.
N0WS-	B08	I	This input Iine (No Wait State) is used to inform the system that standard wait states can be 
deleted for cycIes when this line is made active. The line must be pulled low 45 ns before the 
falling edge of BCLK in order to be recognized. This Iine shouId be driven by an cpen 
collector device capabIe of sinking 20 mA.
O5C	B30	O	This output signai is a cIock for use in video color burst and other general timing applications. 
Its frequencv is I4.3I8I8 MHz and duty cycle is approximateIy 50%.
REFRESH-	B19	I/O	This output signal is used to indicate (when Iow) a refresh cycle in progress. It shouid be used 
to enabIe the SA<7. .0> address lines to the row address inputs of aIl banks of dynamic 
memory so that when the MRDC- goes active, the entire system memory is refreshed at one 
time. It can be driven by a controIier board acting as a bus master.
RESDRV	B02	O	This output signal is used to reset the hardware during powerup or power failure.
SA0	A3I	I/O
SA1	A3D	I/O
SA2	A29	I/O
SA3	A28	I/O
5A4	A27	I/O
5A5	A26	I/O
SA6	A25	I/O
SA7	A24	I/O
SA8	A23	I/O
SA9	A22	I/O
SAI0	A21	I/O
SAlI	A20	I/O
SAl2	A19	I/O
SAl3	A18	I/O
SAl4	A17	I/O
SAl5	A16	I/O
SAI6	A15	I/O
SAI7	A14	I/O
SAl8	A13	I/O
SA19	A12	I/O	These bidirectionaI signals address memory or I/0 devices within the system. They form the 
Iow order 20 bits of the 24 bit address bits that the system offers. These lines are enabled onto 
the bus while BALE is high and are latched when BALE goes from a high to a low state. These 
can be driven by a controlIer board acting as a bus master.
SBHE-	C01	I/O	This output signal (System Bus High Enable) indicates (when Iow) that the high haIf of the SD 
data bus should transfer the data on boards which support the fuIl l6-bit data bus. It can be 
driven by a controller board actinq as a bus master.
S0D	A09	I/O
SD1	A08	I/O
SD2	A07	I/O
SD3	A06	I/O
SD4	A05	I/O
SD5	A04	I/O
SD6	A03	I/O
SD7	A02	I/O	These bidirectional signals are the low 8 bits of the system data bus. They should be used 
exclusively by all eight bit devices to transfer data. Sixteen-bit devices should use these lines 
to transfer onIy the low half of a data word when the address line A0 is low. These can be 
driven by a controIIer board acting as a bus master.
SD08	C11	I/O
SD09	C12	I/O
SD10	C13	I/O
SD11	C14	I/O
SD12	C15	I/O
SD13	C16	I/O
SD14	C17	l/O
SD15	C18	I/O	These bidirectional signals are the high 8 bits of the system data bus. Sixteen bit devices 
should use these lines to transfer the high half of a data word when the line SBHE- is low. 
These can be driven by a controller board acting as a bus master.
SMRDC-	B12	O	This output line (Standard Memory Read) is active (low) only when an address from 000000h 
to 0FFFFFh is decoded. This Iine is derived from MRDC-.
SMWTC-	B11	O	This output line (Standard Memory Write) is active (low) only when an address from 0000000h 
to 0FFFFFh is decoded. This line is derived from MWTC-.
T/C	B27	O	This output signal (when high) indicates that the Terminal Count of a DMA operation has been 
reached. It should be decoded with the appropriate DAKx line for proper operation.
+5 Vdc	B03
	B29
	D16
-5 Vdc	B05	--	This line is connected to the system power supply for minus 5 volts. This supply is intended 
for low-current usage only (500 mA) .
-I2 Vdc	B07	--	This line is connected to the system power supply for minus 12 volts. This supply is intended 
for low-current usage only (1.0 A).
+12 Vdc	B09	--	This line is connected to the system power supply for I2 voIts. In addition to the maximum 
current available from the suppIv, the maximum current aIlowed on this contact is 1.5 A.
