Forum: Mikrocontroller und Digitale Elektronik ISA Bus Adressdekoder + Waitstates


von Nils S. (kruemeltee) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hi,

bin gerade dabei mit dem ISA (XT) Bus herumzuspielen und hab bisher mal 
das hier aufm Steckbrett nachgebaut 
http://linuxgazette.net/124/dutta.html
Funktioniert soweit ganz gut.

Im Anhang mal ein Entwurf für einen Adressdekoder. Die Adressleitungen 
A0-A7 gehen direkt an den Controller, die anderen werden zuerst 
invertiert und dann &-verknüpft und so eine "1" am Ende heraus zu 
bekommen, wenn:
z.B. Schalter alle auf 0: Adressen von 0x000 bis 0x0FF
Schalter alle auf 1: Adressen von 0xF00 bis 0xFFF
Mit den 4 Schaltern eben 0x100, 0x200, 0x300, ... , 0xF00 als 
Base-Adressen.

Haut das so hin? Oder liegt da irgendwo der Wurm drin?

Nun soll da ein Propeller draufkommen, der einen Adressbereich von 
256Byte abhören und entsprechend was ausführen soll.
Bei einer Busgeschwindigkeit von 4,xxMhz und 80-100Mhz vom Propeller 
bleiben zwischen 18 und 25 Takten zeit um die Adresse (8Bit) zu holen 
und den Inhalt des Datenbusses/Memory (je nach RD/WR) auf den 
Datenbus/Memory zu legen.
Die verbleibenden 7 Cogs können sich darum kümmern mit den 256 Byte was 
anzufangen.
Wenn die Zeit nicht ganz reichen sollte, bleiben immer noch waitstates 
durch "IO CH RDY".

Zitat http://www.techfest.com/hardware/bus/isa.htm
>I/O Channel Ready allow slower ISA boards to lengthen I/O or memory
>cycles by inserting wait states. This signals normal state is active
>high (ready). ISA boards drive the signal inactive low (not ready)
>to insert wait states. Devices using this signal to insert wait
>states should drive it low immediately after detecting a valid
>address decode and an active read or write command. The signal
>is release high when the device is ready to complete the cycle.
Um dem nachzukommen, würde ich durch die "1" am "CS"-Ausgang meines 
Adressdekoders ein FlipFlop anschalten lassen, welches den "IO CH RDY" 
auf low zieht, direkt nach dem Erhalten der Adresse. Erst wenn der 
Controller mit allem fertig ist, resettet der dann das Flip Flop, wird 
das so funktionieren?

von karadur (Gast)


Lesenswert?

Hallo

das du mit den Switches die Inverter kurzschließt ist dir schon klar?

Such mal nach 74HC688.

von Nils S. (kruemeltee) Benutzerseite


Lesenswert?

Vielen Dank! Den 688 hab ich sogar noch auf einer alten ISA 
Controllerkarte gefunden. Jetzt werd ich erstmal die Karte mitm Dremel 
zerlegen, mit ordentlichem Kleber die Steckerleiste an eine 
Lochrasterkarte kleben und los gehts :)

Auf'm Steckbrett funktionierts bereits Ansatzweise. Mein Oszi zeigt mir 
zumindest mal die CS Flanken und bei inb/outb geht der jeweilige IOR/IOW 
an :)

Fehlt nur noch das mit den Waitstates... Das werd ich nachher mal 
Probieren.

Mit dem CS ein RS-FF setzen, welches den IO CH RDY runterzieht und dann 
per Software das FF resetten. Nur muss ich das noch irgendwie 
hinbekommen, den CS am SET-Eingang abzuschalten, denn SET und RESET 
gleichzeitig geht ja wohl nicht...

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.