2017-02-25 68 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(但也許這只是我)。