1. 程式人生 > 其它 >【基本知識】CLB、Slice、logic cell、LUT...

【基本知識】CLB、Slice、logic cell、LUT...

邏輯資源:

以Xilinx-SPARTAN6-XC6SLX25為例

 

 

 

 LC ---Logic Cell---邏輯單元

      首先介紹概念最簡單的邏輯單元,Logic Cell是Xilinx定義的一種標準,用於確定不同系列器件的“大小”。而在所有器件中,LC與LUT都有一個比例,但不同器件的LUT和FF搭配不一定相同,因此該比例往往會在資料手冊中給出。例如在SPANTAN-6的UG384中就給出:

 

  此外可以看看社群的回答: https://forums.xilinx.com/t5/Virtex-Family-FPGAs-Archived/logic-cell-vs-CLB/td-p/743699 

 

CLB---Configurable Logic Block

       可配置邏輯塊,是實現時序電路與組合電路的重要邏輯資源。CLB由多個(一般為4個或2個SPANTAN-6,並行垂直列)相同的Slice和附加邏輯(算數和進位鏈)構成。每個CLB模組不僅可以用於實現組合邏輯和時序邏輯,還可以配置為分散式RAM和分散式ROM。

 

 

  

 

 

 

 

 

 

 

 

 

 

 

 

 

SPARTAN-6中每一個CLB的資源如下:

LS---Logic Slice

       邏輯片,邏輯片由LUT、FF、各種邏輯(門陣列)組成。Slice有三種類型,分別是:SliceL(logic)與SliceM(memory)、SliceX。在每一列CLB中有兩列Slice,其中一列為SliceX,另一列M與L交替。他們特徵/功能如下表。

 

       可以從表中看出就功能而言M>L>X。

       SliceM

       SliceM中的LUT可作為6輸入1輸出的LUT/相同5地址的雙5輸入2獨立輸出的LUT。同樣可配置為64位/雙32位(1個32位位移暫存器SRL32/2個可定址的16位移暫存器SRL16s)的分散式RAM,在CLB中,每個LUT的輸出可以及存在FF內。

       簡言之,SliceM可以作為查詢表、觸發器、寬位多路資料選擇器、進位邏輯、分散式RAM、移位暫存器等。

 

       SliceL

       查詢表、觸發器、多路資料選擇器、進位邏輯。

 

 

 

 

       SliceX

       查詢表、觸發器。

 

 

 

在SPANTAN-6中,一個Slice包含4個6輸入LUT和8個FF以及多種邏輯。幷包含SliceM(1/4),SliceL(1/4),SliceX(1/2)。(1個LS包含6.4個LC,故3758*6.4=24051.2個LC。

       Q:Slice功能有哪些?

       可以佈局佈線、可以做運算、等等,SliceM還可做RAM和位移暫存器。

 

LUT---Look Up Table

       查詢表是最FPGA中實現邏輯的基本單元,通常有4輸入查詢表和6輸入查詢表(4/6 input LUT)。

       以4輸入查詢表為例,可以看成4位地址輸入,1位資料輸出的儲存器,儲存的內容是真值表,依照輸入的地址的真值輸出對應的資料。

       LUT是組合的,如果RTL是時序電路,則實際上是LUT+FF組成。

LUT就是一個4/6地址為的RAM。

Q:為什麼是4/6輸入?

       因為對於多輸入的訊號處理的時候,就需要有多個LUT的級聯來實現,而級聯有不可避免的會導致延時過分,導致時序不滿足。因此在實際的FPGA產品中多采用的是4輸入或者6輸入的LUT。(更快,滿足時序)

 

 

 

LUT的重要作用-邏輯函式發生器

Spartan-6中的函式生成器中,每個Slice中的四個函式生成器(A、B、C和D)有6個獨立輸入(A1-A6)和2個獨立輸出(O5-O6)。本質上,邏輯函式發生器儲存的是真值表(Truth Table)的內容,而真值表則是通過布林表示式獲得。SPARTAN-6中函式生成器可以實現6輸入布林表示式(O6輸出)或者5輸入布林表示式(O5和O6),只要這兩個布林表示式共享公共輸入即可。

 

       查詢表的輸出可以從O6直接輸出,或者從AMUX, BMUX, CMUX, DMUX輸出O5;O6輸出也可進入專用異或門、O5也可進位邏輯鏈; O6輸出進入進位邏輯多路複用器的選擇線、或者儲存單元的D輸入;或者O6進入3輸入D選擇器。

布林表示式:

從最基本的層次來說,所有的布林表示式,不論它的長短如何,其值只能是true或false。

儲存單元

       Slice包含8個儲存單元,有4個可以配置為由邊沿觸發的D觸發器或者敏感鎖存器,D觸發器輸入可由LUT輸出直接觸發或者經過一些門或者旁路Slice等;另外4個可配置為觸發器由邊沿觸發的D觸發器,但是當前4個鎖存時不能使用。

 

 

 

 

Distributed-RAM

       分散式RAM,與塊RAM相比消耗邏輯資源,即SliceM中的LUT。Distributed-RAM適合儲存小型快取資料、FIFO或寄存檔案。對於大型儲存需求使用塊RAM。分散式RAM是同步寫資源非同步讀資源,然而同步讀資源可以通過新增一個FF在同一個Slice中實現,新增FF可以降低延遲。SliceM中的LUT可以通過多種組合方式來儲存更多資料。

 

 

 

 

ROM

       每個函式發生器可設定為64*1的ROM。

 

 

 

 

移位暫存器

       SliceM中的函式發生器還可以配置為移位暫存器

      

 

 

 

 

 

 

資料選擇器

       4:1需要1個LUT;       8:1需要2個LUT;       16:1需要4個LUT 

       4:1選擇器可以由Slice中的LUT和FF同時組成。

 

 

 

 

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  8:1選擇器由Slice中的LUT、FF、三通道選擇器組成,如下圖。

 

 

 

快速超前進位邏輯

       在SliceM&L中包含專用的進位邏輯,用於在一個片中執行快速算術加減法。每個CLB都有一個進位鏈,這些進位鏈可以級聯形成更寬的加減邏輯。

       每個Slice中向上的進位鏈的高度為4位。在每一位中都有一個進位選擇器和一個專用異或門來對對應位的運算元進行加減。由圖可見與LUT的重要作用-邏輯函式發生器相對應。