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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.