我想知道如何声明具有通用数据宽度的二维内存
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,而是通用的
这不是二维的——这是向量的向量,这(微妙地)不同。
2D数组
type data_vector is array (natural range <>, natural range <>) of integer;
但是,回到你的问题:
直到"最近"(VHDL 2008)你不能有一个不受约束数组的不受约束数组。但是现在你可以这样做:
type mem is array(natural range <>) of std_logic_vector;
signal store : mem(0 to 15)(7 downto 0);
"VHDL 2008 -只是新的东西"有更多的细节:
http://books.google.co.uk/books?id=ETxLguPMEY0C&液化石油气= PA241& ots = q7u_Mn0SFR& dq =硬件描述语言(vhdl) % 20只% 20 202008% % 20个新% 20东西% 20便士% 20120,pg = PA120 # v = snippet& q = % 20的别名% 20 % 20寄存器% 20文件% 20 signal& f = false