2017-02-25 67 views
0

现在我正在开发一个项目,通过i2c使用fpgas将字节从主站发送到从站。现在,在我的奴隶,我要存储的数据在未来,我计划3-5阵列之间,有一个像下面的每一个具有不同指数的取值范围为0〜71:更好使用块RAM或分布式RAM?

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,称为Block和Distributed,但分布式应用于小型存储器。现在我的问题是,如果我使用这些类型的数组是否足够小,可以使用分布式?或者更好地去块?

回答

1

这取决于你的设计和你正在使用的特定FPGA。 综合工具通常可以为您决定什么是最好的。 只有如果您希望该工具能够为您做出决定,则必须以可作为两者实施的方式实施该工具。对于Xilinx FPGA,您可以参考The sysnthesis user guide,它描述了“RAM HDL编码技术”中正确的VHDL语法。 也就是说不可能同时访问多个条目(除了采用双端口RAM方式)。并且您需要一定数量的时钟周期来存储和/或检索数据。

一些更多的链接:

1

在你的情况下,它并不真正的问题 - 分布式或块存储器。这可能是一个非常低速的设计,需要几百位内存。

0

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

这取决于您使用的特定FPGA和您想要使用它的模式。例如,7系列器件将提供多种不同的存取配置(单,双,四),它们具有不同的存储器配置(例如,一个片可能提供256 x 1位,单端口RAM)。

根据您提供的示例,您可能会将其中一个阵列安装在分布式RAM中,其余阵列需要多个DRAM或单个BRAM。值得注意的是,如果您确实使用了DRAM/BRAM混合,则需要了解DRAM的读取语义(异步,与BRAM同步),您需要考虑这些。

如果你在设备上有BRAMs,并且没有被使用,那么我只是将它们优先用于DRAM(但也许这只是我)。