Vhdl 来自组合块的驱动模块输出

Vhdl 来自组合块的驱动模块输出,vhdl,verilog,system-verilog,Vhdl,Verilog,System Verilog,在VHDL/Verilog中使用组合逻辑驱动模块的输出是一种良好的设计实践吗 可以直接在组合块内使用模块输入,并使用该组合块的输出驱动同一模块中的另一个顺序块吗 这两个问题的答案实际上取决于总体设计方法 正如摩根在评论中指出的那样,这将是基于意见的 这些问题与时间紧迫的大型设计特别相关 限制,以及多个设计师对不同模块的贡献。在里面 在这种情况下,重要的是预先确定一种设计方法 回答这两个问题,以确保 不同的设计师可以顺利集成,而不会出现时间问题 在每个模块的所有输出端上设计触发器,使其具有优势 当

在VHDL/Verilog中使用组合逻辑驱动模块的输出是一种良好的设计实践吗

  • 可以直接在组合块内使用模块输入,并使用该组合块的输出驱动同一模块中的另一个顺序块吗


  • 这两个问题的答案实际上取决于总体设计方法 正如摩根在评论中指出的那样,这将是基于意见的

    这些问题与时间紧迫的大型设计特别相关 限制,以及多个设计师对不同模块的贡献。在里面 在这种情况下,重要的是预先确定一种设计方法 回答这两个问题,以确保 不同的设计师可以顺利集成,而不会出现时间问题

    在每个模块的所有输出端上设计触发器,使其具有优势 当一个输出用作其他模块的输入时,则输入定时为 合理定义良好,仅取决于路由延迟。这就够了 a对问题1是

    有一个合理的、定义良好的输入定时可以使复杂的 组合逻辑直接在输入端,因为大部分的时钟周期 你可以参加这个活动。因此,这也使得问题2的答案是肯定的

    使用上述是/是设计方法,可用循环时间仅为 在触发器之前,在模块的输入端使用一次 这将在输出上进行。结果是多个模块将很好地单击 一起像乐高积木一样,如下图所示

    如果不同模块中没有遵循严格的设计方法,则 有些模块可能在输入端放置触发器,有些模块在输出端放置触发器。A. 由于最坏的情况,因此需要更长的循环时间,从而降低频率 案例路径的深度是组合逻辑的两倍。这样的设计 如下图所示,应避免使用

    第三个选项存在,其中触发器放置在所有输入上,并且 如果两个不同的模块使用相同的设计,则设计将如下图所示 输出

    这种方法的一个缺点是触发器的数量可能会减少 更高,因为相同的输出用作多个触发器的输入 合成工具不能组合这些等效触发器。甚至更多 如果生成输出的模块 还必须制作一个触发器版本供内部使用,这通常是 这个案子


    因此,这些问题的简短回答是:是和是。

    如果最终设计满足速度目标,且输入信号干净,则这两个问题的答案基本上都是肯定的

    以这种方式设计的块的问题是,通过它们的信号定时没有准确定义,因此组合几个这样的块可能会导致设计速度非常慢,或者快速输入信号不能在设计中干净地传播

    如果您设计了这样一个电路,并且它满足您所有的输入和输出时序约束以及您设置的任何时钟速度约束,那么它将工作

    然而,如果它不能满足时钟约束,你将不得不插入寄存器来“流水线”设计,打破组合逻辑的长而慢的链。你必须观察合成和PAR报告的输入和输出时间,它们会变得复杂。

    在实践中(在FPGA中:ASIC可能不同),寄存器与每个逻辑块(Xilinx/Altera,Actel/Microsemi不适用),将寄存器放置在每个块的输入和/或输出上使计时更易于理解和分析


    由于这种设计是流水线的,通常速度也要快得多。

    我不确定这个问题是否适合stackoverflow,因为答案是基于观点的。我倾向于输出是干净的(直接从触发器驱动)输入,然后直接用于组合逻辑,但是有些规则是要被打破的。如果你能给我们一个关于你的担忧的暗示,也许会有所帮助。如果你建立了这样的联系,你认为会出什么问题?