天天看點

FPGA底層資源介紹

目錄

IOB

基本可程式設計邏輯單元(CLB)

BLOCK RAM

DSP48

GTX固核

學了這麼久,也該自己總結下FPGA内部結構了,不能總是說FPGA内部有LUT,觸發器,選擇器,太籠統了,思路一點也不清晰。真懷疑上次我這麼回答的,會不會是以而減分(應該會吧)。

這篇文章結合自己以往所學所遇之經驗來說說FPGA内部之結構。

以K7為例,具體型号是xc7k325tffg676-2為例:

先說說其内部的時鐘域:

FPGA底層資源介紹
FPGA底層資源介紹

從左到右,從下到上,命名為XmYn,其中m為列,n是行。總共有14個時鐘域。

IOB

IOB為可程式設計輸入輸出單元,是晶片與外界電路的接口部分,完成不同電氣特征下對輸入輸出信号的驅動與比對要求。

參考連結

FPGA的Bank分為HP Bank和HR Bank,二者對電壓的要求範圍不同,HR支援更大的電壓範圍。

FPGA底層資源介紹
FPGA底層資源介紹

如下為單個IO的結構:

FPGA底層資源介紹
FPGA底層資源介紹
FPGA底層資源介紹

可見一個IOB裡面不僅包含PAD,還有IBUF以及OBUF。它的附近還有ILOGIC可用。

FPGA底層資源介紹

這些都是其可程式設計特性的支撐。

基本可程式設計邏輯單元(CLB)

每個CLB包含兩個SLICE,SLICE有兩種類型,分别為SLICEL和SLICEM。如下圖為

FPGA底層資源介紹
FPGA底層資源介紹

SLICE中的結構如下:

FPGA底層資源介紹

包含4個6輸入的LUT,二個2選1的多路選擇器,一個進位鍊,還有8個觸發器。

SLICEL和SLICEM的差別在于LUT的不同,下圖左邊為SLICEL的LUT,右邊為SLICEM的LUT:

FPGA底層資源介紹
FPGA底層資源介紹

可見,SLICEM的LUT更加的強大,可以配置為LUT,RAM,ROM或移位寄存器,是以可以實作LUT的邏輯功能,也能作為存儲單元和移位寄存器。

BLOCK RAM

當我們要實作一個SRAM,FIFO以及ROM等,我們需要選擇是使用LUT資源呢還是BLOCK RAM資源。

這裡的BLOCK RAM就是FPGA的内部專有資源之一。

如下圖綠色框裡是DSP資源,而紅色框内是RAM資源。

FPGA底層資源介紹

如下圖第一列為BLOCK RAM36,其中每個block RAM中又分為上下兩塊,上半部分為18RAMB下半部分為FIFO18,

在FIFO例化的時候可以将BLOCK RAM設定為FIFO,不會使用額外的CLB資源,并且這部分RAM是真雙口RAM。

FPGA底層資源介紹
FPGA底層資源介紹
FPGA底層資源介紹

DSP48

DSP資源在上面說RAM時候已經給出了,就是綠色的一列:

FPGA底層資源介紹

可用使用這一資源進行加法,乘法運算,這樣會節省LUT資源。

例如我做FFT的時候,其中的複乘法就用了大量的DSP資源。

GTX固核

GTX固核位于MGT Bank上,在IOB附近,

FPGA底層資源介紹
FPGA底層資源介紹

當然在普通Bank上的IOB附近還有很多時鐘資源,例如PLL,MMCM資源。

FPGA底層資源介紹
FPGA底層資源介紹

大概就這些,當然還有一些細小的結構,這裡不在贅述。

繼續閱讀