【发布时间】:2014-01-30 01:50:58
【问题描述】:
attribute ram_style: string;
attribute ram_style of ram : signal is "distributed";
type dist_ram is array (0 to 99) of std_logic_vector(7 downto 0);
signal ram : dist_ram := (others => (others => '0'));
begin
--Pseudocode
PROCESS(Clk)
BEGIN
if(rising_edge(Clk)) then
ram(0) <= "0";
ram(2) <= "1";
ram(3) <= "2";
ram(4) <= "3";
ram(5) <= "1";
ram(6) <= "2";
...
...
ram(99) <= "3";
end if;
END PROCESS;
在上述场景中,完整的 ram 在 1 个时钟周期内更新,但是如果我使用 Block ram,我将需要至少 100 个时钟周期来更新整个内存,而不是用作 1 个时钟周期分布式内存。
我也明白不建议将分布式内存用于大型 内存,因为它会占用 FPGA 资源。 那么,为了实现最佳吞吐量,这种情况下的最佳设计是什么(比如几 KB 内存)。
假设 Xilinx FPGA,我应该使用块 ram 还是分布式 ram。非常感谢您的建议。
谢谢你的回复,让我说得更清楚一点。 我的目的不是为了 ram 初始化, 我有 100 x 20(8 位)内存块,需要在之后更新 一定的计算。 在这些计算之后,我必须存储然后将其用于下一次迭代。 这是一个迭代过程,预计我将完成至少 2 次迭代 在 3000 个时钟周期内。 如果我使用块 ram 来存储这些系数,那么只需读写 我需要至少(100 * 20)个周期和一些延迟,这不符合我的要求 要求。 那么在这种情况下我应该如何进行设计。【问题讨论】: