有没有一种方法可以使用;“长度”;或;“左”;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