記事 ID: 000077859 コンテンツタイプ: 製品情報 & ドキュメント 最終改訂日: 2021/08/27

3 個の可変精度 DSP ブロックのみで 25 x 18 の複素乗算器を実装するにはどうすればよいですか?

環境

  • インテル® Quartus® II サブスクリプション・エディション
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    詳細

    Stratix® V、Arria® V、Cyclone® V を含むすべての 28nm デバイスファミリーは、3 つの可変精度 DSP ブロックを使用して、25x18 の複素乗算器構造をサポートできます。

    4 つの DSP ブロックを使用してこの構造を実装する Megacore® を使用する場合、Quartus® II ソフトウェアには制限があります。

    解決方法

    この制限を回避するには、Quartus® II ソフトウェア・テンプレートにある Complex 25x18 Multiply コードテンプレートを使用して、複雑な乗算器を推論してください。 このコードテンプレートを使用するには、まず新しいデザインファイルを開き、Quartus® II ソフトウェアで利用可能なテンプレートからこのテンプレートを選択する必要があります。 このテンプレートは、演算> DSP 機能 (Stratix-V、Arria-V、Cyclone-V) >フルデザインの Verilog または VHDL テンプレートにあります。

    利便性のために、この Verilog 用のコードテンプレートは以下のとおりです。

    Quartus® II Verilog テンプレート
    複素数 25x18 乗算
    Stratix V、Arria-V、Cyclone-V およびそれ以降のデバイスファミリーでの使用向け

    モジュール complex_25x18 (x_r, x_i, y_r, y_i, クロック, ena1, ena0, リセット, p_r, p_i);
    このテンプレートは、Stratix-V の複雑な 25x18 モードに適用できます。
    入力 [24:0] x_r。
    入力 [24:0] x_i。
    入力 [17:0] y_r。
    入力 [17:0] y_i;
    Stratix-V DSP は、最大 3 つのクロック / ena ペアと 2 つの非同期リセット信号をサポート
    入力クロック。
    input ena1;
    入力 ena0。
    入力リセット。
    出力 [43:0] p_r;
    出力 [43:0] p_i;

    すべての入力 / 出力に署名が必要です。
    すべての入力レジスターが同じ {clock, ena, reset} を使用する必要があります
    すべての出力レジスターが同じ {clock, ena, reset} を使用する必要があります
    reg 署名 [24:0] x_r_reg、x_i_reg;
    reg 署名 [17:0] y_r_reg、y_i_reg;
    reg 署名 [43:0] p_r、p_i;

    ワイヤーサイン [25:0] a1;
    ワイヤーサイン [18:0] a2。
    ワイヤーサイン [18:0] a3。
    ワイヤーサイン [43:0] p1;
    ワイヤーサイン [43:0] p2;
    ワイヤーサイン [43:0] p3。

    a1 = x_r_reg - x_i_regを割り当てます。
    p1 = a1 * y_i_regを割り当てます。
    a2 = y_r_reg - y_i_regを割り当てます。
    p2 = a2 * x_r_regを割り当てます。
    a3 = y_r_reg y_i_regを割り当てます。
    p3 = a3 * x_i_regを割り当てます。

    常に @(posedge clock または posedge reset)
    開始
    if (reset == 1\'b1)
    開始
    x_r_reg < = 0。
    x_i_reg < = 0。
    y_r_reg < = 0。
    y_i_reg < = 0。
    p_r < = 0。
    p_i < = 0。
    終わり

    開始
    if (ena0 == 1\'b1)
    開始
    x_r_reg < = x_r。
    x_i_reg < = x_i。
    y_r_reg < = y_r。
    y_i_reg < = y_i。
    終わり
    if (ena1 == 1\'b1)
    開始
    p_r < = p1 p2;
    p_i < = p1 p3;
    終わり
    終わり
    終わり

    エンドモジュール

    関連製品

    本記事の適用対象: 13 製品

    Stratix® V GX FPGA
    Cyclone® V GX FPGA
    Stratix® V GT FPGA
    Stratix® V GS FPGA
    Arria® V GZ FPGA
    Arria® V SX SoC FPGA
    Cyclone® V ST SoC FPGA
    Arria® V ST SoC FPGA
    Arria® V GX FPGA
    Arria® V GT FPGA
    Cyclone® V E FPGA
    Stratix® V E FPGA
    Cyclone® V SE SoC FPGA

    このページのコンテンツは、元の英語のコンテンツを人力翻訳および機械翻訳したものが混在しています。この内容は参考情報および一般的な情報を提供するためものであり、情報の正確さと完全性を保証するものではありません。インテルは不正確な翻訳があった場合でもいかなる責任を負いません。このページの英語版と翻訳の間に矛盾がある場合は、英語版に準拠します。 このページの英語版をご覧ください。