vhdl 程序中如何定义二维数组?要求存放40个数,每个数占16位?
3个回答
展开全部
type array_type is (39 downto 0) of std_logic_vector(15 downto 0);
signal array : array_type;
这是定义40个16bit的数。
如果你的40个数是又是5行8列的,可以这么写
type array_1type is (4 downto 0) of std_logic_vector(15 downto 0);
type array_2type is (7 downto 0) of array_1type;
signal array: array_2type;
signal array : array_type;
这是定义40个16bit的数。
如果你的40个数是又是5行8列的,可以这么写
type array_1type is (4 downto 0) of std_logic_vector(15 downto 0);
type array_2type is (7 downto 0) of array_1type;
signal array: array_2type;
展开全部
先假设你的定义正确,那么你的信号w一定是w(x,y)类型的,那你调用的时候就不能只用一个参数x,(y呢?); 其次,你的定义是相互矛盾的,本身就有问题。你想:端口b是一个标准逻辑位矢量的类型,把它赋给一个二维数组w(x,y)类型,本身就违反了同型赋值的规则,是不可能实现的; 正确的做法应该是: 定义 type logicvector2 is array (natural range<>) of std_logic_vector(0 to 31); signal w: logicvector2 (0 to 67); …… begin w(0)<=b(1 to 32); …… end arch;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
type shu_zu is array (0 to 5,7 downto 0) of std_logic_vector;
constant rom_data:shu_zu:=
(('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'));
不知道你的40个数是要怎么分各维元素个数的。自己看着改下就行了。
constant rom_data:shu_zu:=
(('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'),
('0','0','0','0','0','0','0','0'));
不知道你的40个数是要怎么分各维元素个数的。自己看着改下就行了。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询