Eigentlich müsste die Operation c <= c+b*(a+d) c:48 Bit b:18 Bit a,d:25 Bit alle signed mit einem einzigen DSP48E1 Block realisiert werden können. Hat jemand von euch ein Beispiel, wo das geklappt hat ?
Kannst Du im IP-Katalog auswählen. DSP48 Macro ist das Stichwort. Gruß derLars
@Martin: Und was kommt bei dir raus? Hast du das schon mal ausprobiert? Gruß
reg signed [25-1: 0] inpA ; reg signed [25-1: 0] inpD ; reg signed [18-1: 0] inpB ; reg signed [48-1: 0] regC ; always @(posedge dac_clk_i) begin inpA <= inpA + 1 ; inpD <= inpD + 3 ; inpB <= inpB + 7 ; regC <= regC+(inpB*(inpA+inpD)) ; dac_o <= regC [ 48-1:48-14] ; end liefert 3 DSP48E1 Blöcke. Generierte Logik im Anhang... Eigentlich müsste der PreAdder das A+D schaffen. regC <= regC+inpB*inpA ; liefert nur einen DSP48E1 Block.
Und wenn du A und D jeweils ein Bit schmäler machst? Die Addition der beiden 25 Bit Werte liefert halt einen 26 Bit Wert, und das dafür reicht der Multiplizierer-Eingang eines einzelnen DSP48 ggf. nicht mehr aus.
Vielleicht eine "blöde" Frage zuerst: Verwendest du ein FPGA der 7er Serie, auch in Vivado? :) Ansonsten hast Du keine 25-bit-Eingänge zur Verfügung. Wenn ich einen Core im IP Katalog erstelle und diesen in ein Modul einbinde, wird auch nur ein DSP verwendet. Gruß derLars
Ich arbeite auf dem RedPitaya Board, in Vivado, das hat nen Zynq7010
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.