2017-11-12 6 views
0

以下のロジックを実装するゲートレベルの組み合わせ回路を設計したいと思う。 Adderを使わずにそれを行うことは可能ですか?組み合わせ回路:選択線がハイのときのみ2s補数を出力する

... 
input wire [3:0] in, 
input wire  sel, 
output wire [3:0] out 
... 

assign out = ({4{sel}} & (~in + 1)) | ({4{~sel}} & in); 

上記のVerilogコードは、-4インバータ、1全加算器、1マルチプレクサで実現されます。それをさらに最適化することは可能ですか?

考え方は、selを2の補数ロジックに組み込み、加算回路よりも少ないゲート数を消費するゲート回路を作り出すことです。本当に可能ですか?

+0

説明はどの言語ですか?正しいタグ(例: 'verilog'や' vhdl'など)を含めるように質問を編集してください。そしてMUXなしでやりたければ、そのタグを削除するべきでしょうか? –

+0

指摘してくれてありがとう。私は質問を編集しました。 – ashishdevre

+0

16の入力LUTを使って2の補数変換を行うことができます。私はそれと4bの加算器との間のゲートの違いを知ることは興味深いだろう。 – ajcrm125

答えて

0

カルノーマップを使用して、(〜in + 1)項だけを解いてみてください。あなたはK-マップを設定し、時間

// Input        Result 
// A B C D  --> ~{A B C D} --> ~{A B C D}+1 
// 0 0 0 0   1 1 1 1   0 0 0 0 
// 0 0 0 1   1 1 1 0   1 1 1 1 
// 0 0 1 0   1 1 0 1   1 1 1 0 
// 0 0 1 1   1 1 0 0   1 1 0 1 
// 0 1 0 0   1 0 1 1   1 1 0 0 
// 0 1 0 1   1 0 1 0   1 0 1 1 

で結果の1ビットのために解決した場合は...私はあなたがマップの残りの部分を書いてみましょうよ...しかし、いくつかの事はポップを開始しますでる。入力D は結果ビットCは、あなたには、いくつかのより多くのKのマップを行う場合、あなたはおそらく、論理式を見つけますC XOR入力D

入力のように見えるよう

結果ビットDは、常に同じです結果ビットAとBの場合

関連する問題