当前位置:  开发笔记 > 编程语言 > 正文

信号temp2无法合成,同步描述错误

如何解决《信号temp2无法合成,同步描述错误》经验,为你挑选了1个好方法。

VHDL必须遵循一些综合工具特定的编码准则,该工具才能将VHDL代码转换为FPGA实现。为了实现到具有异步复位的触发器,样式可以是:

process (clk, rst) is
begin
  -- Clock
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
  -- Asynchronous reset
  if rst = '1' then
    ... -- Update at reset
  end if;
end process;

就您的代码而言,您似乎没有使用异步重置,因此模板可以简化为:

process (clk) is
begin
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
end process;

现在,练习是使您的代码适合该模板,但是很遗憾,很难根据提供的代码确定确切的意图。



1> Morten Zilme..:

VHDL必须遵循一些综合工具特定的编码准则,该工具才能将VHDL代码转换为FPGA实现。为了实现到具有异步复位的触发器,样式可以是:

process (clk, rst) is
begin
  -- Clock
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
  -- Asynchronous reset
  if rst = '1' then
    ... -- Update at reset
  end if;
end process;

就您的代码而言,您似乎没有使用异步重置,因此模板可以简化为:

process (clk) is
begin
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
end process;

现在,练习是使您的代码适合该模板,但是很遗憾,很难根据提供的代码确定确切的意图。


不,`if rst ='1'then ... elsifrise_edge(clk)then ... end if;`形式意味着非复位部分驱动的信号必须在复位时保持稳定,即使在上升clk时也是如此,因为时钟部分将永远无法到达。这需要保持/闩锁操作,这可能不是故意的。用`ifising_edge(clk)然后...结束if; 如果rst ='1',则...结束if;形式的信号不是通过复位即可通过时钟更新,这与普通的触发器操作相匹配。不会有多个驱动程序,因为所有驱动程序都在同一进程中。
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有