www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Bilddaten umsortieren - FIFO Problem


Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich habe folgendes Problem.

Ich Lese mit meinem FPGA (Spartan 3A DSP) zwei Datenkanäle (linke/rechte 
Bildhälfte) mit Bilddaten ein.
Diese Daten landen in zwei Fifos und werden von dort von einem PowerPC 
ausgelesen.

Nun habe ich das Problem, dass ich die Bilddaten intern umsortieren 
muss.
Hier ein Bsp:
Eine Zeile mit 10 Pixeln.

1--------5,6-------10

Ich lese die Daten so ein, dass ich zuerst Pixel 1 und Pixel 10 bekomme. 
Beide Pixel stehen also zuerst im jeweiligen FIFO. Zuletzt erhalte ich 
Pixel 5 und 6. Die FIFOS sind also wie folgt gefüllt:

5     6
-     -
-     -
1     10

Nun müßte der PPC die Daten auslesen und anschließend noch umsortieren, 
um das Bild richtig im Speicher liegen zu haben. Das kostet natürlich 
zeit.

Nun suche ich eine Möglichkeit, dass der rechte FIFO nach Einlauf der 
ersten Zeile die Daten umsortiert, also quasi Pixel 6 zuerst ausgelesen 
werden kann und zuletzt Pixel 10.

Das Problem ist, dass natürlich nach dieser Zeile direkt die nächsten 
Daten reinkommen und in den Fifo gelegt werden wollen.
In wievielen Takten wäre denn eine derartige Umsortierung möglich?
Könnte ich den Fifo komplett als eine Art Matrix auffassen und die Daten 
mit einem Takt umschieben? Denn sonst müßte ich ja den kompletten FiFo 
auslesen und in einen neuen schreiben.

Es wäre also in dem Sinne keine FiFo mehr sondern eher ein LastIFO oder 
sowas :)

Gibt es da eine geschickte Lösung für dieses Problem?

MfG Andi

Autor: Iulius (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm halt statt einem Fifo einen normalen (block)Ram bei dem du die 
Addresse selbst festlegst.

Dazu eine kleine Statemachine welche die Reihenfolge berechnet und gut 
ist.

Alternativ wenns nur 5 Werte sind : Schieberegister und immer das 
"falsche Ende" an den Eingang der Fifo hängen.

Autor: René D. (Firma: www.dossmatik.de) (dose)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der interne FiFo wird aus RAM Zellen gebildet. Der Addressdecoder muss 
entspechend der "Verwürfelung" erweitert werden. Eigentlich nicht das 
große Problem.
Problem ist eher ein FiFo für die Synchronisation mit hohen Taktraten 
richtig zu bauen. Das ist sicher bei Bilddaten notwendig.
In der Simulation funktioniert alles doch dann verschiebt sich das 
Timing der Takte im FPGA etwas und es gibt ungewollte Effekte.

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.