>我正在使用一个包来state_values:
library IEEE;
use IEEE.STD_LOGIC_1164.all;
package States is
type state_values is (ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7,ST8,ST9,ST10,ST11,ST12,ST13,ST14,ST15,ST16);
signal pres_state, next_state: state_values;
end States;
这是我的组件,带有一个通用实体:
component NextStateLogic
generic (
BLRH : STD_LOGIC_VECTOR (3 downto 0);
pres_state : state_values := ST0;
next_state : state_values := ST0);
end component;
在代码中,有几个嵌入式信号用于组件之间的通信:
signal LRH_int : STD_LOGIC_VECTOR (3 downto 0);
signal next_state_int : state_values := ST0;
signal pres_state_int : state_values := ST0;
signal Clk1Hz_int : STD_LOGIC;
在实例上向我显示下一个错误:
The actual value (Signal 'LRH_int') associated with a generic must be a globally static expression.
调查,我无法将信号连接到泛型,我可以使用 const,但这个对代码的支撑没有用。有没有办法用另一种类型的嵌入式信号来实例化通用组件?
泛型用于在合成代码之前配置组件的所有内容。 例如,您可以有一个通用来配置输入和输出信号的宽度。
端口用于在运行时动态变化的所有内容,例如数据信号时钟等。
因此,让实体(或组件)只有一个通用映射是不明智的,因为它永远不会在硬件中做任何事情。使用端口定义。