Artikel-ID: 000077859 Inhaltstyp: Produktinformationen und Dokumente Letzte Überprüfung: 23.04.2013

Wie implementiere ich einen 25x18 komplexen Multiplikator in nur 3 Varialbe-Precision DSP-Blöcken?

Umgebung

  • Intel® Quartus® II Anmeldungs-Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Beschreibung

    Alle 28-nm-Gerätereihen, einschließlich Stratix® V, Arria® V und Cyclone® V, können eine komplexe 25x18-Multiplikatorstruktur mit 3 DSP-Blöcken mit variabler Präzision unterstützen.

    Bei der Quartus® II Software besteht eine Einschränkung, wenn der Megacore® verwendet wird, der diese Struktur mit 4 DSP-Blöcken implementiert.

    Lösung

    Um diese Einschränkung zu umgehen, verwenden Sie die Complex 25x18 Multiply Code-Vorlage, die in den Quartus II Software-Vorlagen zu finden ist, um Ihren komplexen Multiplikator zu inferieren.  Um diese Code-Vorlage zu verwenden, müssen Sie zunächst eine neue Designdatei öffnen und dann diese Vorlage aus den in der Quartus II Software verfügbaren Vorlagen auswählen.  Diese Vorlage finden Sie in den Verilog- oder VHDL-Vorlagen unter Volldesigns > arithmetischen > DSP-Funktionen (Stratix-V, Arria-V und Cyclone-V).

    Diese Code-Vorlage für Verilog ist zu Ihrer Bequemlichkeit unten:

    Quartus II Verilog Vorlage
    Komplexes 25x18 Multiplikator
    Zum Einsatz mit den Stratix V-, Arria-V-, Cyclone-V- und neueren Gerätereihen

    Modul complex_25x18(x_r, x_i, y_r, y_i, Takt, ena1, ena0, Reset, p_r, p_i);
    Diese Vorlage gilt für den komplexen 25x18-Modus auf Stratix-V
    Eingabe [24:0] x_r;
    Eingabe [24:0] x_i;
    Eingabe [17:0] y_r;
    Eingabe [17:0] y_i;
    Stratix-V DSP unterstützt bis zu 3 Takt-/Ena-Paare und 2 async-Reset-Signale
    Eingabetakt;
    Eingabe ena1;
    Eingabe ena0;
    Eingabe-Reset;
    Ausgabe [43:0] p_r;
    Ausgabe [43:0] p_i;

    Alle Ein-/Ausgänge müssen unterzeichnet sein.
    Alle Eingaberegister müssen den gleichen {clock, ena, reset}
    Alle Ausgaberegister müssen den gleichen {clock, ena, reset}
    reg unterzeichnet [24:0] x_r_reg, x_i_reg;
    reg unterzeichnet [17:0] y_r_reg, y_i_reg;
    reg unterzeichnet [43:0] p_r, p_i;

    kabelsigniert [25:0] a1;
    Kabelsigniert [18:0] a2;
    Kabelsigniert [18:0] a3;
    Drahtsigniert [43:0] p1;
    drahtsigniert [43:0] p2;
    drahtsigniert [43:0] p3;

    assign a1 = x_r_reg - x_i_reg;
    assign p1 = a1 * y_i_reg;
    assign a2 = y_r_reg - y_i_reg;
    assign p2 = a2 * x_r_reg;
    assign a3 = y_r_reg y_i_reg;
    assign p3 = a3 * x_i_reg;

    always @(posedge clock oder posedge reset)
    Beginnen
    wenn (reset == 1\'b1)
    Beginnen
    x_r_reg < = 0;
    x_i_reg < = 0;
    y_r_reg < = 0;
    y_i_reg < = 0;
    p_r < = 0;
    p_i < = 0;
    Ende
    oder
    Beginnen
    if (ena0 == 1\'b1)
    Beginnen
    x_r_reg < = x_r;
    x_i_reg < = x_i;
    y_r_reg <= y_r;
    y_i_reg < = y_i;
    Ende
    if (ena1 == 1\'b1)
    Beginnen
    p_r < = p1 p2;
    p_i < = p1 p3;
    Ende
    Ende
    Ende

    Endmodule

    Zugehörige Produkte

    Dieser Artikel bezieht sich auf 13 Produkte

    เอฟพีจีเอ Stratix® V GX
    เอฟพีจีเอ Cyclone® V GX
    เอฟพีจีเอ Stratix® V GT
    เอฟพีจีเอ Stratix® V GS
    เอฟพีจีเอ Arria® V GZ
    Arria® V SX SoC-FPGA
    Cyclone® V ST SoC-FPGA
    Arria® V ST SoC-FPGA
    เอฟพีจีเอ Arria® V GX
    เอฟพีจีเอ Arria® V GT
    เอฟพีจีเอ Cyclone® V E
    เอฟพีจีเอ Stratix® V E
    Cyclone® V SE SoC-FPGA

    Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte eine Diskrepanz zwischen der englischsprachigen Version dieser Seite und der Übersetzung auftreten, gilt die englische Version. Englische Version dieser Seite anzeigen.