Forum: FPGA, VHDL & Co. Xilinx DSP48 Operation c<=c+b*(a+d)


von Martin O. (ossi-2)


Lesenswert?

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 ?

von Der L. (vhdl-neuling)


Lesenswert?

Kannst Du im IP-Katalog auswählen. DSP48 Macro ist das Stichwort.

Gruß
derLars

von Valko Z. (hydravliska)


Lesenswert?

@Martin: Und was kommt bei dir raus? Hast du das schon mal ausprobiert?

Gruß

von Martin O. (ossi-2)


Angehängte Dateien:

Lesenswert?

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.

von Achim S. (Gast)


Lesenswert?

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.

von Der L. (vhdl-neuling)


Lesenswert?

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

von Martin O. (ossi-2)


Lesenswert?

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
Noch kein Account? Hier anmelden.