Forum: FPGA, VHDL & Co. Clock Domain Crossing mit FIFO selbst kodieren?


von Matthias (Gast)


Lesenswert?

Hallo,

ich lese mich hier gerade durch Code für Altera FPGAs und wundere mich 
ein wenig, weil so ziemlich alle Clock Domain Übergänge mit DPRAM, 
grey-kodierten Addressen, usw. händisch ausprogrammiert sind. Wir haben 
da leider ein paar solche Übergänge. Es handelt sich auch nicht immer um 
dieselbe Komponente sondern das ist mindestens zweimal komplett 
auskodiert.

Macht das aus eurer Sicht Sinn? Eine FIFO mit Blockram bekomme ich ja 
auch vom Megawizard Plugin Manager viel einfacher. Oder besitzt so eine 
generierte FIFO eine schlechtere Performance als wenn man händisch 
kodiert?

lg
Matthias

von bergvagabund (Gast)


Lesenswert?

Ich denke du solltest nicht verschiedene Taktdomänen einfach in ein 
großes SOPC Design werfen und dann dem SOPC Builder die Clock Crossing 
Logic hinzufügen lassen.
Besser wäre es du trennst die verschiedenen Taktdomänen mit Hilfe einer 
Clock Crossing Bridge (fertige Avalon Komponente).
Wenn du dir den Code von der Clock Crossing Bridge anschaust wirst 
feststellen dass da "normale" Fifos verwendet werden.

von Matthias (Gast)


Lesenswert?

Ich habe das Design nicht fabriziert, ich muss es jetzt allerdings 
erweitern. Und der Hintergrund meiner Frage ist: Waren diese händisch 
auskodierten FIFOs nur eine Zusatzaufgabe der Personen, die dieses 
Design erstellt haben, oder gibt es objektive Vorteile, wenn man selbst 
kodiert anstatt die fix fertige Komponente des FPGA Herstellers zu 
nehmen.

lg
Matthias

von Anguel S. (anguel)


Lesenswert?

Ich weiß nicht wie das bei Altera ist, aber bei Xilinx nimmt man 
normalerweise den FIFO Core Generator gerade weil dort alles gut 
optimiert und ausgetestet sein sollte. Damit spart man sich die ganzen 
Fehlerquellen die beim Selberschreiben entstehen. In solchen Fällen 
vertraue ich eher Xilinx als mir selbst ;)

von Matthias (Gast)


Lesenswert?

Als alter Xilinx-Jünger stehe ich auf demselben Standpunkt und hätte den 
Ansatz auch bei Altera weiter vertreten. Auf dem Papier sind allerdings 
die Leute, die das implementiert haben, erfahrener als ich. Darum 
vertraue ich mir in diesem Punkt auch noch nicht ganz.

lg
Matthias

von Duke Scarring (Gast)


Lesenswert?

Wenn man das selber implementiert, ist man ggf. vom Hersteller 
unabhängig. (Und man sieht, wie es funktioniert.)

Duke

von Matthias (Gast)


Lesenswert?

Es wird ein generierter Block RAM für Altera verwendet (altsyncram), 
daher nehme ich nicht an, dass das generisch ist. Wenn man sich auf des 
Inferieren von RAMs verlassen will sollte das aber möglich sein.

Wenn man den inneren Aufbau verstehen will sollte man sich imho mal das 
Paper von Cummings usw über Asnychronous FIFOs durchlesen, war sehr 
lehrreich für mich.

lg
Matthias

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.