Generics 通用从属的实际表达式不能引用信号
在Quartus中,我收到以下错误消息: 错误(10795):通用从机的实际表达式不能引用信号 代码有一个组件实例化,其泛型如下:Generics 通用从属的实际表达式不能引用信号,generics,port,vhdl,Generics,Port,Vhdl,在Quartus中,我收到以下错误消息: 错误(10795):通用从机的实际表达式不能引用信号 代码有一个组件实例化,其泛型如下: architecture rtl of System is component spi_master generic( slaves : INTEGER := 1; port(clock : IN STD_LOG
architecture rtl of System is
component spi_master
generic(
slaves : INTEGER := 1;
port(clock : IN STD_LOGIC;
sclk : BUFFER STD_LOGIC;
ss_n : BUFFER STD_LOGIC_VECTOR(slaves - 1 DOWNTO 0);
end component spi_master;
signal spi_slaves : INTEGER := 1;
begin
spi : component spi_master
generic map(
slaves => 1,
)
port map(clock => clk_clk,
sclk => dac_sclk,
ss_n => slave_sel,
);
end architecture rtl;
错误指向行“generic map”(),我发现在端口声明中也不能使用“slaves”
问题:
-我怎样才能解决这个问题
谢谢!代码与问题描述不匹配,因为
从机=>1
是可以的,包括在声明缓冲区标准逻辑向量(从机-1到0)中的重用
问题可能是失败的代码使用了slaves=>spi_slaves
,其中spi_slaves
是一个信号,这是非法的
将spi_从机的声明更改为:
constant spi_slaves : INTEGER := 1;
错误信息非常清楚。奇怪的是,代码没有显示错误,所以有些事情你没有告诉我们。泛型本质上是一个编译时常量(实际上是精化时间),因此它无法连接到信号,其值在运行时可能会变化。这段代码没有显示Morten猜测答案的问题-“问题可能是"。它充满了语法错误,如果更正了,并且提供了实体声明和上下文子句,则可以在不更改常量spi_从属项声明的情况下成功分析。也许您可以“更正”代码以演示实际问题?是的,您是对的。通过引入常量,它解决了我的问题-谢谢!额外的,
在最后一个端口和通用映射之后,难道不是一个错误吗?例如,从选择,
应该是从选择
?@可怕杰夫:是的,额外的,
是一个语法错误,还有一个丢失的)
,可能还有其他问题。顺便说一句,允许额外的,
已被建议用于未来的VHDL版本,这是其他语言(如Python)中的一项功能,但VHDL中还没有legel。