Wieviele Addition pro Takt

OP #7662995
Lesenswert?

Bisher habe ich immer sehr strikt nur eine Addition pro Takt gemacht, also

Signal A1 , A2 , A3 , A4, A5: integer ; A1 <= A2 + A3;

Im Takt danach: A1 <= A1 + A4;

usw.

Nun habe ich mal synthetisiert: A1 <= A2 + A3 + A4 + A5;

Das geht auch, jedenfalls meldet mir die Synthese keine Probleme. Oder geht das schon gar nicht?

Wie kann ich herausfinden, wie viele Summanden noch in einem Takt berechnet werden können. Dann könnte ich die State-Machine verkürzen.

Ich habe einen Artix7 mit Vivado 2023.2, Wo finde ich da Timing Angaben für meine Additionen, oder Hinweise wenn evtl Probleme auftreten.

#7663034
Lesenswert?

Peter schrieb:

Nun habe ich mal synthetisiert: A1 <= A2 + A3 + A4 + A5;

Das geht auch, jedenfalls meldet mir die Synthese keine Probleme. Oder geht das schon gar nicht?

Du kannst auch 100 Zahlen in einem Takt addieren, nur braucht es dazu hat 100 Addierer, die alle kombinatorisch verknüft werden und dementsprechend lange Durchlaufzeiten haben.

Wie kann ich herausfinden, wie viele Summanden noch in einem Takt berechnet werden können. Dann könnte ich die State-Machine verkürzen.

Mit einem Blick auf die Timingangaben deines Symnthesetools. Dort gibt man übelichrweise die Taktfrequenz der sequentiellen Logik an, das Tool berechnet, wieviel real erreicht wird.

Ich habe einen Artix7 mit Vivado 2023.2, Wo finde ich da Timing Angaben für meine Additionen, oder Hinweise wenn evtl Probleme auftreten.

Im Timing-Report.

OP #7663128
Lesenswert?

Motopick schrieb:

Signal A1 , A2 , A3 , A4, A5: integer ; A1 <= A2 + A3;

Im Takt danach: A1 <= A1 + A4;

Erleuchtend koennte z.B. sein, dass zwischen den Zeilen ueberhaupt kein Takt vergeht. Ausser man sorgt mit "Gewalt" dafuer.

Ich habe meine State Machine mit den Zustandswechsel weg gelassen, um die Code-Schnipsel nicht aufzublähen.

Ist zwar Freitag, doch wollte ich eine Antwort, mit der ich am Montag weiter arbeiten kann. Die Trolle sind wohl heute unter den Antwortenden.

Danke an Falk.

#7663135
Lesenswert?

Peter schrieb:

Motopick schrieb:

Signal A1 , A2 , A3 , A4, A5: integer ; A1 <= A2 + A3;

Im Takt danach: A1 <= A1 + A4;

Erleuchtend koennte z.B. sein, dass zwischen den Zeilen ueberhaupt kein Takt vergeht. Ausser man sorgt mit "Gewalt" dafuer.

Ich habe meine State Machine mit den Zustandswechsel weg gelassen, um die Code-Schnipsel nicht aufzublähen.

Es haette die Darstellung eben nicht wesentlich aufgeblaeht, darauf im Code hinzuweisen.

Ein "Im Takt danach" kann auch ein Indiz fuer ein Verstaendnisproblem sein. Ich hoffe mal, dass dein Synthesetool das Auffinden der Addierer unterstuetzt. Das kann sonst muehselig werden.

Schoenes WE!

(Firma: Starfleet) #7663367
Lesenswert?

Ich habe einen Artix7 mit Vivado 2023.2, Wo finde ich da Timing Angaben für meine Additionen, oder Hinweise wenn evtl Probleme auftreten.

Im Timing-Report.

Für den timing-report muss auch die Implementierung durchgelaufen sein. Constraints setzen und sei es nur für die IO, wäre uch nicht schlecht, Synthese allein ist unzureichend.

Persönliche Seite #7663478
Lesenswert?

Peter schrieb:

Das Ding 'Ashenden' hat 909 Seiten. Wo finde ich da die Hinweise darauf?

Da das vom FPGA und der Breite abhängt, muss man in dessen datasheet schauen und die Frequenz, sowie die Addiererbreite (und damit Tiefe) berücksichtigen.

Als Beispiel funktioniert ein 2-Stufiger Addierer für 32 Bit und in einem Artix mit 100 MHz- allerdings "netto" für sich betrachtet.

Wenn Teile der Addition verteilt und mit anderen Sachen zusammengefasst sind, damit kleiner wird, aber auch stärker verteilt ist und obendrein der FPGA generell voll ist, geht das runter!

Ein einstufiger Adder, der auf ein Register geht und aus einem solchen gespeist wird, läuft aber durchaus locker auf 300 MHz, wenn es nicht gerade 64 Bit sind.

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