Generics 具有通用数据宽度VHDL的多维存储器

Generics 具有通用数据宽度VHDL的多维存储器,generics,memory,multidimensional-array,vhdl,Generics,Memory,Multidimensional Array,Vhdl,我想知道如何声明具有通用数据宽度的二维内存 package mem_pkg is subtype data is std_logic_vector(7 downto 0); type data_vector is array( natural range <> ) of data; end; entity mem is port ( clk : in std_logic; we : in std_logic -- write enable a: in unsign

我想知道如何声明具有通用数据宽度的二维内存

package mem_pkg is
  subtype data is std_logic_vector(7 downto 0);
  type data_vector is array( natural range <> ) of data;
end;
entity mem is
port (
  clk : in std_logic;
  we : in std_logic -- write enable
  a: in unsigned(4 downto 0); -- address
  di : in data; -- data_in
  do : out data -- data_out
 );
 end mem;
包装膜包装是
子类型数据为标准逻辑向量(7到0);
类型数据_向量是数据的数组(自然范围);
结束;
实体mem是
港口(
clk:标准逻辑中;
we:在std_逻辑中——写启用
a:在无符号(4到0)中;--地址
di:在数据中;--在数据中
do:输出数据--输出数据
);
结束记忆;


而不是7,我希望数据宽度是通用的。

这不是二维的-这是一个向量向量,它(微妙地)不同

二维数组是

type data_vector is array (natural range <>, natural range <>) of integer;
类型数据\u向量是整数数组(自然范围,自然范围);
但是,回到你的问题:

在“最近”(VHDL 2008)之前,不可能有无约束数组的无约束数组。但现在你可以做到:

type mem is array(natural range <>) of std_logic_vector;
signal store : mem(0 to 15)(7 downto 0);
type mem是标准逻辑向量的数组(自然范围);
信号存储:mem(0至15)(7至0);
“VHDL 2008-只是新东西”有更多的细节:


谢谢,但它没有得到XSTI的支持。我担心您将不得不加入Xilinx的抱怨人群,让他们最终支持一个5年的标准。