Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Ich möchte gern mit einem Sequenzdiagramm ausdrücken, wie man Daten über einen DMA in einen Hardware Multiplizierer schiebt.

Der DMA kann ja in einer Operation Daten aus dem Speicher in den Multiplizierer schieben und ich weiß nicht, wie ich das im Sequenzdiagramm ausdrücken soll. Jemand ne Idee?

Ich hab da mal was gebaut, weiß aber nicht ob das so stimmt (PDF Anhang)

firdma.pdf

Geschrieben

Hi,

auch wenn ich nicht der Experte bin, erinnere ich mich, dass eine Sequenz das Verhalten des Systems in einem bestimmten Zeitabschnitt darstellt.

De Frage ist also: Was tut dein System in der Zeit?

Das ist so aus dem Diagramm nicht ablesbar.

Wenn das nicht klar ist, wird nicht die Rolle des DMA-Controlers klar.

Günstig wäre auch, das Problem im EVA-Zusammenhang darzustellen, weil man dann nicht in Raterei vefallen muß.

Erkläre dich deshalb bitte noch mal.

LG

Andre'

Geschrieben

Ich gebe dir erstmal vollkommen recht ;)

EVA wäre hier ebenso schwierig. Der DMA macht ja eigentlich nen move befehl von Adresse A (Speicher) zu Adresse B (Multplizierer).

Der Datenfluss wäre also eigentlich nur Speicher > Multiplizierer.

Aber ich möchte halt gern ausdrücken, dass der DMA dran beteiligt ist...

Geschrieben
Aber ich möchte halt gern ausdrücken, dass der DMA dran beteiligt ist...
Wer ist denn "der DMA"?

DMA ist eine Zugriffsart, kein Objekt, das selbst etwas tut. DMA wird verwendet von DMA-Controllern, DMA-Engines in CPUs oder von den Geräten selbst, wie bei PCI. Das wären mögliche Objekte für ein Sequenzdiagramm.

Geschrieben

Ja ich weiß - und ich habe das auch entsprechend beschrieben.

E: Speicher, V: DMA, A: Multiplizierer ?!

Aber das lässt sich mit eva nicht beschreiben da ich hier keine gleichzeitige e und a ausdrücken kann.

Geschrieben

Ich würde vom "Muiplizierer" ausgehen.

Die darzustellende Sequenz wäre für mich:

E: Daten mit DMA vom Speicher in Multiplizierer

V: Daten mit Multiplizierer berechnen

A: Daten mit DMA vom Multipizierer in Speicher

Die Frage ist nun, im Diagramm klarzustellen, wer wie oft die Sequenz auslöst, und wie der DMA durch wen gestattet wird.

Natürlich wäre es interessant zu wissen, warum nicht der normale Weg beschritten wird.

Geschrieben

> Die darzustellende Sequenz wäre für mich [...]

Ist ja soweit richtig. Aber bitte als Sequenzdiagramm - womit wir wieder am Anfang wären ;)

> Natürlich wäre es interessant zu wissen, warum nicht der normale Weg beschritten wird.

Das ist der normale Weg bei der Mikrocontrollerprogrammierung.

Geschrieben

Hi,

ich kann nur am Wochenende auf meinen account zugreifen. Bin in der Woche auf Lehrgang.

In der Skizze bin ich von der Steuerung des Speicherzugriffes durch den DMA Controler ausgegangen. Dafür habe ich den Speicher weggelassen.

Ich denke, das Bild erklärt sich selbst.

LG

Andre'

post-55476-14430448408675_thumb.jpg

Geschrieben

Nein so funktioniert das leider auch nicht ;)

Die CPU hat mit dem Speicherzugriff überhaupt nichts zu tun und befindet sich darüber hinaus sogar im Schlafzustand. Und der Multiplizierer kann keine Daten laden und auch keine Daten anfordern. Der wird nur getriggert wenn die Daten in seinen Registern liegen.

Der DMA fragt auch keine Geräte ab sondern macht nen simplem MOVE Befehl von Speicheradresse A (RAM) zu Speicheradresse B (Multiplizierer) - und zwar in einem Takt, also in einem Befehl der sich nicht unterbrechen lässt.

Also dein Diagramm mag zwar semantisch richtig sein, gibt aber mein Programmkonzept nicht wieder...

Geschrieben

Hi,

ich verstehe ich nicht so richtig, was du meinst.

Ich kenne das so:

Im Normalfall greift die CPU über das Bussystem auf den Speicher zu. Das bedeutet, dass Daten für externe Geräte aus der Speicherzelle in das Register der CPU und von dort in eine Speicherzelle des Gerätes geladen wird. Das DMA sollte meines Wissens dafür zuständig sein, dass die externen Geräte direkt, ohne Umwege über die CPU auf den Speicher zugreifen können, z.B. Festplattencontroler, Soundkarte, Videokarte usw.

Dazu steuert der DMA-Controler die Zugriffsrechte, die ja irgendwie angefordert werden müssen.

Zu deinem Projekt:

Klar sorgt der DMA-Controler dafür, dass Daten vom Speicher direkt in den Multiplizierer geladen werden können. Wieso? Weil die CPU keinen Speicherzugriff benötigt, da sie ja schläft. Der Multiplizierer legt also Adressen an den Adressbus und lädt seine Register über den Datenbus. Sind alle Register geladen, löst er die Berechnung aus, und liest die Daten direkt zurück.

Ich denke, das er das auf Hardware-Ebene macht- und doch kann man das Verhalten softwaremäßig als PAP, Zustandsdiagramm usw. beschreiben.

Beispielsweise fordert der Multiplizierer natürlich nichts an, aber wenn sich an einer bestimmten Leitung des Steuerbusses der Wert ändert, kann man das so interpretieren.

LG

Andre'

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...