代码如下:
entity encoder_case is
port(
din : in STD_LOGIC_VECTOR(3 downto 0);
dout : out STD_LOGIC_VECTOR(1 downto 0)
);
end encoder_case;
architecture encoder_case_arc of encoder_case is
begin
encoder : process (din) is
begin
case din is
when "1000" => dout <= "00";
when "0100" => dout <= "01";
when "0010" => dout <= "10";
when "0001" => dout <= "11";
when others => dout <= "ZZ";
end case;
end process encoder;
end encoder_case_arc;
现在你希望这段代码不包括例如din为“0101”,“1010”等的情况。但是对于那些输入,dout分别产生“10”和“11”。为什么这样做? VHDL是否智能地为更高阶位提供更高的优先级?是否“知道”我们正在尝试在此处完成优先级编码器?
答案 0 :(得分:2)
“其他”下的所有情况都应该产生“ZZ”,除非另一个信号会驱动dout。我们确实需要您的测试平台和波形来澄清这一点。
至于你的其他问题:在一个案例中没有优先权,不是在选项顺序方面,当然也不是在高位/低位的意义上。
它肯定不会“知道”你想做什么。你得到的就是你一如既往地写的......可能只需要一些时间来理解你有时写的是什么。