Ich möchte/muss abschätzen, ob ich ein asynchrones DSP Design in einen FPGA hineinbekomme, bzw in welchen. Es stehen aber generell viel zu wenige Multiplier zu Verfügung. Das Design erfordert aber viele kleine Multiplikationen, die sich sehr gut parallel in Teilergebnissen nutzen lassen, daher muss es in den FPGA, der dann entsprechend langsam rechnen darf. Daher will ich prüfen, wie schnell mehrere parallele Architekturen rechnen können, die nur auf fabric logic basieren. Wie kann ich die Xilinx-Synthese dazu bewegen, keine DSP-Elemente zu verwenden, sondern sie in fabric logic aufzubauen? Ich habe in den Syntheseeinstellungen die "utilization ratio" der DSPs auf 0 gestellt und trotzdem baut er mir für meinen kleinen Testblock 8 DSP48-Elemente ein. Die Umstellung auf "-1", was auch geht, bringt keinen Erfolg. Weitere Möglichkeiten habe ich nicht gefunden. Die global constraints stehen alle auf "area".
Vielleicht hilft es als Workaraound eine Dummy-Logik einzubauen, die alle DSP48 belegt? Und gab es nicht mal ein Constraint, womit man einstellen kann, wie der Multiplizierer realisiert wird? --> MULT_STYLE = pipe_lut BTW ist es nötig, das Deine Multiplikationen parallel ablaufen? Der Original-DSP kann doch auch nicht (massiv) parallel Multiplizieren, oder? Duke
Bei den Systhese-Optionen gibt noch "HDL Option" als Kategorie links, da kann man bei -use_dsp48 auch auf "No" stellen, dann werden keine mehr eingebaut.
Hallo Christian, ja das habe ich gefunden und es klappt! Bestens! Vielen Dank. Leider habe ich nun auch das Ergebnis dieses Versuchs: Der FPGA wird schon mit einer mickrigen Rechenarchitektur zu 10% vollgeknallt. Ich schätze, dass sich das wurzelförmig fortsetzt, bei meinen Rechenblöckchen. Das wäre dann ein K.O.! Man schauen ... Werde mich sicherheitshalber mal nach einer anderen Lösung umschauen: Mehrere billige FPGAs mit möglichst vielen DSPs. Es gab doch mal einen Spartan 3A DSP oder so...
Du könntest die DSPs höher takten als den Rest des Designs und mehrere Multiplikationen mit je einer DSP Einheit abdecken.
Frank Petelka schrieb: > Werde mich sicherheitshalber mal nach einer anderen Lösung umschauen: > Mehrere billige FPGAs mit möglichst vielen DSPs. Es gab doch mal einen > Spartan 3A DSP oder so... Spartan-3A DSP gibt es nur in groß und sehr groß. Eventuell auch mal die neueren Familien anschauen? Artix-7 z.B. scheint schon so mehr DSP-Blöcke zu haben. Eventuell dann mal andere Implementationen anschauen. Z.B. kann man Blockrams für Multiplizierer verwenden (siehe AN306 von Altera - gibt es sicher auch bei Xilinx). Du solltest vielleicht auch einmal etwas mehr über dein Design erzählen (wieviele, wie breit, wie schnell usw.).
Grendel schrieb: > Du könntest die DSPs höher takten als den Rest des Designs und mehrere > Multiplikationen mit je einer DSP Einheit abdecken. Schwierig! Die Synthese vermeldet bei den aktuellen MULs in Echtzeit bereits, ich möge doch einige Register hinzufügen. Ok, kann man natürlich machen. Mike schrieb: > Spartan-3A DSP gibt es nur in groß und sehr groß. Naja, wenn es halt so ist ... > neueren Familien anschauen? Artix-7 z.B. scheint schon so mehr > DSP-Blöcke zu haben. Artix gibt es nur in teuer und sehr teuer :-) > Eventuell dann mal andere Implementationen anschauen. Z.B. kann man > Blockrams für Multiplizierer verwenden Schon probiert. "move unused slice logic into BRAMS" das läsuft dann in Sachen Multiplikation auf Soft-LUTs hinaus und das wird dasselbe sein, wie eine Soft-MUL. Leider habe ich nicht so viele BRAMs über. > Du solltest vielleicht auch einmal etwas mehr über dein Design erzählen > (wieviele, wie breit, wie schnell usw.). Geht leider nicht, INTERNA!
Frank Petelka schrieb: > Schwierig! Die Synthese vermeldet bei den aktuellen MULs in Echtzeit > bereits, ich möge doch einige Register hinzufügen. > Ok, kann man natürlich machen. Gar nicht so schierig, das ist genau das was man macht. Inneren Schweinehund überwinden, das gepipelinete System auf Papier aufzeichenen (Multiplier mit Registern, Datenpfad) und dann umsetzen. Wenn alles gut aufgeht, liefert Dir jeder Multiplier pro Zyklus ein Resultat, und die Anfangslatenz wegen der Pieplinestufen mindert die Performance kaum (ausser Du hast sehr kleine Datensets).
Frank Petelka schrieb: > Ich möchte/muss abschätzen, ob ich ein asynchrones DSP Design in einen > FPGA hineinbekomme, bzw in welchen. Es stehen aber generell viel zu > wenige Multiplier zu Verfügung. Das Design erfordert aber viele kleine > Multiplikationen, die sich sehr gut parallel in Teilergebnissen nutzen > lassen, daher muss es in den FPGA, der dann entsprechend langsam rechnen > darf. Hallo, Der Cyclone V hat einen "variable precision DSP Block". Dieser Block enthält einen 27x27 Bit Multiplizierer. Variable Precision heißt nun, dass man daraus auch 4 9x9 Multiplizierer machen (lassen) kann. Tom
x9 ist definitiv zu klein, aber 18x18 passt schon. Im Xilinx nutze ich die 18x25 und belege dabei jeweils einen. Beim C5 wäre es aber auch einer, oder macht der aus dem Rest von zu 2/3 belegten wieder einen Neuen?
Frank Petelka schrieb: > oder macht der aus dem Rest von zu 2/3 belegten wieder einen > Neuen? Davon würde ich nicht ausgehen. Da hilft nur probieren. Tom
Werde ich bei Gelegenheit mal austesten, ja. Momentan kommt aber eh kein Wechsel auf Altera infrage.
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.