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