我正在尝试模拟我的VHDL代码。由于位q(0降至0)和q1(0降至0)具有某些值,似乎存在差异,但是当我将它们分配给新向量时,它们具有不正确的值(在同一循环中){{ 3}}。由于我的下一个状态逻辑取决于这两个位,因此结果是不正确的。
这里,r和t分配给q(0 downto 0)和q1(0 down to 0),如代码所示。在示例中,r应该取值1,因为q [0]是1。但结果是0。
我想知道这个问题的原因是什么?
when S0 => state <= S0;
funct <= '0';
load_m <= '0';
load_a <= '0';
load_q <= '0';
load_q1 <= '0';
shift <= '0';
dc <= '0';
rst_counter <= '0';
rst_shifter <= '0';
done <= '0';
--q0 <= to_bit(q(0 downto 0));
--q11 <= to_bit(q1);
r <= q(0 downto 0);
t <= q1(0 downto 0);
if ( (q(0 downto 0) = "1" and q1(0 downto 0) = "1") or (q(0 downto 0) = "0" and q1(0 downto 0) = "0")) then
next_state <= S4;
elsif (q(0 downto 0) = "0" and q1(0 downto 0) = "1") then
next_state <= S2;
elsif (q(0 downto 0) = "1" and q1(0 downto 0) = "0") then
next_state <= S1;
end if;
答案 0 :(得分:0)
从查看代码,我无法分辨。我建议编写一个测试平台并进行模拟(我使用modelsim)。通过这种方式,您将能够看到信号如何变化,而且您很可能会发现问题。