Forum: Mikrocontroller und Digitale Elektronik NE2000 ISA Karte und CS


von Loki Daelis (Gast)


Lesenswert?

Hallo!

Ich würde gerne eine ISA NE2000 Netzwerkkarte (a la Ulrich Radig) an
den selben Bus hängen, an dem ich auch ein externes 64k Ram Betreibe
und via Cip Selects zwischen beiden hin und her wechseln.

Ist das überhaupt möglich, kann ein Isa Device TriState/OpenCollector
etc....
Was ist denn CS beim ISA Sockel, AEN?

Wie doll reisse ich die Performance von meinem System runter, wenn ich
von der Netzwerkkarte in einen internen RAM Puffer schreibe und dann
ins RAM?

Danke

von Christoph W. (christoph)


Lesenswert?

Ein ISA MUSS seinen Bus tristate schalten können. Wie sollte das sonst
in PCs funktionieren. 3 ISA Karten waren einst doch keine Seltenheit.

Ich hab so ein Ding mal so gemacht : $8000-FFFF für ein Banked RAM (128
KB). A15 ud A16 des RAMs hab ich an den AVR geschaltet. darunter hab ich
über eine Logik eine Addressleitung des "ISA" Busses angesteuert. Bei
Addressen von $4000-$7FFF wurde somit die ISA-Karte ausgewählt.

Bei ISA-Karten werden alle Addressleitungen auf (genau) einen Wert
geprüft, wobei die unteren 5 für Register-Selects rausfallen. Ist der
Wert nicht der Addresse der Karte, verbleibt sie in tristate. Einfach
die meisten Signale auf die Pegel legen und nur eine Addressleitung
entsprechend HIGh oder LOW legen, um das Gerät auszuwählen. So einfach
geht das.

Mit der Technik kannst du in einem Befehl (lds TEMP1,ADDR) von der
Karte lesen und mit dem anderen gleich ins ext. RAM schreiben (sts
$8000,TEMP1). Das ist besser, als es erst zwischenzuspeichern.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Das mit den Adressleitungen bei ISA-Karten sieht ein bisschen anders
aus, als von Christoph dargestellt.
Bei Speicherzugriffen werden Adressleitungen bis herauf zu A23
ausgewertet, bei I/O-Zugriffen jedoch höchstens bis herauf zu A15.
Richtig alte ISA-Karten (aus der Zeit des XT, auch von IBM
höchstselbst* designt) werteten oft sogar nur Adressleitungen bis
herauf zu A9 aus - was dazu führte, daß I/O-Adressen mehrfach
gespiegelt im Adressraum auftreten konnten.
Aus diesem Grunde verwenden ISA-Karten auch nur selten Adressen >
0x3ff.

Davon abgesehen ist die von Christoph vorgeschlagene Ansteuerng schon
in Ordnung. Man sollte sich nur nicht von den vielen
Schreib-/Leseleitungen durcheinanderbringen lassen; entscheidend sind
/IORD und /IOWR, nicht aber /MEMRD und /MEMWR.

Was übrigens richtig eklig anzusteuern ist, sind 16-Bit-I/O-Zugriffe
(/IOCS16), da kann man leicht graue Haare von bekommen. Etwa 1992 hat
die c't mal einen recht guten Artikel über den ISA-Bus mit
ausführlichen Timingdiagrammen veröffentlicht; leider ist dieser
Artikel in der elektronischen Ausgabe ("c't-CD") unbrauchbar
verstümmelt, da die meisten Timingdiagramme fehlen.


*) ich habe ein "IBM PC Technical Reference Manual" mit Schaltplänen
verschiedener zu PC/XT-Zeiten verbreiteter ISA-Karten. Da stehen einem
teilweise die Haare zu Berge.

von No N. (birger)


Lesenswert?

Möchte diesen Beitrag nochmal hervorholen.

Hat hier jemand schon tatsächlich eine RTL8019 Netzwerkkarte 
memory-mapped nach obigen Vorgaben zum Laufen gebracht? Ich versuche 
mich gerade mit dem Thema. Denn sollte es klappen, so kann man doch 
einige Portleitungen sparen, besonders dann, wenn man zusätzlich weitere 
Bausteine wie RAM extern anschließen möchte. Freue mich auf Vorschläge 
und Erfahrungen.

Meine bisherigen Versuche führten leider zum Absturz des AVR bzw. man 
ließt nur Nullen.

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.