Xilinx UltraScale架構(gòu)之可配置邏輯塊CLB
一、概覽

二、UltraScale架構(gòu)
2.1 UltraScale/UltraScale+特點
????UltraScale架構(gòu)是賽靈思器件中一種變革性的架構(gòu),可以處理大規(guī)模的I/O和存儲帶寬,并且因為有許多復(fù)用的內(nèi)部塊單元,從而具有更強的擴展性,在降低功耗方面也優(yōu)于7系列器件。UltraScale架構(gòu)包含了Kintex,Virtex兩個系列。
????UltraScale+是在UltraScale架構(gòu)的基礎(chǔ)上進行了優(yōu)化,相比Ultrascale,降低了BOM成本,在高性能與經(jīng)濟性間取得更好的平衡,同時擁有大量的功耗方面的配置。UltraScale+架構(gòu)有Kintex,Virtex,Zynq 三個系列
2.2 與7系列CLB差異
? 與7系列類似,Ultrascale架構(gòu)的CLB包含了6輸入的查找表LUT,兩個LUT5,分布式存儲器和移位寄存器,高速進位邏輯,更寬的多路復(fù)用器,F(xiàn)F/Latch。
a) Slice:與7系列的一個CLB包含兩個Slice不同的是Ultrascale中一個CLB只有一個Slice,
b)控制信號:每個CLB包含4個時鐘使能信號,在置位/復(fù)位信號前有可取反的設(shè)置
c)分布式RAM:寫使能信號WE和FF的時鐘使能信號分開,在一個slice中,寫使能信號可以直接和三個直接輸入組成8個獨立的寫使能信號
d)LUT:LUT可直接輸出,或和選擇器組合輸出,也可通過FF輸出
e)FF:所有的FF都可配置成邊沿觸發(fā)的觸發(fā)器或鎖存器
f)Carry:單個CLB的進位邏輯擴展到了8bit,可實現(xiàn)更快的運算,每個CLB一條進位鏈
????Ultrascale的CLB是單列結(jié)構(gòu),先比之前的雙列結(jié)構(gòu)
a) 可消除之前的I/O數(shù)量和邏輯布局大小的相互影響,
b) 解決了電源和接地模塊布局位置的限制,電源和接地模塊可放置到器件的任意位置
c) 可以將不同的IP塊相互獨立分布在資源的四周
????Ultrascale的時鐘域CR(Clock Region)和7系列存在差異,CR是以tiles模塊排列的。一個CR包含了60個CLB,24個DSP,12個塊狀RAM,在中間位置存在一個水平時鐘脊HCS。HCS由水平布線資源和水平分布資源,葉子時鐘緩沖器,時鐘網(wǎng)絡(luò)連接單元,和時鐘根組成,關(guān)于詳細的介紹可參考文章/https://www.bilibili.com/read/cv23082926/
三、?CLB結(jié)構(gòu)
3.1??LUT
? 一個Slice包含8個6輸入的LUT和16個FF,Slice按列分布,也可級聯(lián)實現(xiàn)更多的功能,單個LUT6可配置成6輸入單輸出的LUT6,也可配置成2個五輸入單輸出的LUT5。

????對于LUT的數(shù)據(jù),可直接從O端口作為Slice的輸出,或者經(jīng)過選擇器從MUX輸出,也可輸入到FF中再從Q1,Q2輸出,Q1對應(yīng)LUT的O6,Q2對應(yīng)LUT的O5。

????UltraScale架構(gòu)包含兩種類型的Slice, SliceL和SliceM。SliceM中LUT可配置為64bit的分布式RAM,多了寫地址WA和寫使能WE信號,時鐘信號,其中,Slice中的X和I作為數(shù)據(jù)輸入端口。
????將單個SliceM內(nèi)8個LUT組合使用可生成512bit的分布式RAM,將多個SliceM組合可生成大于512bit的分布式RAM。如果需要更大的RAM,可使用塊狀RAM
????SliceM中的LUT也可配置為32bit的移位寄存器,將8個LUT組合使用可配置成256bit的移位寄存器。
3.2 FF
????UltraScale架構(gòu)的器件每個Slice包含16個FF,都可以被配置為D觸發(fā)器或鎖存器Latch。當被配置為鎖存器時,必須以一半為單位進行配置。假設(shè)從下往上8個FF編號為A到H,如果其中一個為鎖存器,其余7個也會被配置為鎖存器,并且當時鐘信號為高電平時,鎖存器時透傳的。

????時鐘信號:每個CLB有2個時鐘輸入clk1,clk2, 2個復(fù)位輸入SR1,SR2用于控制FF,單個控制信號同時連接到8個FF,分為上下兩部分。
????使能信號:時鐘使能信號有4個,CE1,CE2,CE3,CE4,每個使能信號控制4個FF,相互之間獨立。

