1. 程式人生 > >Xilinx FPGA CLB資源總結:slice、分散式RAM和Block ram

Xilinx FPGA CLB資源總結:slice、分散式RAM和Block ram

 來源:http://www.eefocus.com/b3574027/blog/15-05/312609_2e5ad.html

以下分析基於xilinx 7系列

CLB是xilinx基本邏輯單元,每個CLB包含兩個slices,每個slices由4個(A,B,C,D)6輸入LUT和8個暫存器組成。

 同一CLB中的兩片slices沒有直接的線路連線,分屬於兩個不同的列。每列擁有獨立的快速進位鏈資源。QQ截圖20150519192946.png

slice分為兩種型別 SLICEL,  SLICEM .  SLICEL可用於產生邏輯,算術,ROM。 SLICEM除以上作用外還可配置成分散式RAM或32位的移位暫存器。每個CLB可包含兩個SLICEL或者一個SLICEL與一個SLICEM.

7系列的LUT包含6個輸入 A1 -A6 , 兩個輸出 O5 , O6 .

可配置成6輸入查詢表,O6此時作為輸出。或者兩個5輸入的查詢表,A1-A5作為輸入 A6拉高,O5,O6作為輸出。

    一個LUT包含6個輸入,邏輯容量為2^6bit,為實現7輸入邏輯需要2^7容量,對於更多輸入也一樣。每個SLICES有4個LUT,256bit容量能夠實現最多8bit輸入的邏輯。為了實現此功能,每個SLICES還包括3個MUX(多路選擇器)

     F7AMUX  用於產生7輸入的邏輯功能,用於連線A,B兩個LUT 

     F7BMUX  用於產生7輸入的邏輯功能, 用於連線C,D兩個LUT

     F8MUX    用於產生8輸入的邏輯功能, 用於連線4個LUT

      對於大於8輸入的邏輯需要使用多個SLICES, 會增加邏輯實現的延時。

      一個SLICES中的4個暫存器可以連線LUT或者MUX的輸出,或者被直接旁路不連線任何邏輯資源。暫存器的置位/復位端為高電平有效。只有CLK端能被設定為兩個極性,其他輸入若要改變電平需要插入邏輯資源。例如低電平復位需要額外的邏輯資源將rst端輸入取反。但設為上升/下降沿觸發暫存器不會帶來額外消耗。

 分散式RAM

            SLICEM可以配置成分散式RAM,一個SLICEM可以配置成以下容量的RAM

QQ截圖20150519200214.png

        多bit的情況需要增加相應倍數的LUT進行並聯。

        分散式RAM和 BLOCK RAM的選擇遵循以下方法:

        1. 小於或等於64bit容量的的都用分散式實現

         2. 深度在64~128之間的,若無額外的block可用分散式RAM。 要求非同步讀取就使用分散式RAM。資料寬度大於16時用block ram.  

      3. 分散式RAM有比block ram更好的時序效能。 分散式RAM在邏輯資源CLB中。而BLOCK RAM則在專門的儲存器列中,會產        生較大的佈線延遲,佈局也受制約。

 移位暫存器(SLICEM)

       SLICEM中的LUT能在不使用觸發器的情況下設定成32bit的移位暫存器,  4個LUT可級聯成128bit的移位暫存器。並且能夠進行SLICEM間的級聯形成更大規模的移位暫存器。

QQ截圖20150519202621.png

    MUX

       一個LUT可配置成4:1MUX.

       兩個LUT可配置成最多8:1 MUX

       四個LUT可配置成16個MUX

QQ截圖20150519203241.png

   同樣可以通過連線多個SLICES達成更大規模設計,但是由於SLICE沒有直接連線,需要使用佈線資源,會增加較大延遲。

 進位鏈

      每個SLICE有4bit的進位鏈。每bit都由一個進位MUX(MUXCY)和一個異或門組成,可在實現加法/減法器時生成進位邏輯。該MUXCY與XOR也可用於產生一般邏輯。