【问题标题】:Error (10818): Can't infer register for "E" at clk200Hz.vhd(29) because it does not hold its value outside the clock edge错误 (10818):无法在 clk200Hz.vhd(29) 处推断“E”的寄存器,因为它在时钟边沿之外不保持其值
【发布时间】:2013-12-07 11:55:46
【问题描述】:

我是 VHDL 的初学者。我想制作一个将 clk 除以 2 的除法器,因为输出 F 和 F 除以 2 应该是 E。当我想编译代码时,它总是向我显示这个错误:错误(10818):无法推断注册clk200Hz.vhd(29) 处的“E”,因为它不会在时钟边沿之外保持其值

感谢您的帮助

frequency_divider: process (reset, clk_in) begin
        if (reset = '1') then
            F <= '0';
                E <= '0';
            counter <= 0;
        else
                if rising_edge(clk_in) then
                    if (counter = 2) then
                        F <= NOT(F);
                        counter <= 0;
                    else
                        counter <= counter + 1;
                    end if;
                else
                E<=NOT(E);
                end if;
            end if;
    end process;

【问题讨论】:

    标签: compiler-errors vhdl divider


    【解决方案1】:

    当时钟上没有没有上升沿(暂时忽略重置)并且您没有指定时,您正在尝试为E 分配新值当时钟上升沿时,E 会发生什么。当复位未被断言时,看起来E 应该尽可能快地来回切换,除非在时钟边缘可能会发生其他事情。我无法想象你真正想要什么样的行为,编译器也无法想象。

    如果您需要边沿触发的触发器,则对该信号的分配必须在由rising_edge()falling_edge() 触发的条件语句中。这种条件的else 子句对于您打算合成的代码没有多大意义。

    你让这件事变得比它需要的复杂得多。我建议您运行一个模拟并观察counter 中的各个位。

    【讨论】:

      【解决方案2】:

      实际上编译器消息非常准确:您的赋值E &lt;= not E 超出了您检查时钟上升沿的if 子句。尝试将该赋值向上移动一行,并去掉空的 else 子句。

      【讨论】:

        【解决方案3】:

        Ricks 回答中描述了错误原因。

        为了减少您的设计,您可以跳过counter 以生成F,并简单地使用 E 持有将 E 除以 2 所需的附加状态。Joe Hass 在他回答的最后一条评论中暗示了这一点:

        frequency_divider : process (reset, clk_in)
        begin
          if (reset = '1') then
            F <= '0';
            E <= '0';
          elsif rising_edge(clk_in) then
            E <= not E;
            F <= (not F) when (E = '1') else F;
          end if;
        end process;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多