????置位/復(fù)位信號 :每個CLB中的2個SR輸入可被配置為與時鐘信號同步或異步,可以被配置為置位set或復(fù)位reset信號,但不能同時為置位或復(fù)位信號。如果一個FF有SR信號,同一組的其余FF也是復(fù)用該信號,配置對應(yīng)的原語如下。
a)不進行set/reset設(shè)置
b)同步置位原語FDSE
d)同步復(fù)位原語FDER
e)異步置位原語 FDPE
f)異步復(fù)位原語 FDCE
????INIT:FF的初始化值通過INIT可設(shè)置為0或1,默認情況下,SR為set時INIT=1,為reset時INIT=0。
3.3 多路選擇器Multiplexers
針對單個Slice中的LUT,可實現(xiàn)情況如下
a) 一個LUT配置為4:1選擇器,一個CLB配置為8個4:1的選擇器
b) 兩個LUT配置為8:1選擇器,一個CLB配置為4個8:1的選擇器
c) 四個LUT配置為16:1選擇器,一個CLB配置為2個16:1的選擇器
d) 8個LUT配置為32:1選擇器,一個CLB配置為1個32:1的選擇器
通過內(nèi)部的F7MUX_AB,F7MUX_CD,F7_MUX_GH可將相鄰的LUT進行擴展,兩個F8MUX_BOT和F8MUX_TOP可以擴展兩個F7_MUX的輸出,F(xiàn)9MUX可擴展兩個F8MUX的輸出。
????16:1多路選擇器實現(xiàn)使用了4個LUT,每個LUT的6個輸入中4個為數(shù)據(jù)輸入DATA,2個輸入為選擇位SEL

32:1的多路選擇器使用了Slice中所有的mux,將F7MUX,F(xiàn)8MUX,F(xiàn)9MUX的輸入作為了選擇位,加上LUT的中兩個輸入位,共5位作為選擇位。

3.4 進位鏈Carry Chain
????進位鏈的初始化值CYINIT用于選擇進位鏈的第一個bit,為1表示加法,為0表示減法,AX用于動態(tài)的第一個進位輸入。

四、應(yīng)用
4.1 分布式RAM
????分布式RAM在大容量的存儲和小容量的存儲間提供了一個擇中的選擇,通常大容量的存儲使用塊狀RAM,小容量存儲使用分布式RAM,分布式RAM可以通過例化或IP來使用。相比于塊狀RAM,分布式RAM從資源,性能和功耗方面更佳。
????通常,對于存儲的數(shù)據(jù)小于64bit時,除非沒有多余的SliceM,否則都是使用分布式RAM。對于數(shù)據(jù)大于64bit小于等于128bit時,在選擇分布式RAM和塊狀RAM的原則有以下幾條
a)有塊狀RAM資源時優(yōu)先使用塊狀RAM
b) 如果有異步讀取時,需使用分布式RAM
c) 數(shù)據(jù)寬度大于16bit時,使用塊狀RAM
d)有一定的性能要求時,相比于塊狀RAM,寄存器的分布式RAM在時鐘信號傳輸中時延更小,更少的布局限制。
4.2 移位寄存器
????移位寄存器的原語不會使用同一個slice中的FF,如果要實現(xiàn)同步讀寫,需將輸出Q連接到FF中,并且移位寄存器和FF的時鐘來源是不同的。通過這種方式,將獲取更好的時序,簡化設(shè)計。

固定長度移位寄存器
????可級聯(lián)的32bit移位寄存器(使用原語SRLC32E)不需要使用多路選擇器即可實現(xiàn)任何固定長度的移位寄存器。以72bit長度為例,級聯(lián)后僅需將最后一個移位寄存器的輸入固定到b00111。也可將移位寄存器的長度限定到71bit(地址截止到5'b00110),最后一個移位寄存器連接一個FF。使用SRLC32E原語時,移位寄存器的長度為地址輸入+1。

4.3 進位鏈Carry Chain
????使用進位邏輯可以改善算術(shù)運算(加法器,計數(shù)器,比較器)的性能,對于一些簡單的計數(shù)器或加法器,減法器,工具會自動地綜合出進位邏輯。對于復(fù)雜的計算可使用DSP實現(xiàn),DSP和進位邏輯都可進行算術(shù)運算,但對于一些小計算量時,使用進位邏輯實現(xiàn)將更快,功耗更低。
五、參考資料
賽靈思官網(wǎng)手冊《ug574-ultrascale-clb.pdf》
鏈接:https://pan.baidu.com/s/1hQA1Chjy41gQi6x8YJ8QFA?
提取碼:91v6