因此,如果我有一个16位的输出,并且我想连接8位数组的每2个索引以形成16位输出。是否可以同时访问阵列?这是一个例子:
Output : out std_logic_Vector(15 downto 0);
.
.
.
type array1 is array(0 to 5) of std_logic_Vector(7 downto 0);
signal myarray : array1;
.
.
.
假设“myarray”已经填充了值,我可以这样做,并且在合成时它会正常工作吗?
Output <= myarray(i) & myarray(k);
其中i = 0且k = 1,它获得数组的前两个索引。
答案 0 :(得分:2)
是的,这完全没问题。
在您的示例中,它只是“连线”,因此它与任何其他(正确的)语法一样高效。
如果你要在一个时钟进程中注册数组,那么串联只意味着你需要在一个时钟周期内读取数组两次 - 在这种情况下,FPGA工具很可能会使用触发器来制作数组并且您指出的尺寸和现代FPGA也非常精致。
对于较大的数组,我不相信这些工具,但要明确内存访问;两个独立的存储器块或一个输出宽两倍的存储器块。