0

これは私の以前の質問の繰り返しに見えるかもしれません。しかし、そうではないと思います。10 進数形式の信号を 2 進数形式に変換する手法を探しています。

ザイリンクス ライブラリの Simulink ブロックを使用して、10 進数をバイナリ形式に変換する予定です。

したがって、入力が 3 の場合、予想される出力は 11 (2 クロック サイクル) である必要があります。シリアルに取得される出力を探しています。

それを行う方法を教えてください。または、インターネット上のポインタが役に立ちます。

ありがとう

4

3 に答える 3

1

Matlab 変数を含む通常の定数ブロックを使用します。これにより、既に "通常の" バイナリで出力が得られます (そのプロパティを符号なしに設定し、2 進小数点を 0 に設定すると仮定します)。

次に、その入力を受け取り、それをシフトレジスタにラッチし、クロックサイクルごとに1回レジスタをシフトして、「最後に落ちた」ビットが出力ビットになる小さなシリアライザブロックを作成する必要があります。シフトの方向に応じて、MSB ファーストまたは LSB ファーストにすることができます。

並列ロードを行うかシフトを行うかを選択するには、通常のレジスタからシフト レジスタを構築し、各レジスタの前にマルチプレクサを構築する必要があります。(これは、VHDL では数行のコードですが、グラフィックスでは正しい方法です)。

シリアル レートを上げる必要がある場合は、より高速なクロックからクロックする必要があります。DCM を使用してこれを生成できます。

于 2011-06-20T08:48:08.103 に答える
1

その通りです。必要なのは、システム ジェネレーターからの並列から直列へのブロックです。
このドキュメントで説明されています。

http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/sysgen_ref.pdf

このブロックはレート変更ブロックです。詳細については、これらのドキュメントのパラレルからシリアルへのブロックの言及を確認してください。

http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/sysgen_gs.pdf

http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/sysgen_user.pdf

于 2011-06-29T22:06:16.320 に答える
0

Matlabにはdec2bin、10進数から2進数に変換する関数があります。したがって、たとえば、dec2bin(3)を返し11ます。

対応するbin2decもあります。これは、2進数の文字列を受け取り、10進数に変換するため、 。bin2dec('11')を返し3ます。

整数以外の10進数を2進数に変換する場合は、最初に、表現する最小の2進数を決定してから、前処理と後処理を少し組み合わせて実行します。 dec2binを使用して、探している結果を取得します。したがって、必要な最小の2進位が1/512位(または2 ^ -9)である場合、次のようにすることができます(binPrecisionは1/512に等しい)。

function result = myDec2Bin(decNum, binPrecision)

  isNegative=(decNum < 0);
  intPart=floor(abs(decNum));
  binaryIntPart=dec2bin(intPart);
  fracPart=abs(decNum)-intPart;
  scaledFracPart=round(fracPart / binPrecision);
  scaledBinRep=dec2bin(scaledFracPart);
  temp=num2str(10^log2(1/binPrecision)+str2num(scaledBinRep),'%d');                                                                                                                                                                        
  result=[binaryIntPart,'.',temp(2:end)];
  if isNegative
    result=['-',result];
  end
end

その場合、の結果はにmyDec2Bin(0.256, 1/512)なり0.010000011、の結果はにmyDec2Bin(-0.984, 1/512)なります-0.111111000。(出力は文字列であることに注意してください。)

于 2011-06-19T12:11:13.503 に答える