4

本当に2つの質問ですが、もっと説明的にしたいと思います:

複雑なベクトルの行列乗算を含む変調器を実装しています:

例を挙げると:

cck_encoding_table(1,:)= [  1j  1  1j -1  1j  1 -1j  1 ];
cck_encoding_table(2,:)= [ -1j -1 -1j  1  1j  1 -1j  1 ];
cck_encoding_table(3,:)= [ -1j  1 -1j -1 -1j  1  1j  1 ];
cck_encoding_table(4,:)= [  1j -1  1j  1 -1j  1  1j  1 ];

基本的に、これを Simulink (Xilinx) で、最終的にハードウェアで実装する必要があります。

cck_n_code=exp(1j*Phi1)*cck_encoding_table(index+1,:);

私の質問は、複雑なベクトルを使用して行列乗算をモデル化する方法です。私の理解は、Complex Multiplierを使用することです。しかし、それは2つの複素ベクトルのみを乗算することです

1 つのクロックで 2 つ以上の複素数ベクトルを乗算する必要がある場合、それは可能です。

モデル自体のような答えは期待していませんが、問題を解決するためのアプローチ/方向性があれば

読んでくれてありがとう、キラン

4

1 に答える 1

4

行列の乗算から得られる低レベルの方程式を書き出すだけです。出力の各要素は、入力ベクトルと行列からの要素の乗算のコレクションを合計した結果になります。

高速に実行する必要がある場合は、必要な数の複雑な乗算器と加算器を配置し、入力要素をそれらに接続します。これにより、すべての出力が一度に得られ、すべての入力を一度に利用できるようにする必要があります.

または、入力をメモリ ブロック (または、ベクトル用に 1 つ、行列用に 1 つ) に入力し、適切な順序で要素を反復処理するために正しいアドレスをそのメモリ ブロックに供給するロジックを配置します。これらの入力は複素乗算器に送られ、次に複素アキュムレータに送られます (加算器とリセット可能なレジスタからモデル化する必要がある場合があります)。制御ロジックは、このアキュムレータを定期的にリセットする必要があります。

アキュムレータの出力は、次のステージに供給するか、別のメモリ ブロック (管理するロジックを制御するための別のアドレス) に格納できます。

エンコーディング テーブルが常にセット (1,-1,j,-j) からのみの要素を持つ場合は、完全に表現された複素数全体を格納するのではなく、これらを 2 ビットとしてエンコードし、カスタム ロジックを記述することができます。これは、この事実を利用して、汎用の乗算器よりもはるかに単純な複素乗算器を作成します。

于 2011-05-10T14:35:03.170 に答える