Clock Domain Crossing mit FIFO selbst kodieren?

Gast #1773054
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
Gast #1773064
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.
Gast #1773180
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
#1773212
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 ;)
Gast #1773251
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
Gast #1774735
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren