Forum: FPGA, VHDL & Co. Größe eines Fifos zur Laufzeit ändern


von Sebastian (Gast)


Lesenswert?

Hallo,

Ich bekomme Daten über die MII Schnittstelle. Diese möchte ich, z.B. mit 
einem FIFO verzögern. Das Funktioniert eigentlich auch, mein Problem ist 
nur, dass ich die Zeit, wie Lange verzögert wird, einstellen möchte. Das 
heist, die Größe das FIFO muss ich zur Laufzeit über irgendeine 
Steuerleitung ändern können. Gibt es soetwas ??

Gruß,
Sebastian

von Ulrich (Gast)


Lesenswert?

für sowas nimmt man ein schieberegister. Oder wenn es ein fifo sein muss 
dann nimmt man nur ein element aus dem fifo wenn es eine bestimmt größe 
hat

von Roger S. (edge)


Lesenswert?

Das hatten wir schon mal:

Beitrag "Frame mit Fifo verzögern"

Cheers, Roger

von Sebastian (Gast)


Lesenswert?

Danke für denk Link.
Also ich hatte eigentlich gedacht, dass ich einen Fifo nehme, der Zwei 
Takte hat. Einen für einlaufende und einen für rauslaufende Daten. Wenn 
ich dann den Takt für rauslaufende Daten abschalte, habe ich ja so eine 
art verzögerung. Das Problem ist dann nur, das ja auch immer Daten vorne 
reinlaufen. Die Verzögerung wäre dann ja nicht veränderbar. Ich brauche 
Quasi einen Fifo, der sich fast beliebig vergrößert, wenn Daten 
einlaufen und keine rausgenommen werden. Wenn man dann wieder Daten 
rausnimmt und nichts reinkommt, muss der Fifo wieder schrumpfen.

Mh, gut beschrieben ?  :-)

Gruß,
Sebastian

von Roger S. (edge)


Lesenswert?

Du kannst das loesen wie du moechtest, scheint mir jedoch nicht der 
einfachste Weg zu sein.

Cheers, Roger

von Chef (Gast)


Lesenswert?

Du kannst das FIFO verkürzen, indem Du zusätzliche Takte beim 
einschieben benutzt. Du musst Dir aber überlegen, was mit den 
übersprungenen Daten passieren soll, denn eine FIFO-Verkürzung zur 
Laufzeit heisst immer Daten weg. Ansonsten macht die Geschichte keinen 
Sinn.

Beim FIFO ist es ja so, daß es auf das Einschreiben und das Auslesen 
ankommt, was die Lazenz angeht und eine Verkürzung alleine für die Daten 
garnichts bringt, es sei denn, es gäbe einen unverhinderten Überlauf 
oder Du müchtest die FIFO-Größe nutzen, um das Einschreiben i.A. des 
Ausleszustandes umgekehrt zu steuern. Beides kann man aber auch über die 
pointer-Signale machen und das Einschreiben oder VErwerfen manuel 
erreichen.

Ich fürchte, daß Du Dir aber nicht ganz klar biat, was Du willst und 
einfach den falschen Denkansatz hast.

von Hans (Gast)


Lesenswert?

mh, vielleicht schein das mit einem Fifo doch keine so gute idee. Wenn 
ich das so wie in dem anderen Beitrag beschrieben mit einem Speicher 
mache, dann brauche ich einen Speicher, der verschiedene eingangs und 
ausgangsclocks hat. Außerdem muss ich auch noch bestimmen können wohin 
ich schreibe und woher gelesen wird.

Wo finde ich soein baustein?

von Roger S. (edge)


Lesenswert?

Wozu brauchst du verschiedene clocks?
Es laesst sich elegant mit einem loesen.

von Helgo (Gast)


Lesenswert?

Im FPGA gibt es doch RAMs, die mit unterschiedlichen Clocks arbeiten 
können. Wenn nicht, einfaches PLD und eine asynchronen RAM-Zugriff 
bauen. Bis 2 Ports, je Seite geht es recht einfach.

von Martin K. (mkohler)


Lesenswert?

Helgo wrote:
> Im FPGA gibt es doch RAMs, die mit unterschiedlichen Clocks arbeiten
> können.
Genau. Nimm ein DPRAM mit ein bisschen Steuerlogik drum herum und gut 
ist.

Über die Grösse des Adressbereichs kannst du dann auch die FIFO-Länge 
einstellen.

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.