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.
Gast
#4347245
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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.