Forum: Mikrocontroller und Digitale Elektronik GAL für Adressbus verwenden?


von Hans (Gast)


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

von Matthias (Gast)


Lesenswert?

Ja welche Schaltung denn? Was soll die Schaltung/der GAL denn machen..?

von Jupp M. (juppp)


Lesenswert?

Du mußt doch einfach nur Chipselect-Signale erzeugen, kannst du das 
nicht mit einem 74138 machen? Dad Ding kostet ein paar Cent und 
verbraucht sehr wenig Strom im Gegensatz zum GAL.

von Hans (Gast)


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

von Martin (Gast)


Lesenswert?

@Hans

was ist den ein GAL Generic Array Logic - viel mehr hab ich bei wiki 
nicht gefunden...?

von Michael U. (Gast)


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


von Hans (Gast)


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...

von Matthias (Gast)


Lesenswert?

@Hans:

Das geht auch ohne GAL...

von holger (Gast)


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.

von Hans (Gast)


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?)

von Tippgeber (Gast)


Lesenswert?

Wieso 5?


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

von Michael U. (Gast)


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


von Matthias (Gast)


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?

von Hans (Gast)


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

von Hans (Gast)


Lesenswert?

@Matthias

was eine Adressleitung ist weiß ich schon... aber du hast recht, ich hab 
leider keine ahnung welche ICs es gibt und was diese leisten...

von Matthias (Gast)


Lesenswert?

...ass man
den an drei I/Os anschließt und dadurch 8 ICs selektieren ka...

Ok, aber das klingt nicht grade so...

von M&M (Gast)


Lesenswert?

d.h. wenn der µC z.B. nur 16Bit Adressbus besitzt und man zwei oder 
mehrere ICs mit jeweils 16Bit dran anschließen möchte? wie funktioniert 
das dann??

von Hans (Gast)


Lesenswert?

noch eine Frage: gibt es so einen IC wie den 74LS138 auch für 3.3V VCC?

von Matthias (Gast)


Lesenswert?

ja, nimm die LVC-Reihe, oder einen HC-Typ. Der sollte auch gehen...

von Hans (Gast)


Lesenswert?

hallo Matthias,

danke für die schnell beantwortung meiner fragen...

eine grundsätzliche hab ich noch; warum ist der selektierte Output Q1-7 
mit Low aktiviert und nicht mit High?

von Matthias (Gast)


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

von Peter (Gast)


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???

von Hans (Gast)


Lesenswert?

danke,

von den drei Inputs benötige ich ja für die drei ICs nur zwei - wird der 
dritte Input (von A, B, C) einfach nicht angeschlossen, oder wird der 
sauber auf GND gezogen?

von Matthias (Gast)


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

von Peter (Gast)


Lesenswert?

ok vielen dank Matthias

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.