我可以在VHDL的同时访问数组的2个索引

时间:2017-03-02 00:21:04

标签: arrays concatenation vhdl fpga

因此,如果我有一个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,它获得数组的前两个索引。

1 个答案:

答案 0 :(得分:2)

是的,这完全没问题。

在您的示例中,它只是“连线”,因此它与任何其他(正确的)语法一样高效。

如果你要在一个时钟进程中注册数组,那么串联只意味着你需要在一个时钟周期内读取数组两次 - 在这种情况下,FPGA工具很可能会使用触发器来制作数组并且您指出的尺寸和现代FPGA也非常精致。

对于较大的数组,我不相信这些工具,但要明确内存访问;两个独立的存储器块或一个输出宽两倍的存储器块。