GAL für Adressbus verwenden?

Gast #582111
Lesenswert?

hallo,

ich habe einen µC mit 16Bit Adressbus und möchte mehrere Geräte darüber 
laufen lassen - z.B. einen Ethernet-controller und einen externen 
RAM-Baustein...

beide besitzen einen 16Bit Adressbus - muss ich die schaltung mit hilfe 
eines GALs verwirklichen oder gibt es auch andere möglichkeiten?

Hans
Gast #582121
Lesenswert?

im Prinzip suche ich nach einer Möglichkeit mehrere Geräte an einem 
Adressbus zu bringen... der Adressbus vom µC hat 16Bit - die beiden ICs 
auch...

d.h. es muss irgendwie möglich sein, zu sagen, welches Gerät man gerade 
ansprechen möchte oder wenn vom Ethernet Controller Daten kommen muss 
ich es wissen und den Adressbus für den Ethernet Controller verwenden 
und nicht für den RAM...

ich weiß, dass das ein GAL kann, aber ich weiß auch das sowas schon 
etwas veraltet ist und vielleicht gibt es ja neuere möglichkeiten, die 
das ganze eleganter lösen.



Hans
Gast #582162
Lesenswert?

Hallo,

das Problem sind nciht die 16 Adressleitungen der Geräte, sondern der 
benötigte Adressraum. Wenn Du die 64k Ram komplett brauchst, bleibt nur, 
eine 17. (oder auch 17. und 18.) Adresse mit I/O-Pins zu erzeugen.

Neispiel: Ein Pin als Memory/IO-Select erklären. Pin auf L für Ram und 
an den /CS des Ram, /CS des Ethernet-Controllers über einen Inverter 
auch an den Pin. Mit Pin = H ist dann der Controller gemeint.

Das kann man natürlich beliebig ausbauen (Hinweis auf ein 74138 kan 
schon, 3 Pins und damit 8x 64kB Adressraum.

Das Problem dabei ist, daß man bei Zugriffen immer getrennt diese Bist 
setzen muß.

Wenn der Controller weniger Adressraum belegt (meist ja nur eine 
Handvoll Registeradressen), kannst Du natürlich auch auf etwas Ram 
verzichten und den Controller da einblenden.

Beispielsweise A15...A12 auf ein NAND, dann ist am NAND-Ausgang bei 
$F000...$FFFF L für /CS des Controller und über Inverter bei allen 
anderen Adressen /CS des Ram L.

Sind dann nur noch 60k Ram und 4k für den Controller.
Wenn Du A15...A8 so decodierst, hast Du Ram von $0000 - $FF00, also 64kB 
- 256 Byte und 256 Byte Adressraum für den Controller.

Der Vorteil wäre, daß alle Komponenten Memory-Mapped mit den gleichen 
Befehlen ohne Tricks unter ihren Adressen zu finden sind.

Ob Du für sowas ein GAL oder 2-3 Standard-TTL nimmst, ist Deine 
Entscheidung (Platz, Verdrahtung, Stromverbrauch usw.).

Gruß aus Berlin
Michael

Gast #582226
Lesenswert?

kennt jmd. ein GAL, an dem ich einen 24Bit Adressbus anschließen kann 
und zwischen drei ICs switchen kann?

@Martin
mit einem GAL kann ich ja die Adressleitungen sozusagen x-fach 
verwenden... mit Hilfe des GALs sage ich einfach welcher Baustein 
angesprochen werden soll...
Gast #582234
Lesenswert?

>kennt jmd. ein GAL, an dem ich einen 24Bit Adressbus anschließen kann
>und zwischen drei ICs switchen kann?

XC9572 von Xilinx z.B. Nenne das Ding aber lieber CPLD ;)
Hab mir damit mal einen 3 Chip Epromsimulator gebaut.
Gast #582235
Lesenswert?

@Matthias

mit dem 74138? das ist leider nur ein 3Line-to-8Line Converter --> ich 
hab drei ICs mit jeweils 16Bit Adressbus die an einen 24Bit Adressbus µC 
angeschlossen werden müssen.

da bräuchte ich 5 stück von den 74138  - ist das nicht etwas zu 
aufwendig (vor allem bei der programmierung hinterher?)
Gast #582245
Lesenswert?

Wieso 5?


      +--+
A24 --|  |
A23 --|  |
A22 --|  |
A21 --|  +----
A20 --|  |   |
A19 --|  |   |
      +--+   |
     74xx30  |
             | +-------+
             --|/G2A Y0|
               |C    Y1|
A18 -----------|B    Y2|
A17 -----------|A    Y3|
               +-------+
              74xx138
