VHDL Simualtion结果差异

时间:2016-01-18 14:38:21

标签: vhdl simulation modelsim

我正在尝试模拟我的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;

1 个答案:

答案 0 :(得分:0)

从查看代码,我无法分辨。我建议编写一个测试平台并进行模拟(我使用modelsim)。通过这种方式,您将能够看到信号如何变化,而且您很可能会发现问题。