我有一个在VHDL中声明的信号,就像这样:
signal Temp_Key : std_logic_vector(79 downto 0);
这个Temp_Key
会通过一个for
循环被修改31次。我想将这31个不同的Temp_Key
存储到一个数组中。
在VHDL中,是否可以使用多维数组来存储80位信号?
是的,首先需要声明一个类型:
type YOUR_ARRAY_TYPE is array (0 to 30) of std_logic_vector(79 downto 0);
请注意,您还可以声明类型长度未定义 - 因此,当您声明信号时,可以指定它有多少个80位字。使用VHDL 2008,您还可以将slv的大小保留未指定,也可在创建信号时进行声明。例如:
type slv_array is array (natural range <>) of std_logic_vector;
然后使用它
signal MY_SIGNAL : YOUR_ARRAY_TYPE;
...
MY_SIGNAL(0) <= data;
...
MY_SIGNAL(1) <= data;
请参考此处。
VHDL 有两个选项
signal X is array (range) of ArrayType;
signal Y is array (range1, range2) of Type;
我认为选项1得到了更好的工具支持。我还发现这两个选项与函数式编程之间存在相似性,它教导我们可以将一个多元函数(x,y)柯里化成一系列单参数函数f(x) -> f(y)。后者看起来像数组的数组。