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
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.
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
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 ;)
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
Wenn man das selber implementiert, ist man ggf. vom Hersteller unabhängig. (Und man sieht, wie es funktioniert.) Duke
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.