Matrix 在每个时钟边缘用VHDL访问同一阵列的2个元素

Matrix 在每个时钟边缘用VHDL访问同一阵列的2个元素,matrix,multidimensional-array,vhdl,xilinx,Matrix,Multidimensional Array,Vhdl,Xilinx,如何在同一进程中访问2d阵列的两个元素以及每个时钟边缘上的元素 entity test is generic (N : integer := 8; N_MAX : integer :=1944; O_MAX : integer :=20; M_MAX : integer :=324; K_MAX : integer :=1620); Port ( clk : in STD_LOGIC; rst : in

如何在同一进程中访问2d阵列的两个元素以及每个时钟边缘上的元素

entity test is
generic   (N     : integer  := 8;
       N_MAX : integer  :=1944;
       O_MAX : integer  :=20;
       M_MAX : integer  :=324;
       K_MAX : integer  :=1620);
Port ( clk : in STD_LOGIC;
       rst : in STD_LOGIC;
a   : in STD_LOGIC_VECTOR(N-1 downto 0);
       b  : in STD_LOGIC_VECTOR(N-1 downto 0)`);
end test;

architecture Behavioral of test is
type t1 is array (0 to 323,0 to 19) of std_logic_vector(7 downto 0);

signal tab:t1;
`


非常感谢您的帮助,提前谢谢您

到目前为止您都做了哪些尝试?任何多维数组都可以实现为一维数组(如内存中的线性数组)。使用两个所选名称(例如tab(dim1,dim2))表示的回读多路复用器,合成多维数组时,多维数组的维数将提升为2的幂。想想硬件。考虑提供一个代码段中只使用了一个通用常量。请记住,在硬件中,您不读取“2d数组”,而是读取某种内存,如BRAM或分布式ram。无论您选择什么,在一个时钟周期内读取2个元素都不是问题。确定(数组)对象顺序存储(注册、锁存、内存)是指是否因赋值中右侧元素的任何更改而更新,还是有条件地赋值(基于值或信号事件)。信号对象可以只是一个网络或网络集合。变量或常量对象可以是值或值的集合。您不需要向tab演示赋值,这是调用最小、完整和可验证示例的一部分,也不需要从硬件角度进行思考。您的代码段没有传递没有赋值和事件的硬件,它是抽象的。