VHDL里的二维数组怎么调用某一行的数据?

大致代码如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityxx... 大致代码如下:

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity xx is
port(clk:in std_logic;
s:out std_logic_vector(7 downto 0))
end xx;

architecture aaa of xx is
type matrix is array(2 downto 0) of std_logic_vector(7 downto 0);
constant m: martix:=("01000000", "00010000", "00000010");
begin
process(clk)
if clk'event and clk='1' then
s<=m(1); --一直是这里编译错误,说是数据类型不匹配什么的
end if;
end process;
end;

那个编译错误该怎么办?要怎么改?
展开
 我来答
米粥稀溜溜
2013-10-28
知道答主
回答量:11
采纳率:0%
帮助的人:8.8万
展开全部
constant 改成signal 试试
更多追问追答
追问
那改成variable能行么?
追答
variable 只能定义在进程中 好像不行
nereus78e904
2013-11-03 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5463
采纳率:90%
帮助的人:1910万
展开全部
VHDL‘87规定,不允许使用共享变量(也就是你在追问中所说的全局变量),虽然VHDL’93扩展了共享变量,但使用共享变量有可能导致系统行为的不确定,因此不建议使用。
声明共享变量采用“SHARED VARIABLE {名称} : 数据类型 [: = 表达式 ] ;”的语法形式。
但在引用共享变量时,必须保证所有对共享变量赋值的进程之间的激活条件互斥,同时也与读取共享变量的进程的激活条件互斥,才能避免系统行为的不确定性。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式