【问题标题】:How to support architecture reuse with minor differences如何支持具有细微差异的架构重用
【发布时间】:2014-12-15 15:18:42
【问题描述】:

我需要一些关于 VHDL 的提示。我对它很陌生,所以请客气。

我已经编写了一个模块并注册了输出(它是一个进位保存加法器 - CSA)。我在设计的某些部分使用了这个模块。

现在我必须使用相同的模块,但我需要删除输出寄存器(我需要以组合方式使用它)。我知道我可以复制和粘贴 VHDL 代码并使用不同的实体,但在我看来这有点不雅。

我想使用通用参数,但我不知道从哪里开始。谁能给我一个提示?

【问题讨论】:

  • 好的,我想我已经找到了解决方案。我可以使用生成语句。对吗?
  • CSA?你可以阅读Welcome to Stack OverflowWhat topics can I ask about here?。你的问题似乎不清楚。向我们展示您要修改的代码,使用声明的名称来引用您要更改的内容。见How to create a Minimal, Complete, and Verifiable example。改进你的问题。您的工具支持的 VHDL 标准版本在回答中很重要,它可能需要两个生成语句,一个用于寄存器,一个没有(-1993 在生成中没有 ELSE)。
  • 对不起,如果我混乱了,但实际上我不确定我在问什么。 CSA 代表 Carry Save Adder,我已经使用生成语句进行了修复。 VHDL 是-2002 版本。感谢您提供有关规则的提示,如果我犯了一些错误,请见谅。
  • 考虑更改您的问题并自己回答。它可能使您无法获得否决的问题块,而现在您有一个不清楚的问题,没有答案,也没有其他人回答的能力。大多数综合软件是-1993 语法兼容特定的新功能。如果其中包含else generate,我会感到惊讶,它在-2002 年也不可用。您可能需要两个生成语句才能在使用和不使用寄存器的情况下正确连接输出。
  • David Koontz:我个人认为这个问题没有问题。这不是一个很好的标题,语言有点不雅和简洁,但没有什么是一点点编辑解决不了的。被问到的概念是一个普遍的概念,关于他的模块内部的细节不是回答问题所必需的,VHDL 的版本也不是(只使用旧样式 - 它适用于任何地方)。

标签: hardware vhdl


【解决方案1】:

是的,添加一个 注册输出 通用的架构。如果这是真的,实现注册的输出。如果它是假的,将输出连接到寄存器的输入。然后,您可以使用不同的泛型集在两个不同的位置实例化它。

此代码完全未经测试(甚至未编译),但希望您能理解。

GEN_REG : if REG_OUTPUT = true generate
    p_output : process is
    begin  -- process p_output
        wait until clk'event and clk = '1';
        Q <= Q_internal;
    end process p_output;
end generate GEN_REG;

GEN_WIRE : if REG_OUTPUT = false generate
    Q <= Q_internal;
end generate GEN_WIRE;

【讨论】:

    猜你喜欢
    • 2016-06-27
    • 2021-11-19
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2011-12-09
    • 2013-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多