2017-03-02 15 views
0

2つの8ビット入力が比較器に供給され、最初のものが2番目より大きい場合は減算されるはずです。しかし、>と<演算子はそれらを比較するために使用されることは想定されていません。 だから、私のように私のロジック記述されています:差が0に等しい場合を除き、私は分裂を使用している場合、それは常に減算さVerilogの比較演算子を使用しない2つの数値の比較

input[7:0] in1,in2; 
output select; 
assign select=(in1-in2)?0:1; 

を、0を入力することはできませんか、私のプログラムがクラッシュすることができます。どのようにこの問題を解決するための任意の提案?

ありがとうございます。

答えて

2

負の数値の左端のビットは1であることを覚えておいてください。これを使って差の符号を確認することができます。

input[7:0] in1,in2; 
output select; 
wire [7:0] difference = in1-in2; 
wire sign_of_difference = difference[7]; 
assign select = sign_of_difference? 0:1; 
+0

ありがとうございました。しかし、なぜこの作品と私が使ったロジックはどうでしたか?ワイヤーやサイズのマッチが違いますか? – ZealousCoder

+1

あなたはZealousCoderを歓迎します。 'assign select =(in1-in2)?0:1;'では、in1-in2は8ビットの値です。 '(in1-in2)? '演算は、この8ビット減算の結果がゼロより大きいかどうかを比較し、' in1-in2'がゼロの場合にのみ0を返します。あなたの問題を解決すると思ったら答えを受け入れてください。 –

関連する問題