Forum: Mikrocontroller und Digitale Elektronik Bus-Interface multiplexen


von Star K. (starkeeper)


Lesenswert?

Hi,
ich würde gerne einen STR710FZ2 an einen S1D13743 anschließen. Der 
STR710 hat ein recht simples Bus-Interface, das nicht gemultiplext ist. 
Es sind also A[0..23] und D[0..15] getrennt als eigene Pins 
herausgeführt. Der S1D13743 hat nun aber nur die Pins MD[0..15], die für 
16Bit Daten und Adressen stehen. Zusätzlich verfügt der IC über ein 
DC-Signal, das angibt ob gerade Adresse (Low-Pegel) oder Daten 
(High-Pegel) anliegen.

Jetzt frage ich mich, ob ich eine Chance habe das ganze sinnvoll 
miteinander zu verdraten?

von mki (Gast)


Lesenswert?

Ich befürchte beihnahe du mußt dir einen Converter bauen, der beide 
Busse zueineinader kompatibel macht. Du mußt sozusagen den STR710FZ2 
auch multiplexen. Hinzu kommt dann auch noch, daß der STR710FZ2 mehr 
Adressleitungen hat als der S1D13743. Du kannst also nicht den vollen 
STR710FZ2 benutzen. Eine andere Möglichkeit sehe ich erstmal nicht.

von Star K. (starkeeper)


Lesenswert?

Ich dachte nun daran zwei Bus-Switches zu nehmen, z.B. hiervon 
"SN74CB3Q16244". Auf der Host-Seite an je einen IC die Adressen und 
Daten anlegen. Auf der Seite des S1D13743 werden die 16Bit jeweils 
miteinander verknüpft. Über die Output-Enable-Leitungen der Switches 
kann man nun entweder Daten oder Adressen durchlassen. Die 
Output-Enable-Leitungen kommen an eine weitere Adressleitung und lassen 
sich durch das Bus-Interface steuern. Noch ein wenig Logik dazwischen 
und fertig ist der Drahtverhau.

Das ermöglicht mir nacheinander Daten oder Adressen zu schreiben. Ich 
muss dann Softwaretechnisch, dafür sorgen das zunächst die Adresse und 
dann die Daten geschrieben werden.
Das ist auch nicht so schlimm, da der S1D13743 die Adresse automatisch 
inkrementiert bei jedem Lesen und Schreiben.

Bessere Vorschläge?

von Star K. (starkeeper)


Lesenswert?

A. K. schrieb:
> Ich habe mir das nicht en Detail angesehen, aber vielleicht kann man das
> zu Fuss multiplexen, vielleicht ist das auch exakt so vorgesehen.
>
> Indem man A0 des Controllers als Adress/Daten-Signal werwendet und vor
> dem eigentlichen Datentransferzyklus mit A0=1 einen Schreibzyklus mit
> der gewünschten Adresse als Datenwort und A0=0 durchführt. Ist natürlich
> weniger elegant als direkte Adressierung, aber kommt ohne Hardware aus.

Ich kann aber ja nicht einfach die Datenleitungen und die 
Adressleitungen zusammenbinden ohne das dort ein IC für die nötige 
Trennung sorgt.

von (prx) A. K. (prx)


Lesenswert?

Deine Beschreibung klingt ganz so, als ob der Adressbus des Controllers 
dafür weder vorgesehen noch notwendig ist. Ausser A0.

D.h. du verbindest A0 mit der besagten Adress/Datenleitung und die 16 
Datenleitungen (plus Steuerkram) schreibst mit A0=0 erst die Adresse als 
Daten in das Gerät und liest/schreibst anschliessend mit A0=1 die 
eigentlichen Daten.

Im Adressraum des Controllers belegt das Gerät also nur 2 Adressen, eine 
für die Adresse, eine für die Daten.

von Star K. (starkeeper)


Lesenswert?

Ahh jetzt klingelts bei mir.
Du meinst also die Datenleitungen verbinden und das Schreiben der 
Adresse, erfolgt dann indem man einfach erstmal eine Adresse in Form der 
Daten schreibt.
Das ist doch eine sehr gute Lösung von dir, Danke!

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.