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


von Andreas B. (loopy83)


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

von Iulius (Gast)


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.

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


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.

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.