乗算に使用する複素共役の生成
2 つの連続する DSP58 にまたがる 18 ビット複素乗算器は、複素積を生成します。複素共役の生成の詳細とコーディング例は、DSP58 のアプリケーションの複素乗算器の例を参照してください。
OPMODE 制御
基本ファンクションと複素加算器 の右側の DSP58 と左側の DSP58 の図に示したように、X、Y、Z、W マルチプレクサーの動作は OPMODE によって制御されます (DSPCPLX 基本ブロックを構成する DSP58 の場合と同様。詳細はW、X、Y、および Z マルチプレクサー 参照)。
ここでは、OPMODE_RE と OPMODE_IM を使用して最終結果を求める方法について詳しく説明します。ここからの例では、CONJUGATE_RE=CONJUGATE_IM=1'b0 とします。これら信号にほかの値を代入した場合の影響に関する詳細は、DSPCPLX を使用した 18 x 18 複素乗算 の表を参照してください。
- X、Y マルチプレクサー: OPMODE_RE[3:0] = OPMODE_IM[3:0] = 4'b0101。
- この設定では、実数部と虚数部のマルチプレクサー出力がいずれも X および Y マルチプレクサーを経由して最終 ALU に入力されます。これによって必要な複素乗算が可能となるため、X および Y マルチプレクサーをほかの用途には使用できません。唯一の例外は、MACC 拡張アプリケーションです。MACC 拡張の式は、次の「Z マルチプレクサー」のセクションで説明します。詳細は、MACC の拡張 を参照してください。
複素乗算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = (ARE + j AIM ) (BRE + j BIM ) = (ARE × BRE - AIM × BIM ) + j (ARE × BIM + AIM × BRE ) |
9'b00_000_01_01 | 9'b00_000_01_01 |
- Z マルチプレクサー: PMODE_RE[6:4] = OPMODE_IM[6:4] = Kz。
- これらの制御信号に代入された値によって、ALU に送られる Z マルチプレクサー出力が決まります。次の表の「DSPCPLX 下位」と「DSPCPLX 上位」は、複素数モードにおける DSP カスケード接続構成を表します (このサブセクション最後の図を参照)。
複素乗算と加算の式 | OPMODE_RE | OPMODE_IM | |
---|---|---|---|
DSPCPLX 下位 |
PLRE + j PLIM = ( ALRE + j ALIM ) × ( BLRE + j BLIM ) ( ALRE × BLRE - ALIM × BLIM ) + j ( ALRE × BLIM + ALIM × BLRE ) |
9'b00_000_01_01 | 9'b00_000_01_01 |
DSPCPLX 上位 |
PURE + j PUIM = ( PURE + j PUIM + ( ( AURE + j AUIM ) × ( BURE + j BUIM ) ) = ( ( ALRE × BLRE + AURE × BURE ) - ( ALIM × BLIM + AUIM × BUIM ) ) + j ( ( ALRE × BLIM + AURE × BUIM + ALIM × BLRE + AUIM × BURE ) ) |
9'b00_001_01_01 | 9'b00_001_01_01 |
Kz: 2'b11 - RND: 現在の DSPCPLX の結果への加算。ダウンストリーム DSPCPLX (DSP 下位) の (DSP 上位) インスタンス |
複素乗算と累算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = (P*RE + j P*IM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( P*RE + ( ARE × BRE - AIM × BIM ) ) + j ( P*IM + ( ARE × BIM + AIM × BRE ) ) * = PRE および PIM レジスタに格納された値 |
9'b00_010_01_01 | 9'b00_010_01_01 |
Kz: 3'b010 - P: 出力の累算を実数部と虚数部に対して独立して実行。PREG = 1 とする必要がある。 |
複素乗算と加算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = ( CRE + j CIM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( CRE + ( ARE × BRE - AIM × BIM ) ) + j ( CIM + ( ARE × BIM + AIM × BRE ) ) |
9'b00_011_01_01 | 9'b00_011_01_01 |
Kz: 3'b011 - C: 実数部と虚数部に対して独立して加算される追加の複素数。 |
MACC 拡張の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = ( P*RE + j P*IM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( P*RE + ( ARE × BRE - AIM × BIM ) ) + j ( P*IM + ( ARE × BIM + AIM × BRE ) ) * = PRE および PIM レジスタに格納された値 |
DSPCPLX 下位 9'b00_010_01_01 DSPCPLX 上位 9'b00_100_01_01 |
DSPCPLX 下位 9'b00_010_01_01 DSPCPLX 上位 9'b00_100_01_01 |
Kz: 3'b100 - P: 出力の累算を実数部と虚数部に対して独立して実行。MACC 拡張用に設計された DSPCPLX カスケード接続では、上位 DSPCPLX が次の条件を満たす必要があります。
|
MACC 演算の使用の詳細は、MACC の拡張 を参照してください。
- W マルチプレクサー: OPMODE_RE[8:7] = OPMODE_IM[8:7] = Kw
- これらの制御信号に代入された値によって、ALU に送られる Z マルチプレクサー出力が決まります。
複素乗算と累算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = ( P*RE + j P*IM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( P*RE + ( ARE × BRE - AIM × BIM ) ) + j ( P*IM + ( ARE × BIM + AIM × BRE ) ) * = PRE および PIM レジスタに格納された値 |
9'b01_000_01_01 | 9'b01_000_01_01 |
Kw: 2'b01 - P: 出力の累算を実数部と虚数部に対して独立して実行。PREG = 1 とする必要がある。 |
複素乗算と加算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = (CRE + j CIM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( CRE + ( ARE × BRE - AIM × BIM ) ) + j ( CIM + ( ARE × BIM + AIM × BRE ) ) |
9'b10_000_01_01 | 9'b10_000_01_01 |
Kw: 2'b10 - C: 実数部と虚数部に対して独立して加算される追加の複素数。 |
複素乗算と加算の式 | OPMODE_RE | OPMODE_IM |
---|---|---|
PRE + j PIM = (RNDRE + j RND IM ) + ( ( ARE + j AIM ) × ( BRE + j BIM ) ) = ( RND + ( ARE × BRE - AIM × BIM ) ) + j ( RND + ( ARE × BIM + AIM × BRE ) ) |
9'b11_000_01_01 | 9'b11_000_01_01 |
Kw: 2'b11 - RND: コンパイル時に定義される追加の複素数パラメーターで、主に丸めに使用。パラメーターは実数部と虚数部に対して独立して加算。 |
ALUMODE 制御
ALUMODE は、最終 ALU によって実行される動作を制御します (詳細はALUMODE 入力の表を参照)。ALUMODE_RE は DSPCPLX の実数部の ALU によって実行される動作を制御し、ALUMODE_IM は虚数部の ALU によって実行される動作を制御します。
前の OPMODE のセクションで説明した主な演算 (複素乗算、複素乗算と累算、および複素乗算と加算) では、ALUMODE_RE = ALUMODE_IM = 4'b0000 とする必要があります。それ以外の場合、ALUMODE_RE ≠ ALUMODE_IM と設定することが必要になる場合があります。次に、動作の例を示します。
PRE + j PIM = ( CRE - j CIM ) + ( ( ARE + j AIM )× ( BRE + j BIM ) ) =
( CRE + ( ARE × BRE - AIM × BIM ) ) + j ( -CIM + ( ARE × BIM + AIM × BRE ) )
ポート | 説明 |
---|---|
OPMODE_RE = 9'b00_011_01_01 | Mux: X,Y = M |
Mux: Z = C | |
OPMODE_IM = 9'b00_011_01_01 | Mux: X,Y = M |
Mux: Z = C | |
ALUMODE_RE = 4'b0000 | PRE = ZRE + WRE + XRE + YRE + CINRE |
ALUMODE_IM = 4'b0001 | PIM = -ZIM + WIM + XIM + YIM + CINIM - 1 |
CIN_RE = 1'b0 | PRE = CRE + MRE |
CIN_IM = 1'b1 | PRE = -CIM + MIM |
(ALUMODE_IM の選択によって生じた -1 を CIN_IM = 1'b1 で補正) |
- 上で説明した OPMODE の選択を使用して、X、Y、Z、W マルチプレクサーの入力/出力の関係を定義する。
- ALUMODE 入力の表を参照し、前の手順で説明した式の X、Y、Z、W マルチプレクサーの出力値を置き換える。