在 VHDL 中初始化矩阵需要大量类型逻辑单元的块

Initializing matrix in VHDL takes enormous number of blocks of type logic cell

我正在尝试用 VHDL 构建一个小游戏,因此,我需要使用两个 std_logic 元素的矩阵。以下是我如何初始化我的两个矩阵:

type matrix_type is array (0 to 7) of std_logic_vector(7 downto 0);

shared variable matrix : matrix_type := (
    others => (others => '0')
);

shared variable frozen : matrix_type := (
    others => (others => '0')
);

但这需要大量 逻辑单元块来完成。如果不这样做,我只使用了 75/160 个逻辑元素,而当我这样做时,我使用了 207/160 个逻辑元素!由于使用了大量的逻辑元素,Quartus 甚至无法编译此代码。

为什么会这样?初始化这样的矩阵怎么可能需要这么多逻辑元素呢?您是否有减少使用它们或以其他方式初始化它们的解决方案?

谢谢!

因为您可能正在使用 fpga 的切片来存储初始值。 在 fpga 上存储值的最佳方法是使用块 ram。可以用vhdl代码推断出来,也可以用fpga vendor工具创建内存并连接。