使用vhdl中的类型创建二维数组

使用vhdl中的类型创建二维数组,vhdl,Vhdl,你能用VHDL中的类型帮我做这个矩阵声明吗 ——A B Q Y (('0', '0', "000", 0), ('0','1','ZZ1',1), ('1','0','Z1Z',1), ('1','1','1ZZ',2)) 类型声明可能如下所示: type element_t is record A : std_logic; B : std_logic; Q : std_logic_vector(2 downto 0); Y : natural; end record; typ

你能用VHDL中的类型帮我做这个矩阵声明吗

——A B Q Y
(('0', '0', "000", 0),
('0','1','ZZ1',1),
('1','0','Z1Z',1),
('1','1','1ZZ',2))

类型声明可能如下所示:

type element_t is record
  A : std_logic;
  B : std_logic;
  Q : std_logic_vector(2 downto 0);
  Y : natural;
end record;

type array_t is array (0 to 3) of element_t;

constant VALUE : array_t :=
  -- A    B     Q    Y
  (('0', '0', "000", 0),
   ('0', '1', "ZZ1", 1),
   ('1', '0', "Z1Z", 1),
   ('1', '1', "1ZZ", 2));

让我建议你得到一个VHDL编译器和模拟器,像免费的;然后您可以自己轻松地尝试使用VHDL。

没有列连接。没有2d数组-“数组对象是由具有相同子类型的元素组成的复合对象。”(IEEE Std 1076-2008 5.3.2.1),这不符合数学定义“行和列中数量或表达式的矩形数组,被视为单个实体,并根据特定规则进行操作“它不是长方形的。一个数组被索引,一个记录元素被选中-。@user1155120:您的权利,这是一个重要的注释。从类型宽松语言(如Python)输入VHDL的程序员必须习惯VHDL的强大类型要求。构造是一个一维数组(1D)数组,其中的元素是记录(而不是另一个数组,即使赋值看起来是这样的)。显示的聚合表达式表示一个包含4个元素的一维数组类型。元素聚合表达式表示包含4个元素a、B、Q和Y的记录类型。从聚合中看,记录元素的类型并不明显。A和B可以是std_逻辑,例如,Q A std_逻辑向量和Y为整数类型。IEEE std 1076-2008 5.3.3记录类型中描述了记录类型,5.3.2阵列类型中描述了阵列类型。另见第8条。名称、8.4索引名称和8.3选定名称。