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;
那个编译错误该怎么办?要怎么改? 展开
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;
那个编译错误该怎么办?要怎么改? 展开
2个回答
展开全部
VHDL‘87规定,不允许使用共享变量(也就是你在追问中所说的全局变量),虽然VHDL’93扩展了共享变量,但使用共享变量有可能导致系统行为的不确定,因此不建议使用。
声明共享变量采用“SHARED VARIABLE {名称} : 数据类型 [: = 表达式 ] ;”的语法形式。
但在引用共享变量时,必须保证所有对共享变量赋值的进程之间的激活条件互斥,同时也与读取共享变量的进程的激活条件互斥,才能避免系统行为的不确定性。
声明共享变量采用“SHARED VARIABLE {名称} : 数据类型 [: = 表达式 ] ;”的语法形式。
但在引用共享变量时,必须保证所有对共享变量赋值的进程之间的激活条件互斥,同时也与读取共享变量的进程的激活条件互斥,才能避免系统行为的不确定性。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询