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

Vhdl 无法合成信号temp2,同步描述错误,vhdl,Vhdl,我搜索过stackoverflow。他们说,但我不知道如何解决我的问题。VHDL必须遵循一些合成工具特定的编码准则,以便工具能够将VHDL代码转换为FPGA实现。对于异步复位触发器的实现,样式可以是: Signal temp2 cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, mem

我搜索过stackoverflow。他们说,但我不知道如何解决我的问题。

VHDL必须遵循一些合成工具特定的编码准则,以便工具能够将VHDL代码转换为FPGA实现。对于异步复位触发器的实现,样式可以是:

Signal temp2 cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, memory, etc.) is not supported in the current software release.
对于您的代码,您似乎没有使用异步重置,因此模板可能会减少为:

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;

现在的练习是将代码放入该模板,不幸的是,根据提供的代码很难确定确切的意图。

VHDL必须遵循一些特定于合成工具的编码准则,以便工具能够将VHDL代码转换为FPGA实现。对于异步复位触发器的实现,样式可以是:

Signal temp2 cannot be synthesized, bad synchronous description. The description style you are using to describe a synchronous element (register, memory, etc.) is not supported in the current software release.
对于您的代码,您似乎没有使用异步重置,因此模板可能会减少为:

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;

现在的练习是将代码放入该模板中,不幸的是,根据提供的代码很难确定确切的意图。

您的代码似乎混合了HDL和“软件”语言的概念。我不确定它应该做什么,但我会把它重构成下面的代码

process (clk) is
begin
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
end process;
定时器的行为架构是
常量计数器_值_至_到达_15ns:整数:=;
信号temp2:整数范围0到20:=0;
信号除法器:标准逻辑向量(7到0):=(其他=>'0');
开始
过程
开始
--当时钟滴答作响时,一切都会发生,除了重置
如果上升沿(单击),则

temp2您的代码似乎混合了HDL和“软件”语言的概念。我不确定它应该做什么,但我会把它重构成下面的代码

process (clk) is
begin
  if rising_edge(clk) then
    ... -- Update at clock
  end if;
end process;
定时器的行为架构是
常量计数器_值_至_到达_15ns:整数:=;
信号temp2:整数范围0到20:=0;
信号除法器:标准逻辑向量(7到0):=(其他=>'0');
开始
过程
开始
--当时钟滴答作响时,一切都会发生,除了重置
如果上升沿(单击),则

temp2将信号单击&temp2添加到灵敏度列表,并在15 ns后删除
。您使用什么进行合成?将信号click&temp2添加到灵敏度列表中,并在15 ns后删除
。你用什么来合成?当然它应该是这样的形式;如果重置,则--elsif上升沿(clk),然后--end if。否则您将抛出多个驱动程序错误?否,
如果rst='1',则。。。如果上升沿(clk),则。。。如果结束形式意味着非由复位部分驱动的信号必须在复位时保持稳定,即使在clk上升时也是如此,因为这样就永远不会到达时钟部分。这需要保持/锁定操作,这可能不是目的。使用
如果上升沿(clk),则。。。如果结束;如果rst='1',则。。。如果结束形式未通过复位更新的信号可以通过时钟进行更新,这与普通触发器操作相匹配。不会有多个驱动程序,因为所有驱动程序都在同一个过程中。非常感谢-巧合的是,这与我正在处理的问题几乎完全相同@MortenZilmer这两种形式的结果是相同的硬件。。。你提到的差异是概念上的,但不是真实的。不会推断出保持/锁定。@JHBonarius提到的是真的吗?即使您跳“if rst..elsif”舞,它也不会推断出闩锁,而是实际的带异步重置的flipflip吗?还是取决于合成工具的聪明,答案中的代码更为惯用,从而开发出更多的合成工具;如果重置,则--elsif上升沿(clk),然后--end if。否则您将抛出多个驱动程序错误?否,
如果rst='1',则。。。如果上升沿(clk),则。。。如果结束形式意味着非由复位部分驱动的信号必须在复位时保持稳定,即使在clk上升时也是如此,因为这样就永远不会到达时钟部分。这需要保持/锁定操作,这可能不是目的。使用
如果上升沿(clk),则。。。如果结束;如果rst='1',则。。。如果结束形式未通过复位更新的信号可以通过时钟进行更新,这与普通触发器操作相匹配。不会有多个驱动程序,因为所有驱动程序都在同一个过程中。非常感谢-巧合的是,这与我正在处理的问题几乎完全相同@MortenZilmer这两种形式的结果是相同的硬件。。。你提到的差异是概念上的,但不是真实的。不会推断出保持/锁定。@JHBonarius提到的是真的吗?即使您跳“if rst..elsif”舞,它也不会推断出闩锁,而是实际的带异步重置的flipflip吗?或者这取决于合成工具的聪明程度,答案中的代码更为惯用,因此需要使用更多的合成工具?此代码包含许多错误。我建议进行编辑,但被拒绝。此代码包含许多错误。我建议编辑,但被拒绝了。