【发布时间】:2017-04-17 21:24:53
【问题描述】:
我正在尝试将计数值 (std_logic_vector) 与定义的十六进制值进行比较。但我没有像下面那样得到结果
signal count : STD_LOGIC_VECTOR(res_bits-1 DOWNTO 0):= x"0000"; --res_bits =16
signal round : STD_LOGIC_VECTOR(res_bits-1 DOWNTO 0):= x"0000";
signal cnt : STD_LOGIC_VECTOR(res_bits-1 DOWNTO 0):= x"0000"; --res_bits =16
process(clk_50)
begin
if (falling_edge(clk_50)) then
t(1)<=t(0);
t(0)<=A;
t(3)<=t(2);
t(2)<=B;
case (temp) is
when "0001" => cnt<= cnt + '1';
when "0010" => cnt<= cnt - '1';
when "1000" => cnt<= cnt + '1';
when "1011" => cnt<= cnt - '1';
end case;
count <= cnt;
if (count = x"0320") then --if count 800
round <= round + '1';
cnt <= x"0000"; -- reset cnt
count <= x"0000"; -- reset count
end if;
end if;
end process;
【问题讨论】:
-
请编辑您的问题,使其具有minimal reproducible example 并提供更好的问题解释。
-
您确实意识到不同大小的 std_logic_vectors 上的相等运算符被定义为始终返回 false,对吧?
-
不,你还没有添加其余的代码。请提供Minimal, Complete, and Verifiable example。您正在询问任何可以帮助您击中移动目标的人,从而逐渐增加更多信息。去掉 count,使用 cnt 并与 799 进行比较。
-
我已回滚您的最新编辑。在您提出最初的问题几周后,请不要对代码进行大量编辑。阅读here 你能做什么和不能做什么。如果您对新代码仍有疑问,请提出新问题。
-
你能解释一下你最近的编辑吗???它没有为这个问题增加任何价值......你为什么要努力?
标签: if-statement hex vhdl intel-fpga