私はいくつかの場所でこの問題に遭遇しましたが、デザインエンティティ(この場合は4:1マルチプレクサ)から出力が得られない理由についての私の最も良い推測は、入力の1つが割り当てられていない(U)ということです。
したがって、このMuxが他の多くの構造に埋め込まれているふりをして、入力を強制することはできません。入力を強制することはできません。一部の構造では、何も駆動されない場合があります。
説明:入力0 = "111111111111111"
ただし、入力3 ="UUUUUUUUUUUUUUUU"
そして私が欲しいのはinput0(c0 = c1 = 0)を出力することだけなので、input3は論理的に重要ではありません
私はまだ得ます
output = "UUUUUUUUUUUUUUUU"(デフォルト値)
また、コンパイルや実行でエラーは発生しません。
コードは次のとおりです。
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY Mux4to1 IS
GENERIC (size : POSITIVE := 16); -- Size of the input
PORT (input0, input1, input2, input3 : IN std_logic_vector (size-1 DOWNTO 0);
output: OUT std_logic_vector (size-1 DOWNTO 0);
control0, control1 : IN std_logic );
END ENTITY Mux4to1;
--
ARCHITECTURE Behavior OF Mux4to1 IS
BEGIN
PROCESS ( input0, input1, input2, input3, control0, control1 )
BEGIN
IF (control0 = '0') THEN
IF (control1 = '0') THEN -- Enable 00
output <= input0;
ELSIF(control1 = '1')THEN -- Enable 10
output <= input2;
END IF;
ELSIF (control0 = '1') THEN
IF (control1 = '0') THEN -- Enable 01
output <= input1;
ELSIF(control1 = '1')THEN -- Enable 11
output <= input3;
END IF;
END IF;
END PROCESS;
END ARCHITECTURE Behavior;
この混乱を回避するために私は何ができますか?