VHDL中的多维信号阵列

Amr*_*tha 8 arrays vhdl

我在VHDL中有一个信号声明如下:

signal Temp_Key : std_logic_vector(79 downto 0);
Run Code Online (Sandbox Code Playgroud)

Temp_Key通过for循环31次并被修改.我想将31个不同的数据存储Temp_Keys在一个数组中.

是否可以在VHDL中使用多维数组来存储80位信号?

Jos*_*osh 24

是的,首先你需要声明一个类型:

type YOUR_ARRAY_TYPE is array (0 to 30) of std_logic_vector(79 downto 0);
Run Code Online (Sandbox Code Playgroud)

请注意,您也可以声明类型为长度不定的 - 所以你可以指定有多少80个的字有,当你宣布你的信号.使用VHDL 2008,您还可以保留未指定的slv的大小,也可以在创建信号时声明.例如:

type slv_array is array (natural range <>) of std_logic_vector;
Run Code Online (Sandbox Code Playgroud)

然后使用它

signal MY_SIGNAL : YOUR_ARRAY_TYPE;
...
MY_SIGNAL(0) <= data;
...
MY_SIGNAL(1) <= data;
Run Code Online (Sandbox Code Playgroud)

请参阅此处以供参考.