【问题标题】:Generate ports in VHDL?在 VHDL 中生成端口?
【发布时间】:2014-04-28 18:58:57
【问题描述】:

有没有办法在 VHDL 中生成端口声明?我想做类似于#IFDEF 的事情,将调试信号输出到示波器的引脚。这样我可以快速启用或禁用调试逻辑。例如:

entity my_entity is
port (  

    debug_label: if debug_on = 1 generate
    debug1: out;
    end debug_label;

    ....

    );
end component;  

当我尝试这样的事情时,它不起作用。有什么办法让它工作吗?或者做类似事情的另一种方法?

【问题讨论】:

  • 如果您喜欢冒险,可以使用m4 将宏添加到您的代码中。但是,这需要一些小心,以确保您的工具只能看到后处理的源。这就是 m4 旨在解决的问题类型。
  • 为了通过层次结构节省布线,您是否考虑过使用不纯函数而不是端口来传达调试信息?请参阅github.com/chiggs/hidden_wires 以获取 SystemVerilog 中的可综合示例。

标签: vhdl


【解决方案1】:

端口不能是有条件的,但是例如 a std_logic_vector 可以通过泛型进行配置,长度可以 甚至为0,导致空范围。显示这一点的实体是:

entity mdl is
  generic(
    DEBUG_LEN : natural := 0);
  port(
    ...
    debug_o : out std_logic_vector(DEBUG_LEN - 1 downto 0));
end entity;

您应该运行一个测试综合来查看您选择的综合工具如何 分配给引脚时处理空范围。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多