5

これは少しトリッキーですが、私が思うに、タスクをこなせる人にとっては素晴らしい挑戦です。そして、以前に尋ねられたすべての質問を検索しましたが、必要なものが見つかりませんでした.

ここでの目的は、 2進数nビットに書き込まれた2 つの整数が与えられた場合、各整数の n ビットに対して論理演算 (AND、OR、...) のみを使用して最大のものを見つけることです (最初の整数の場合、結果は 0 になります)。 integer が最大で、そうでない場合は 1 です)。最終的には、2*n ビットが張力の有無にかかわらずワイヤである電子回路を描画し、論理演算を実行する実際の電子部品にワイヤを接続できるようにすることを目的としています。

この問題について考え始めたのは、何が起こっても (つまり、n が何であれ)、2^n は 2^0 + ... + 2^(n-1) より大きい (数学的に言えば、簡単に思いつく) ということです。つまり、他の整数の対応するビットが 0 で、n と k の間の他のすべてのビット (k の左にあるすべてのビット) が同一の場合に、1 であるビット (たとえば、番号 k) を持つ整数が最大であることを意味します。例 :

A : 010(1)1011 は、B : 010(0)1111 よりも大きく、有効ビットは括弧内にあります。その左側のすべてのビットは同一であり、他のビットを気にする必要はありません。

したがって、ビットのすべてのペアに対して排他的論理和 (XOR) を実行できます。重要なビットは 1 を生成し、その XOR の結果を使用して A の対応するビット間で NAND を実行できるため、 A の k 番目のビットが 1 の場合は 0、B の k 番目のビットが 1 の場合は 1 です。それらは異なる場合があります(したがって、XORを実行すると1が返されます)が、それを無視する必要があります...何かアイデアはありますか?

4

5 に答える 5

2

あなたはハードウェアの実装に関心があるので、符号付きNビット整数として扱う方が良いAと思います。B

  1. Bその-B表現に反転します。
  2. Nビット全加算器で合計Aします;B
  3. 結果の符号を2入力Nビットマルチプレクサのセレクタ変数として使用します。

もちろん、論理関数だけで表現できます

3番目のポイントについてさらに詳しく説明すると、符号S(1:負、0:正)をチェックするだけで、述語が満たされB>Aます。したがって、セレクター値0のマルチプレクサーによって取得された入力がA(およびセレクター値1のB)である場合、結果が得られます。平等の場合でも、を選択Aしますが、A=Bどちらを選択するかは論理的に無関係です。

A変数とB変数であるため、加算器を再利用して加算できるため、これが最も賢明な方法です。最大値をチェックする特定のケースの最適化は確かに可能だと思います。

追加コメント:

の各桁を段階的にチェックし、最悪の場合、結果を返すためにチェックを要求することAB苦しむ順次実装を強調することが重要です。とNの値のストリームが2つある場合は、それらに対応できることを保証する必要があります。したがって、max()関数のロジックは、データストリームの頻度で機能する場合があります。別の観点から見ると、データがmax()ロジックに送られる速度を遅くする必要があります。ABN

それどころか、私が提案した組み合わせの実装(またはその最適化)は、速度とハードウェアリソースのトレードオフです。言い換えると、とのデータを生成できるのと同じくらい高速AですB。組み合わせ実装の伝搬遅延も、通常、順次実装と比較して高くなりますが、頻度の観点からは問題になりません。

于 2012-05-26T15:47:27.487 に答える
0

数値の 1 つが 0 になるまで、バイナリ AND の 2 番目の演算子に数字を追加して、2 つの数値 (それらをaおよびbと呼びましょう) を反復処理します...

数字の1つが0で、もう1つが> 0の場合、2つの最大値があります...

1 回目のループ:

a & 1 b & 1

2 番目のループ:

a & 10 b & 10

3 番目のループ:

a & 100 b & 100

等々...

操作の後で数値の 1 つがゼロに等しいかどうかを確認するには (既知の数値の長さ n が与えられた場合)、最上位 n+1 位置で n 倍のゼロに 1 を加えた数値を使用して and を作成します。 ..

私の2(多分間違っている)セント:)

于 2012-05-26T15:36:22.127 に答える
0

あなたがやりたいことをするICがあります.1つの例はcmos 4063です.このICは4ビットの数値しか比較できませんが、複数のデバイスをカスケード接続することで拡張の可能性を提供します.

興味のあるものが自分で実装するロジックである場合は、ロジックの図があるデータシートhttp://www.intersil.com/content/dam/Intersil/documents/fn33/fn3318.pdfを見ることができますコンパレータの

于 2012-06-06T09:34:47.083 に答える