1. 程式人生 > >Xilinx-7系列FPGA架構學習 --- CLB

Xilinx-7系列FPGA架構學習 --- CLB

Achievement provides the only real pleasure in life.

有所成就是人生唯一的真正的樂趣。

xilinx7系列FPGA主要包括:Spartan®-7/Artix®-7/Kintex®-7/Virtex®-7。其效能/密度/價格也隨著系列的不同而提升。其中以Virtex-7有著極高的系統性能和資源。本篇主要介紹其組成的基本單元configurable logic blocks(CLBs)。通常來說,我們不需要關心或參與邏輯綜合過程CLBs資源的分配。但是如果遇到了效能/時序挑戰的時候,就需要重新審視設計,掌握每一個可利用的資源。比如distributed RAMs和Block RAMs互換(在可替換的前提下)、DSPs與LUT設計等。同時也有助於掌握更深層次的設計,設計出更加合理的HDL程式碼,和XDC約束檔案。

本文主要參考:xilinx官方文件UG474《7 Series FPGAs Configurable Logic Block》和White Paper《Xilinx 7 Series FPGAs:The Logical Advantage》。


CLBs是實現時序邏輯組合邏輯電路的主要邏輯單元。一個CLB由兩個slice組成,而每個slice由4個6輸入LUT、8個FF、複用器和算術進位單元組成。同時SLICE有區分為二:SLICEL和SLICEM(沒有看到縮寫L/M全程,個人認為是Logic和Multiple縮寫,從下面定義可以看出)。大約2/3的是SLICEL(只能用於logic),剩下的是SLICEM(還可以用於distributed RAMs/SRLs32/SRLs16)。每個CLBs是通過Switch Matrix routing,並不是直接互聯。注意到一句話:Four flip-flops per slice (one per LUT) can optionally be configured as 

latches. In that case, the remaining four flip-flops in that slice must remain unused.每個slice中的4個FF可以做鎖存器,但是剩下的4個FF不能夠再使用,也就是說有50%的資源浪費。這也就是為什麼教科書上說,儘量避免latchs使用,除了時序問題之外,還有資源浪費。從晶片資源手冊也可以看出,以kintex-7為例:


Slices = SliceL + SliceM;SliceL / SliceM = 2;Slices / LUTs = 4;FF / Slices = 8。

兩個slice分別位於CLB的左列底部和右列頂部。這兩個slice不是直接互聯,而是以列為單位,通過一個獨立的進位鏈(Cout&&Cin)

接。如下圖所示:

通過以上的分析,每個CLBs具體的資源配置如下:


注意:如前面所述,只有SLICEM可以配置成distributed RAMs和SRLs。

下面文章,將會詳細分析,每個具體的elements的組成、功能細節以及應用。