Vhdl 最好使用块RAM还是分布式RAM?

Vhdl 最好使用块RAM还是分布式RAM?,vhdl,fpga,ram,Vhdl,Fpga,Ram,现在我正在做一个项目,在这个项目中,我使用FPGA通过i2c将字节从主设备发送到从设备。现在,在我的从属设备中,我想存储传入的数据,我计划使用3-5个数组,每个数组的索引范围从0到71,如下所示: type array1 is array(0 to 49) of std_logic_vector(7 downto 0); type array2 is array(0 to 23) of std_logic_vector(7 downto 0); type array3 is array(0

现在我正在做一个项目,在这个项目中,我使用FPGA通过i2c将字节从主设备发送到从设备。现在,在我的从属设备中,我想存储传入的数据,我计划使用3-5个数组,每个数组的索引范围从0到71,如下所示:

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

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

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

我一直在做一些研究,我知道xilinx有两种不同类型的ram,称为块和分布式,但分布式应该用于小型内存。现在我的问题是,如果我使用这些类型的阵列,它是否足够小,可以使用分布式阵列?还是只使用块比较好?

这取决于您的设计和使用的特定FPGA。 合成工具通常可以为您决定什么是最好的。 只是,如果您希望工具能够为您做出决定,那么您必须以一种既可以实现又可以实现的方式来实现它。对于XilinxFPGA,您可以参考实例,它在“RAM HDL编码技术”中描述了正确的VHDL语法。 即,不可能同时访问多个条目(双端口RAM方式除外)。您需要一定数量的时钟周期来存储和/或检索数据

更多链接:


在您的情况下,分布式或块式内存并不重要。它可能是一种非常低速的设计,需要几百位内存

现在我的问题是,如果我使用这些类型的阵列,它是否足够小,可以使用分布式阵列

这取决于您使用的特定FPGA以及您希望使用它的模式。例如,7系列设备将提供多种不同的访问配置(单、双、四),它们具有不同的内存配置(例如,单个片可能提供256 x 1位单端口RAM)

根据您提供的示例,您可以在分布式RAM中安装一个阵列,其余阵列需要多个DRAM或一个BRAM。值得注意的是,如果您确实混合使用了DRAM/BRAM,那么您需要了解DRAM的读取语义(异步,而BRAM是同步),您需要对此进行说明

如果您的设备上有可用的BRAM,但它们没有被使用,我会优先使用它们而不是DRAM(但可能只有我自己)