有没有一种方法可以使用;“长度”;或;“左”;VHDL中实例化组件的端口上的属性?
有没有办法根据实例化组件的端口声明信号大小有没有一种方法可以使用;“长度”;或;“左”;VHDL中实例化组件的端口上的属性?,vhdl,Vhdl,有没有办法根据实例化组件的端口声明信号大小 ..... signal newSignal : std_logic_vector(work.SyncVec.sig_i'left downto 0); --something like that begin -- Synchronize all inputs u_InputSyncs : entity work.SyncVec port map ( clk_i => sysClk100M,
.....
signal newSignal : std_logic_vector(work.SyncVec.sig_i'left downto 0); --something like that
begin
-- Synchronize all inputs
u_InputSyncs : entity work.SyncVec
port map (
clk_i => sysClk100M,
rst_i => sysRst100M,
sig_i => inputs,
sig_o => inputsSync
);
.....
Vivado为以下项返回错误:
信号新信号:标准逻辑向量(work.SyncVec.sig\u i'left down为0);
--诸如此类
非常感谢当您尝试时会发生什么?您既没有提供有效的代码,也没有提供有效的密码。请注意,如果端口关联实际
输入
是在新信号
之前声明的,则可以在新信号
声明中直接对其进行评估。如果没有use子句,所选文件的前缀SyncVec
将不可见。IEEE Std 1076-2008 3.2.2实体标题“在某些情况下,实体标题中声明的泛型和端口的名称在设计实体外部可见(见12.2和12.3)。”(声明范围,可见性,12.4使用条款)。错误:没有对“syncvec”的声明。
。添加一个use子句use work.all代码>在newSignal
声明之前和错误:实体“syncvec”中的“输入”没有声明。相反,
signal newSignal:std_logic_vector(输入“左下至0”)`使用先前声明的输入
将进行分析。其中,signal newSignal:std_logic_vector(work.SyncVec.sig_i'left down to 0)代码>生成错误:仅允许在构造中使用扩展名称
。从SyncVec.inputs'left
更改为work.SyncVec.sig_'left
,并添加了Vivado错误输出。有人知道VHDL是否支持这一点吗?这并不能回答您的问题,但在您提供的示例中,您可能会使用std\u logic\u vector(inputs'range)
。更一般地说,我不确定你想做的是不是一个好主意。如果可以在编译时更改sig_i
的位宽度,则应使用泛型(或存储在包中的常量)进行更改。无论哪种方式,该值都将在层次结构的上面级别中清晰可见。试图用属性做同样的事情似乎不那么清晰,更难管理。你遇到了同样的基本问题,你的读者没有足够的信息。提供一个可用于探索替代方案的方法。否则,你的问题的答案是否定的。当你尝试时会发生什么?您既没有提供有效的代码,也没有提供有效的密码。请注意,如果端口关联实际输入
是在新信号
之前声明的,则可以在新信号
声明中直接对其进行评估。如果没有use子句,所选文件的前缀SyncVec
将不可见。IEEE Std 1076-2008 3.2.2实体标题“在某些情况下,实体标题中声明的泛型和端口的名称在设计实体外部可见(见12.2和12.3)。”(声明范围,可见性,12.4使用条款)。错误:没有对“syncvec”的声明。
。添加一个use子句use work.all代码>在newSignal
声明之前和错误:实体“syncvec”中的“输入”没有声明。相反,
signal newSignal:std_logic_vector(输入“左下至0”)`使用先前声明的输入
将进行分析。其中,signal newSignal:std_logic_vector(work.SyncVec.sig_i'left down to 0)代码>生成错误:仅允许在构造中使用扩展名称
。从SyncVec.inputs'left
更改为work.SyncVec.sig_'left
,并添加了Vivado错误输出。有人知道VHDL是否支持这一点吗?这并不能回答您的问题,但在您提供的示例中,您可能会使用std\u logic\u vector(inputs'range)
。更一般地说,我不确定你想做的是不是一个好主意。如果可以在编译时更改sig_i
的位宽度,则应使用泛型(或存储在包中的常量)进行更改。无论哪种方式,该值都将在层次结构的上面级别中清晰可见。试图用属性做同样的事情似乎不那么清晰,更难管理。你遇到了同样的基本问题,你的读者没有足够的信息。提供一个可用于探索替代方案的方法。否则,你的问题的答案是否定的。
ERROR: [VRFC 10-1266] prefix of expanded name does not denote an enclosing construct