Gast #582246
Lesenswert?

Hallo,

wie oder warum müssen ICs mit einem 16Bit-Adressbus an einen 
24Bit-Adressbus angeschlossen werden?

Selectiert werden die ICs mit Sicherheit mit einem Chip-Select-Signal 
und davon liefert ein 74138 maximal 8 Stück, also für 8 ICs...

PS: das mag jetzt böse klingen, aber entweder ist die Frage unpräzise 
gestellt oder der Umstand, daß man einen µC programmiert, verhindert das 
Verständnis für simple logische Grundschaltungen. Diese Anmerkung nur 
deshalb, weil ich sehr häufig Fragen und Antworten mit dem Ruf nach 
komplexen ICs lese, wo das Problem mit 1 oder 2 Standard-TLL für 30 cent 
bequem zu erschlagen wäre.

Gruß aus Berlin
Michael

Gast #582255
Lesenswert?

@ Hans (Gast):

Ja, ich muss Michael zustimmen.
Das klingt so, als ob du keine Ahnung hast, wie die Daten- Adress- und 
Steuerleitungen in einem µC/µP System verschalten sind und arbeiten...

aber nichts desto trotz:
...ch
hab drei ICs mit jeweils 16Bit Adressbus die an einen 24Bit Adressbus µC
angeschlossen werden müssen.

da bräuchte ich 5 stück von den 74138  - ist das nicht etwas zu....


kannst du mir das mal vorrechnen, bzw erklären?
Gast #582258
Lesenswert?

@Michael

das ein CPLD zu groß für sowas ist, ist mir auch klar... aber ein GAL 
macht ja nichts anderes (von daher wäre es für so eine aufgabe perfekt) 
- also nicht zu groß angesetzt.

die anderen bausteine muss ich mir erstmal anschauen

den µC hab ich mir ausgesucht (natürlich) nach mehreren merkmalen... und 
ich will eigentlich auch nicht nur ein paar leds blinken lassen etc. 
Daher brauch ich den schon.. warum der jetzt 24Bit Adressbus hat und 
nicht 16Bit? - ist halt so...


>Selectiert werden die ICs mit Sicherheit mit einem Chip-Select-Signal
>und davon liefert ein 74138 maximal 8 Stück, also für 8 ICs...

dann hab ich mir den nicht genau angeschaut (wenn das so ist, dass man 
den an drei I/Os anschließt und dadurch 8 ICs selektieren kann..perfekt) 
... sorry... hab die 3Lines-to-8 falsch interpretiert... dann ist der 
natürlich super... im prinzip ja wie ein GAL...

Hans
Gast #582324
Lesenswert?

Meinst du jetzt den 74xx138 ?? der hat halt Low-aktive ausgänge..
das passt ja auch mit den CS/CE-Leitungen von Schaltkreisen für Anschluß 
an µC/µP-Bus. Der CS/CE-Anschluss ist ja auch los-aktiv.

Falls du High-Aktiv brauchst, dann nimm nen 74xx238
Gast #582337
Lesenswert?

hallo Matthias,

ich hätte auch noch eine Frage: kannst du mir die Schaltung mit dem NAND 
noch mal genauer erklären? der Ausgang des NAND-Gatters wird an einen 
der drei Enable-Eingänge (G, G2A, G2B) angeschlossen; d.h. mit dem NAND 
schalte ich den IC LVC138A zwischen Demultiplexer und 1-zu-8-Decoder hin 
und her???
Gast #582347
Lesenswert?

... LVC138A zwischen Demultiplexer und 1-zu-8-Decoder hin..

Nein. Mit dem enable eingang (eingängen) kannst du den 74xx138 
abschalten. Dann sind alle ausgänge high, also inaktiv. und die 
angeschlossenen schaltkreise sind dann nicht aktiv und werden nicht 
angsprochen.

Im kontreten Fall muss A19 bis A24 (also alle!) HIGH haben, damit das 
NAND ein LOW ausgibt. Dieses LOW Schaltet den MUX (74xx138) EIN. Dadurch 
wird, abhängig von A18,A17 einer der Ausgänge LOW, und somit einer der 
angeschlossenen IC's aktiv:

A24...A19              A18   A17    Y3  Y2  Y1  Y0
----------------------------------------------------
mind einer LOW         egal  egal    H   H   H   H    kein IC angewählt
alle HIGH               L     L      H   H   H   L    IC hinter Y0 aktiv
alle HIGH               L     H      H   H   L   H    IC hinter Y1 aktiv
alle HIGH               H     L      H   L   H   L    ...
alle HIGH               H     H      L   H   H   H

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren