Ich realisiere digitale Filter mit dem Red Pitaya. Dabei werden verschiedene Einheiten des Zynq7010 gebraucht: LUT,CARRY4,DSP48,... Gibt es irgendwo Infos darüber, wie schnell die einzelnen funktionellen Einheiten des FPGAs sind? Ich möchte damit im vorhinein abschätzen, ob ein Design realisierbar ist.
Siehe hier: http://www.xilinx.com/support/documentation/data_sheets/ds187-XC7Z010-XC7Z020-Data-Sheet.pdf Gruß Marius
Vielen Dank, das hilft mir schon mal weiter. Aber ich habe noch keine Info über die carry-chain CARRY4 gefunden, oder ist das in anderen Angaben versteckt?
Ich denke nicht dass du dazu Informationen finden wirst. Am Ende des Routings wird dir Vivado dann sagen ob das Timing passt oder nicht. Ich habe mir das ganze schon mal sehr genau zu Gemüte führen müssen. Meiner Erfahrung nach benötigt die Signalpropagation durch ein CARRY4 im Mittel 50 ps (Kintex-7 Speedgrade -2). Gruß
Im og Datasheet findest du alle Daten, schau mal unter CLB-Specs nach. Ausrechnen für konkrette Fälle musst du es aber selbst.
@Sigi: In Tabelle 62 finde ich keine Angaben über die Signale CIN und COUT. Bin ich zu doof? @S.N. Ist 50ps der delay von CIN nach COUT (über 4 Stufen hinweg) oder der delay eines Summensignals durch den Block hindurch? Wie würdet Ihr versuchen experimentell den Delay eines CARRY4 Blocks zu ermitteln?
50 ps ist die Zeit von CO(3) bis CO(3) des nächsten CARRY4 in der Kette. Ich habe das damals im Rahmen einer TDC Implementierung gemacht. Experimentell kannst du es herausfinden indem du eine lange Carrychain implementierst, mit einem bekannten Takt abtastest und dir anschaust wie weit eine Signalflanke in einer Taktperiode durch die Kette propagiert ist.
Dann würde ein 400 Bit Addierer aus 100 CARRY4 Stufen ganz grob 100*50ps=5ns brauchen?
Du kannst davon ausgehen, dass das mehr Zeit benötigt. Ein Addierer besteht ja aus mehr Logik als einer Carrychain (und schon drei mal bei 400 Bit). Zudem wird der PAR Algorithmus sicherlich nicht so effizient sein wie ein manuell geplacetes Design. Wenn es nur das ist, empfehle ich dir es einfach mal mit sehr engem Timing auszuprobieren und zu schauen was die Timinganalyse dir sagt.
Es macht bei einem FPGA im Allgemeinen wenig Sinn, mit den Delays einzelner Funtionseinheiten zu rechnen, weil ein erheblicher Teil der Zeit auf die Routing-Ressourcen fällt. Es ist besser, wenn Du entsprechend strenge Timing-Constraints vorgibst und es Vivado überlässt, das Timing zu erreichen. Wenn das nicht hinhaut, gibt es viele Schrauben, an denen Du drehen kannst (Pipelineregister, Effort-Levels, Parallelisierung, Placement-Constraints etc, siehe Constraints Guide). Die Critical-Path-Analyse ist nicht Deine Aufgabe, sondern die der Tools.
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.