【发布时间】:2017-03-02 00:21:04
【问题描述】:
因此,如果我有一个 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 获得数组的前两个索引。
【问题讨论】:
-
大多数合成器会将数组实现为 ram,并且不允许您这样做。
-
某些(大多数?)FPGA 中的 Block Rams 具有双端口访问选项:不同的综合工具可能知道也可能不知道如何综合以使用双端口内存。
-
如果合成器工具尝试将数组实现为 ram,考虑到大小,我会感到非常惊讶
-
@gsm 那么它将尝试将数组实现为 ram 的大小是多少?在以下用户指南中:xilinx.com/support/documentation/sw_manuals/xilinx14_4/… 他们给出以下内容将在 vhdl 中对 RAM 建模: (0 到 255)of std_logic_vector (15 down to 0);那么它必须是那个大小吗?
-
@AlperKucukkomurler 然后综合工具将回退到简单的寄存器。但他们不会出错。
标签: arrays concatenation vhdl fpga