XILINX FPGA 7系之 CLB/LUT/FF/Multiplexers
目錄
1、CLB
2、Slice
2.1、SLICEM
2.2、SLICEL
2.3、SLICEL Vs SLICEM
3、LUT
4、FF
5、Multiplexers
5.1、MUX(4:1 )
5.2、MUX(8:1 )
5.3、MUX(16:1 )
6、Summary
?
Xilinx FPGA 的內部結構中最基本的構成便是 CLB 了,在更好的利用 Xilinx FPGA 之前,還是有必要更多的了解它的具體組成;
這里以 Xilinx 7 系列 FPGA 為 Base 來介紹它的基本組成單元 CLB,?Xilinx 官方文檔關于 CLB 的介紹位于:
ug474_7Series_CLB.pdf
1、CLB
CLB 的全稱是 Configurable Logic Block,即可編程邏輯塊,邏輯電路就是靠對 CLB 進行配置來實現各種各樣的電路。一個 CLB 由如下部分組成:
1 個 CLB 包含了稱之為 2 個 Slice 的單元,每個 Slice 之間并沒有直接聯系,而是都連接到一個交換矩陣,以訪問通用路由矩陣;既然 CLB 由 2 個 Slice組成,那么接下來看看 Slice 的組成;
?
2、Slice
Xilinx 7 系列的 Slice 分為兩類:SLICEL?和 SLICEM,FPGA中三分之二的 slice 是 SLICEL 而剩余的是 SLICEM
SLICEL?和 SLICEM 的區別主要是組成的資源不一樣,所以他們最終能夠構成的東西也有所區別;
2.1、SLICEM
一個 SLICEM 類型的 slice 的結構
由 SLICEM 的組成,從最左邊開始看,最左邊:
第一列:代表的是 LUT(Look Up Table),它是 CLB 的基本組成單元,可以看到,一個 SLICEM 擁有 4 個 6 輸入的 LUT(A6:A1),O5、O6 是輸出;
第二列:從下往上看,由 CIN 一直到 COUT,這部分是進位邏輯;
第三列:輸入的 D,輸出是 Q,是 D 觸發器;
第四列:MUX;
第五列:也是 D 觸發器(上面寫了 FF/LAT,說明也可以配置為鎖存器);
?
2.2、SLICEL
一個 SLICEL 類型的 slice 的結構
可以看到?SLICEL 類型的組成和 SLICEM 的組成基本差不多,仔細的看第一列呢?SLICEL 的 LUT 上明顯比 SLICEM 的少很多東西,SLICEL 類型只有 A6:A1 和 O5、O6 輸出,而?SLICEM 上內容更多;它代表?SLICEM 的 LUT 還可以作為?Distribute RAM(分布式內存)和移位寄存器邏輯;
?
2.3、SLICEL Vs SLICEM
每個 SLICEL 和?SLICEM 都擁有 4 個 6 輸入 LUT,進位邏輯,以及 MUX 多路復用,和 8 個 FF,slice 均使用上面的元素來提供邏輯、算術;
SLICEM 的 LUT?能夠配置為 Distribute RAM(分布式內存)和 Shift Register (移位寄存器邏輯) ;
Notes:在組成 CLB 的時候,有兩種可能,一種是由兩個 SLICEL 構成,另外一種是有一個 SLICEM 和 SLICEL;
所以整體來說,CLB 的構成如下所示:
?
3、LUT
LUT 查找表(Look Up Table)是 Slice 的基本組成部分,Xilinx 7 系列的 FPGA 內部每個 CLB 包含兩個 Slice,每個 Slice 都包含 4 個 LUT,這些 LUT 都是 6 輸入的(A1:A6),LUT 的本質是 RAM,6 輸入意味著最大尋址是 2^6 也就是 64bit ,您可以將 LUT 想象為有 A1~A6 一共 6 個地址,可尋址 64bit 內容,燒寫的時候,就是把這 64bit 內容準備好,當 A1:A6 輸入不一樣,那么尋址的 bit 內容也不一樣,那么輸出的 O6 也就不一樣;
7系列FPGA中的函數發生器實現為六輸入查找表(LUT)。slice的4個函數發生器(A,B,C和D)中的每一個都有六個獨立輸入(A輸入A1至A6)和兩個獨立輸出(O5和O6)。
1)函數發生器可以實現以下函數功能:
- 任意定義的六輸入布爾函數
- 兩個任意定義的五輸入布爾函數,只要這兩個函數共享公共輸入
- 兩個任意定義的布爾函數(3個和2個或更少輸入)
2)6 輸入功能使用:
- A1-A6 輸入
- O6 輸出
3)兩個 5 輸入或更少的函數使用:
- A1–A5 輸入
- A6 驅動高
- O5 和 O6 輸出
這里需要解釋一下,配置為 1 個 6 輸入的 LUT 和配置成 2 個 5 輸入的 LUT 的具體情況:
一個 LUT 如下:
輸入端為 A1~A6,可以尋址 2^6 = 64bits 的位,也就是 6 輸入的 LUT 最終尋址是一個 bit,最終輸出到 O6 上:
當配置成為 2 個 5輸入的 LUT 的時候呢:
可以看到輸入為 A1~A5,可以尋址就是 2^5=32bits,通過在 64bits 的 LUT 中燒錄不同的 bit,可以做到同樣的 A1~A5 的尋址,對應兩個 32bits 空間存放的內容不一樣,導致輸出的 O6 和 O5 分別代表了兩個 5 輸入的 LUT 的輸出;
?
4、FF
每個 slice 有 8?個 FF( flip-flop 即,觸發器)。
從 SLICEM 和 SLICEL 的圖解可以看到,中間那一列(4個)FF 和最后一列的 FF 對比起來,最后一列 FF 多了 “FF/LAT”,有? “FF/LAT” 的 FF 代表可以配置為邊沿觸發D型觸發器或電平敏感鎖存器,也就是說,一個 Slice 中的 8 個 FF,其中有 4 個只能作為 D 觸發器,另外 4 個可以配置成為 D 觸發器,或者鎖存器;
D輸入可以通過 AFFMUX,BFFMUX,CFFMUX 或 DFFMUX 的 LUT 輸出直接驅動,也可以通過AX,BX,CX或DX輸入繞過函數發生器的BYPASS slice輸入直接驅動。 當配置為鎖存器時,當CLK為低電平時,鎖存器是透明的。對應如下右圖
還有四個額外的存儲單元,它們只能配置為邊沿觸發的D型觸發器。 D輸入可以由LUT的O5輸出驅動,也可以由AX,BX,CX或DX輸入的BYPASS slice輸入驅動。 當原始的四個存儲單元配置為閂鎖時,這四個附加的存儲單元將無法使用。對應如下左圖
slice 中的兩種配置版本: 4個寄存器和4個寄存器/鎖存器
?
5、Multiplexers
7系列FPGA中的函數發生器和相關的多路復用器可以實現以下功能:
- 使用一個LUT的 4:1 多路復用器,每個 Slice 四個 4:1 MUX
- 使用兩個LUT的 8:1 多路復用器,每個 Slice 兩個 8:1 MUX
- 使用四個LUT的? 16:1 多路復用器,每個 Slice 一個 16:1 MUX
5.1、MUX(4:1 )
每個LUT可以配置為4:1 MUX。 4:1 MUX可以通過觸發器在同一片中實現。 一個slice中最多可以實現四個4:1 MUX,如下所示:
注意,這里其實是每一個 LUT 實現成為 MUX,LUT 的輸入還是 A1-A6 一共 6 個,使用其中的 4 個 bit 表示輸入的 4 MUX 的 Input 數據,使用另外 2 個 bit 作為選通信號!所以一個 LUT 可以做成 4:1 MUX,那么一個 SLICE 就可以做成 4 個 4:1 MUX 復用器;
5.2、MUX(8:1 )
每個 Slice 具有一個 F7AMUX 和一個 F7BMUX。 這兩個MUX組合了兩個LUT的輸出,一個slice中最多可以實現 2 個8:1 MUX,如圖所示:
5.3、MUX(16:1 )
當然也可以級聯 4 個 LUT + F7AMUX + F7BMUX 在?F7AMUX + F7BMUX之后在接連 F8MUX 形成 MUX 16:1 這里不在多說;
?
6、Summary
由上所述,可以知道,Xilinx 7 系列(A,K,V,以及 ZYNQ)的 CLB 是衡量 FPGA 的資源的一種標桿,并且:
1 個 CLB 含 2 個 Slice
Slice 分為 SLICEL 和 SLICEM(三分之二的slice是SLICEL而剩余的是SLICEM)
1 個 Slice 包含 4 個 6 輸入的 LUT、8個 FF(4個D觸發器,4個可配D觸發器和鎖存器)
只有 SLICEM 是配置為?Distribute 64bit-RAM 或者 32bit 的 Shift Register 或者 2 個 16bit Shift Register。
1 個 CLB 可能是由 2 個 SLICEL 組成,或者有 1 個 SLICEL + 1 個 SLICEM
LUT? 可以級聯成為 4 個 1:4的 MUX,或者 2 個 1:8 的 MUX,或者1個1:16的 MUX
官方文檔對一個 CLB 的資源描述為:
關于 Carry Chains、distributed RAM 和 Shift Registers 的詳細內容,在以后的章節在接著分析,這里需要記住一點,這個表格中的 2 個 Slices,包含 8 個 LUT,每個 LUT 是 6 輸入的,也就是 64bit,那么 8 個 LUT 不就是 8 x 64bit = 512 bit 啊,為啥只能夠代表 256 的?distributed RAM?因為只有 SLICEM 才能夠被配置成為?distributed RAM,一個 CLB 最多一個 SLICEM,所以need,也就是 256 bits了;
相關參考:
https://blog.csdn.net/huxiaokai2005/article/details/89460269
https://blog.csdn.net/huxiaokai2005/article/details/89460324
https://blog.csdn.net/vivid117/article/details/102841135
總結
以上是生活随笔為你收集整理的XILINX FPGA 7系之 CLB/LUT/FF/Multiplexers的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过限制挖矿病毒cpu占用率来解决挖矿病
- 下一篇: linux开发板ftp,用ftp从lin