通用从站的实际表达式不能引用信号

Actual expression for generic slaves cannot reference a signal

在 Quartus 中,我收到以下错误消息:

错误 (10795):通用从站的实际表达式无法引用信号

该代码有一个带有泛型的组件实例化,如下所示:

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"

问题: - 我该如何解决这个问题?

谢谢!

代码与问题描述不符,因为slaves => 1没问题,包括在声明BUFFER STD_LOGIC_VECTOR(slaves - 1 DOWNTO 0)中重用。

问题可能是失败的代码使用了 slaves => spi_slaves,其中 spi_slaves 是一个信号,这是非法的。

spi_slaves 的声明更改为:

constant spi_slaves : INTEGER := 1;