Weltbester FPGA-Pongo schrieb im Beitrag #4934706:
> Wenn die Signale, oder deren Zustand identisch ist, erkennt das die
> Synthese und optimiert es weg.
Nur, wenn auch das Zeitverhalten wirklich identisch ist oder infolge der
Optimierung etwas derartiges rauskommt. Wenn man das ungeschickt
ansteuert, haben Signale mitunter dieselben Werte, können aber nur über
die time domain hinweg wegoptimiert werden. Das hat man regelmäßig bei
pipelines mit Zählerständen unterschiedlicher Module: Man kann dann
sehen, dass das Hinzufügen von irgendwelchen verzögerten Signalen nicht
zu einem Mehr an Flächenverbrauch führt, weil diese Signale in der
Zeitebene schon existieren.
> Wenn anders herum, das ein Ram ergibt, das sich zu implementieren lohnt,
> wird die Synthese das auch erkennen.
Das kommt aber auch ein wenig auf die Beschreibung an. Man kann das
ungeschickt beschreiben, sodass es die Synthese nicht kapiert.
Es gibt aber noch einen Rettungsanker:
Auch die Kombinatorik, die nach der Synthese als normale LUT über
bleibt, kann per "Dekret" mit dem Mapper ins BRAM verfrachtet werden.
Heisst so ähnlich wie "Move slice logic into unsused block rams" oder
so.
Peter schrieb:
> Im Grunde ist es ein Modul, welches 5 mal instanziert wird und jedes das
> gleiche macht (5 Kanäle). Jede Instanz wird mit 100kHz aufgerufen und
> durchläuft einmal.
Sowas kann man als state machine schreiben, die mit gemultiplexten Daten
arbeitet. Das kann man sehr einfach lösen, indem man die fsm kapselt.
Man kann es auch so machen, dass die fsm ausgerollt wird und parallel
mehrere fsm state unabhängig abarbeiten kann. Das ist aber sehr
aufwändig und nur nötig, um die maximale Bandbreite zu generieren.