www.mikrocontroller.net

Forum: FPGA, VHDL & Co. MPMC mit eigner IP


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

brauche eure HILFE.

Hab vor einigen Wochen mit VHDL programmieren angefangen und nun mein 
erstes Projekt abgeschlossen. Jetzt probiere ich auf einem Spartan3 den 
MicroBlaze mit einer eigenen IP und MPMC zu programmieren.

Was geht momentan:
- der MicroBlaze funktioniert mit IP und MPMC, ABER

ich möchte direkt über externe GPIO in den SDRAM schreiben und über den 
MicroBlaze die Daten lesen und per UART senden.

HAb jedoch momentan kein ansatz wie ich Daten direkt vom GPIO in SDRAM 
schreibe. Hab Ihr einen Ansatz? Benötigt man einen DMA-Zugriff? So wie 
das sehe, muss dies doch komplett in VHDL geschehen, oder?

Hoffe und Bitte um Rat.

Gruß, Markus

Autor: Georg A. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Benötigt man einen DMA-Zugriff?

Wenn jemand anders als die CPU in den Speicher schreibt ist das mehr 
oder weniger die Konvention, wann es DMA heisst ;) Allerdings solltest 
du dir vorher noch überlegen, was für Datenraten du haben willst und 
ob die HW wirklich selber an der CPU vorbei in den Speicher schreiben 
muss. Bis zu ein paar 100K pro Sekunde wäre es wohl deutlich einfacher, 
das Zeug in ein FIFO zu bekommen, das ab einem bestimmten Füllstand 
(+Timeout) einen Interrupt auslöst. Die UART macht es ja nicht anders.

Wenn es um MB/s pro Sekunde geht, kommst du um DMA nicht herum, ist aber 
auch kein Hexenwerk.

Der MPMC heisst ausgeschrieben "Multi-Port Memory Controller". Von den 
Ports werden ein paar (typ. 3) für den Microblaze gebraucht. Du kannst 
noch einen dazukonfigurieren und mit der in der Doku beschriebenen Art 
auf dem Port Speicherzugriffe durchführen. Es gab früher mal einen 
DMA-Controller, weiss nicht, ob der noch existiert. Der könnte dir etwas 
Arbeit abnehmen. So ganz ohne eigenen Code wird das aber auch nicht 
gehen.

BTW, noch ein Fallstrick: Der Microblaze hat kein Cachekohärenzprotokoll 
für DMA. Wenn der per DMA beschriebene Speicher im cachebaren Bereich 
ist (wird xps per Default so machen), bekommt der MB nichts von einer 
externen Änderung mit, liest also keine neuen Daten. Entweder nimmt man 
den Bereich dann im Cachecontroller raus oder der MB muss vor jedem 
Zugriff auf den Bereich den Cache invalidieren (__invalidate_icache).

Autor: Jannulis Tembridis (tembridis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Markus schrieb:
> HAb jedoch momentan kein ansatz wie ich Daten direkt vom GPIO in SDRAM
> schreibe. Hab Ihr einen Ansatz? Benötigt man einen DMA-Zugriff? So wie
> das sehe, muss dies doch komplett in VHDL geschehen, oder?

Moin,

für dich könnte das NPI Interface (manchmal auch PIM genannt) 
interessant sein. In unserem Projekt benutzen wir dieses auch. Das 
Protokoll ist einfach gehalten und erlaubt sowohl SingleBeat- als auch 
Burst-Zugriffe. Man kann mit wenigen Handgriffen im MPMC IP Dialog ein 
NPI Port freischalten und dann in der Portliste nach draussen führen.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.