Forum: FPGA, VHDL & Co. Asynchrone oder synchrone FiFo?


von Lukas (Gast)


Lesenswert?

Hallo zusammen,

ich habe ein Verständnisproblem bzgl. eines asynchronen/synchronen 
Designs in VHDL. Die Schaltung besteht aus einer Komponente, die ein 
Takt-Eingangssignal und einen Dateneingang besitzt. Die Daten sollen aus 
der Komponente mit einem langsameren Takt seriell hinaus getaktet 
werden. Jetzt habe ich mir überlegt, dass man die Daten vorher in einer 
FiFo zwischenspeichern sollte. Der serielle Takt wird durch einen 
Taktteiler aus dem höher frequenten Eingangstakt erzeugt. Ist das Design 
damit synchron oder asynchron? Mit welchem Takt muss nun die FiFo 
bestrieben werden?

Beste Grüße
Lukas

von Falk B. (falk)


Lesenswert?

@ Lukas (Gast)

>Takt-Eingangssignal und einen Dateneingang besitzt. Die Daten sollen aus
>der Komponente mit einem langsameren Takt seriell hinaus getaktet
>werden. Jetzt habe ich mir überlegt, dass man die Daten vorher in einer
>FiFo zwischenspeichern sollte.

Muss man wohl.

> Der serielle Takt wird durch einen
>Taktteiler aus dem höher frequenten Eingangstakt erzeugt.

Also ein abgeleiteter Takt.

> Ist das Design
>damit synchron oder asynchron?

Wenn man es richtig macht ist es synchron. Wenn nicht, asynchron.

> Mit welchem Takt muss nun die FiFo
> bestrieben werden?

Mit dem schnellen Takt.

Siehe Taktung FPGA/CPLD

MFG
Falk

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lukas schrieb:
> Der serielle Takt wird durch einen Taktteiler aus dem höher frequenten
> Eingangstakt erzeugt. Ist das Design damit synchron oder asynchron?
Vermutlich bezeichnest du hier etwas als "Takt", was gar keiner ist. Du 
könntest einfach mal "Butter bei die Fische machen" und Zahlen und 
Fakten nennen:
Woher kommt das Signal?
Wie hoch ist der Eingangstakt?
Wie und mit was wird das Signal verarbeitet? (CPLD, FPGA)
Wohin geht das Signal danach mit welcher Geschwindigkeit?

> Mit welchem Takt muss nun die FiFo bestrieben werden?
Es ist DER Fifo-Speicher...

von Duke Scarring (Gast)


Lesenswert?

Lukas schrieb:
> ich habe ein Verständnisproblem bzgl. eines asynchronen/synchronen
> Designs in VHDL. Die Schaltung besteht aus einer Komponente, die ein
> Takt-Eingangssignal und einen Dateneingang besitzt.
Wo kommen die Daten her? Werden die mit dem Takt erzeugt? Dann sind sie 
synchron. Werden die ohne Takt oder mit einem anderen Takt erzeugt, sind 
sie asynchron. Die Aussage bezieht sich erstmal auf den Dateneingang 
Deiner Komponente.


> Die Daten sollen aus
> der Komponente mit einem langsameren Takt seriell hinaus getaktet
> werden.
Also so eine Art Parallel-Seriell-Wandler realisiert mit einem 
Schieberegister.

> Jetzt habe ich mir überlegt, dass man die Daten vorher in einer
> FiFo zwischenspeichern sollte.
Warum? Wie schnell werden denn die Daten ausgegeben (Bit/s), wie schnell 
kommen sie in Deine Komponente hinein? Ein FIFO bringt nur etwas, wenn 
die Daten blockweise kommen. Wenn die durchschnittliche 
Eingangsdatenrate höher ist als die Ausgangsdatenrate kommt es 
irgendwann zum Datenverlust.

> Der serielle Takt wird durch einen
> Taktteiler aus dem höher frequenten Eingangstakt erzeugt. Ist das Design
> damit synchron oder asynchron?
Der Ausgang des Moduls ist synchron zum Takt.

> Mit welchem Takt muss nun die FiFo
> bestrieben werden?
Überleg Dir das mit dem FIFO nochmal. Welche Aufgabe soll der FIFO wo 
erfüllen?

Duke

von Lukas (Gast)


Lesenswert?

Lothar,

danke schonmal für die hilfreichen Antworten! :) Das ganze System läuft 
auf einem FPGA (Spartan 3E). Der Takt am Eingang kommt von einem 
externen Oszillator (25MHz). Das serielle Clock Signal soll 1/10 des 
Systemtaktes entsprechen, sprich 2,5 MHz.

> Es ist DER Fifo-Speicher...
Damit habe ich mich wohl die letzten Jahre lächerlich gemacht :-)

von Lukas (Gast)


Lesenswert?

Duke,

die Daten werden - soweit ich mir das vorstelle - mit dem Systemtakt 
erzeugt, sind also synchron zu meiner Komponente. Es handelt sich 
hierbei um Audio-Daten. Da ich bisher nur den I2S Controller baue, weiß 
ich momentan noch gar nicht, wie das ganze Design aussieht. Ich dachte 
mir, es wäre sinnvoll einen FIFO-Speicher einzubauen, für den Fall, dass 
der Datenstrom zwischenzeitlich kurz abreißt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Lukas schrieb:
> Da ich bisher nur den I2S Controller baue
Jetzt kommt Licht ins Dunkel. Du hast also nur 1 richtigen Takt und 
ein simples Ausgangssignal, das den Namen Takt (Serial Clock) hat. Ein 
richtiger Takt ist das aber nicht. Es wird einfach wie jedes andere 
Ausgangssignal mit einem Zähler aus den 25 MHz erzeugt und ausgegeben. 
Es wird und darf aber nie als Takt in deiner VHDL-Beschreibung 
auftauchen.

Und letztlich ist dein Fifo-Speicher natürlich synchron zu den 25MHz.

>> Es ist DER Fifo-Speicher...
> Damit habe ich mich wohl die letzten Jahre lächerlich gemacht :-)
Man lernt nie aus...  ;-)

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.