2016-11-21 5 views
1

Truth tableVHDLの真理値表でエラーが発生しました

My code

私はカルノー図を算出したが、自分のコードが正しくありません。私はエラーが発生しています: "D = '1'のエラーC = '0' B = '1' A = '0'予想O = '1'、受信O = '0'"。

私は間違いを犯していますか?

library IEEE; 
use IEEE.std_logic_1164.all; 
entity truth_table is port( A,B,C,D : in std_logic; 
           O  : out std_logic); 
end truth_table; 

architecture behavior of truth_table isbegin 

O <= (((not A) and C and D) or ((not D) and B and C) or (A and (not C) and D) or (A and C and (not B))); 
end behavior; 
+0

リンクされた画像としてコードを投稿することは避けてください。あなたの質問の中にコードをうまくテキストとして表示することができます。 – Tome

+0

コードが真理値表を複製していない場合は、Kマップでエラーが発生したためです。あなたはこれを示していないので、あなたが間違ったことを言うことはできません!個人的には、これを簡単に逆出力で処理し、最後に方程式全体を反転させることができました。これは、4つの積を6の代わりに合計にします。 –

+0

私の過ちは、積の和を少なくしませんが、アプリケーションにとって重要な場合は、ゲート入力を少なくします。 –

答えて

0

あなたの信号「O」の右側の論理式が間違っている、それは次のようになります。

O <= (((not D) and B and A) or ((not A) and C and B) or (D and (not B) and A) or (D and B and (not C))); 

http://www.32x8.com/var4.htmlを参照して、それを自分でしようとしたが、列の順序がより反対であることに注意してくださいあなたの真理の表で

+0

私は同じサイトを使用しましたが、列の順序が反対であり、いつも間違った結果を得ていたことに気付きませんでした。 – Ninalol

+0

"not"はここで最高の演算子優先度を持ちます。あなたは括弧をつける必要はありません。 '(not D)'は 'not D'と表現することができます。 IEEE Std 1076-2008 9.2演算子、9.2.1一般、演算子のリストを参照してください。 – user1155120

関連する問題