16bit Adress-/Datenbus auf 8bit

Hallo zusammen!

Ich habe folgendes Problem und würde gerne Eure Meinung dazu hören.

Ich möchte einen Baustein (Kommunikations µC) über einen Adress-/Datenbus an einen Host µC anschließen, auf dem eine Applikation läuft.
Dieser Baustein stellt aber leider nur einen 16bit Adress-/Datenbus zur Vefügung. Mein Applikations µC kann aber nur einen 8bit Bus verwalten.
Gibt es eine Art Umsetzer (mit Puffer)?
Vorschläge aller Art sind willkommen.

Danke schon im Voraus.

MfG Tobi

Hallo,

Datenbus 16Bit: Latch mittels Adressdekoder (z.B. Pal oder TTL) ansteuern und Highbyte / Lowbyte durch zweimaliges Abfragen/Ansteuern ansprechen.

Adressbus mit 16Bit: obere 8Bit einfach auf festen Pegel setzen bzw. ignorieren oder wie bei Datenbus verfahren.

Gruß
Axel

Hallo Tobi,

Ich habe folgendes Problem und würde gerne Eure Meinung dazu
hören.

Ich möchte einen Baustein (Kommunikations µC) über einen
Adress-/Datenbus an einen Host µC anschließen, auf dem eine
Applikation läuft.
Dieser Baustein stellt aber leider nur einen 16bit
Adress-/Datenbus zur Vefügung. Mein Applikations µC kann aber
nur einen 8bit Bus verwalten.
Gibt es eine Art Umsetzer (mit Puffer)?
Vorschläge aller Art sind willkommen.

Da gibt es -Zig Möglichkeiten für eine Glue-Logik.
Oft stehen die schon im Datenblatt des Bausteins.

Aber ohne, dass du hier angibst um welchen Baustein und Controller es sich handelt, kann die keiner konkret helfen.

Langsam frage ich mich WAS ihr eigentlich in eurer Ausbildung überhaupt lernt ???

MfG Peter(TOO)

Hallo Tobi,

beim Adressbus kein Problem: der Baustein hat i.d.R. nur wenige Adressbits, die höheren Bits werden eh nur dekodiert, um ein Chip Select zu erzeugen, das ist also kein Unterschied zu 8 Bit.

Beim Datenbus muss ein spezieller Baustein (meist prog. Logik) aus einem Lese- oder Schreibzyklus 2 Zyklen für die beiden 8Bit-Hälften machen und für die Zwischenspeicherung sorgen. Diese Logik kann man nur mit genauer Kenntnis der Zeitdiagramme der Zyklen BEIDER Bausteine entwerfen.

Gruss Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Tobi,

Ich möchte einen Baustein (Kommunikations µC) über einen
Adress-/Datenbus an einen Host µC anschließen, auf dem eine
Applikation läuft.
Dieser Baustein stellt aber leider nur einen 16bit
Adress-/Datenbus zur Vefügung. Mein Applikations µC kann aber
nur einen 8bit Bus verwalten.
Gibt es eine Art Umsetzer (mit Puffer)?

Das hängt ganz wesentlich davon ab, was Du genau vorhast. Soll es sich nur um eine reine Kommunikation handeln oder sollen die µCs gegenseitig direkt auf Speicherbereiche zugreifen können ? Soll der Datenstrom vorwiegend von 16-Bit- auf das 8-Bit-System stattfinden oder umgekehrt, oder beides ? Wie zeitkritisch ist die Datenübertragung ?.. Fragen über Fragen. Normalerweise ist es für einen 16-Bit-µC jedenfalls kein Problem, 8-Bit-Peripherie zu bedienen.

Jörg

Hallo

Da gibt es -Zig Möglichkeiten für eine Glue-Logik.
Oft stehen die schon im Datenblatt des Bausteins.

Aber ohne, dass du hier angibst um welchen Baustein und
Controller es sich handelt, kann die keiner konkret helfen.

Langsam frage ich mich WAS ihr eigentlich in eurer Ausbildung
überhaupt lernt ???

Tja, wie es aussieht nur das falsche. Nein, jetzt aber mal im Ernst:

Ich wollte hier keine Romane schreiben.
Ich hab auch schon ein, zwei Lsg. für mich gefunden. Die Überlegung warum ich hier gepostet hab war die, das es ja evtl. schon Bausteine gibt, die diese Aufgabe übernehmen, ohne das groß programmiert werden muss und die kenne ich nicht. Da ich aber für mich nicht in Anspruch nehme - im Gegensatz zu manch anderen hier - alles zu wissen, habe ich gefragt.

Trotzdem danke für die Antwort.

MfG Tobi

Hallo Tobi,

Ich wollte hier keine Romane schreiben.

Also zwei Typennummern sind doch kein Roman ?!
Mit diesen ANgaben hätte man schon gewusst, oder nachschauen können, welche Busse CPU und Baustein unterstützen.

Ich hab auch schon ein, zwei Lsg. für mich gefunden. Die
Überlegung warum ich hier gepostet hab war die, das es ja
evtl. schon Bausteine gibt, die diese Aufgabe übernehmen, ohne
das groß programmiert werden muss und die kenne ich nicht.

Es gibt recht unterschiedliche Bussystem:

  1. Daten- und Adressbus getrennt
  2. Daten- und Adressbus gemultiplext, wobei bei 8Bit-System nur die unteren 8 Bit gemultiplext werden (z.B. 8051).

Beim Controlbus sieht es ähnlich aus:

  1. Read und Write sind eigene Leitungen.
  2. R/W plus ein Steuersignal, welches angibt wann ein Speicherzyklus aktiv ist.
  3. Zudem sind die Steuersignale bei gemultiplxtem Data/Addr-Buss oft auch gemultiplext.
  4. Achja, dann gibt es noch synchrone und asynchrone Busse. Beim Synchronen wird der Ablauf komplett von der CPU gesteuert, beim Asynchronen, wartet die CPU auf ein Ready-Signal vom angesprochenen Baustein.

Das sind nur die wichtigsten Systeme, da gibt es noch diverse Exoten.

Dann gibt es noch Unterschiede beim Speichermodell. Die peripherie kann einen eigenen Speicherbereich, mit extra Befehlen (z.B. Intel 80(x)xx ), haben oder sie wird wie der normale Speicher angesprochen.

Nicht zuletzt stellt sich auch noch die Frage nach dem Timing.

Und zu guter letzt kann man viele Peripherie-Bausteine auf die unterschiedlichen Bussysteme umschalten. Bei 8/16Bit hilft es auch, wenn der Baustein separate Enable-Eingänge für die beiden 8Bit Gruppen hat.

Tja, und bei langsamen Bausteinen, wie z.B. noch oft bei günstigen LCDs zu finden, ist es oft einfacher, diese über ein Port anzusteuern, anstatt sie direkt am Bus anzuhängen.

MfG Peter(TOO)