1. 程式人生 > >Xilinx-7系列FPGA架構學習 --- 深入理解LUT

Xilinx-7系列FPGA架構學習 --- 深入理解LUT

Achievement provides the only real pleasure in life.

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

LUT的一個重要功能是邏輯函式發生器。本質上,邏輯函式發生器儲存的是真值表(Truth Table)的內容,而真值表則是通過布林表示式獲得。在vivado中,開啟網表文件,選擇相應的LUT,在property視窗中可以看到真值表。

從邏輯電路角度看,LUT是構成組合邏輯電路的重要單元,正因為如此,也成為了時序電路中,影響邏輯級數的重要因素。瞭解常規電路的邏輯級數對於設計初期時序評估是很有必要的。

以加法器為例:相應的RTL程式碼如下(因為verilog不支援二維輸入輸出,採用systemverilog語法)

module adder # ( 
                      parameter W = 16  // Width of the Adders
                    )
                    (
                     // Clock 
                     input clk,
                     // First input
                     input logic signed [W-1:0] a,
                     // Second input
                     input logic signed [W-1:0] b,
                     // Output
                     output logic signed [W-1:0] out
                    );
logic signed [W-1:0] a_r;     
logic signed [W-1:0] b_r;

always @ (posedge clk)
begin
  a_r <= a;
  b_r <= b;
  out <= a_r + b_r;
end
endmodule

邏輯級數如下所示:


可以看出邏輯級數3(LUT+carry+carry)。同理得到,對於32bit為6,48bit邏輯級數為8。【其實邏輯級數有點高了,對於跑300M+有點困難,後面的文章會有解決方案】。

1個LUT6可以實現4選1的資料選擇器(MUX),同時LUT6可以與SLICE中的F7MUX、F8MUX、F9MUX等一起構成更大MUX。對於8選1的MUX,其邏輯級數為2(1個LUT+1個F7MUX)。

對於16選1的MUX,其邏輯級數為3(1個LUT+1個F7MUX+1個F8MUX);

而32選1的MUX可在一個SLICE(針對UltraScale和UltraScale Plus晶片)中實現,消耗8個LUT6,4個F7MUX,2個F8MUX和1個F9MUX,因此,邏輯級數為4(1個LUT+1個F7MUX+1個F8MUX+1個F9MUX)。


module mux
 
 (
     // Clock 
       input logic clk,
        // First input
       input logic i0,i1,i2,i3,i4,i5,i6,i7,
       // Second input
       input logic [2:0] sel,
       // Output
       output logic signed q
);

[email protected](posedge clk) begin
   case(sel)
      3'd0: q <= i0;
      3'd1: q <= i1;
      3'd2: q <= i2;
      3'd3: q <= i3;
      3'd4: q <= i4;
      3'd5: q <= i5;
      3'd6: q <= i6;
      3'd7: q <= i7;
      default: q <= 'd0;
   endcase
end
endmodule

從上圖可以看出,8選1,2級邏輯級數(LUT + F7MUX)。同樣,16選1是3級,32選1是4級。

還有一種常見的運算:比較運算關係。

module comparator
 
 #(
   parameter DW = 4
   )
 (
     // Clock 
       input logic clk,
        // First input
       input logic signed [DW - 1 : 0]opa,
       // Second input
       input logic signed [DW - 1 : 0]opb,
       // Output
       output logic res
);
logic signed [DW - 1 : 0] opa_r = '0;
logic signed [DW - 1 : 0] opb_r = '0;
logic res_i;
assign res_i = (opa_r < opb_r);
[email protected](posedge clk) begin
   opa_r <= opa;
   opb_r <= opb;
   res <= res_i;
end
      

endmodule

report logic levels顯示為3級邏輯級數。

總結表格如下:

常用操作邏輯級數
8bit16bit32bit
有符號加法368
資料選擇334
比較334

通過以上總結可以看出,一些平常的操作,加法/資料選擇/比較,邏輯級數都在5級左右。其實在高頻(250M以上),其時序問題就會出現了。

【參考】:

1. 高亞軍 《查詢表用於組合邏輯》

2. UG474 7Series_CLB.pdf

相關推薦

Xilinx-7系列FPGA架構學習 --- 深入理解LUT

Achievement provides the only real pleasure in life.有所成就是人生唯一的真正的樂趣。LUT的一個重要功能是邏輯函式發生器。本質上,邏輯函式發生器儲存的是真值表(Truth Table)的內容,而真值表則是通過布林表示式獲得。

Xilinx-7系列FPGA架構學習 --- CLB/LUT/...

Achievement provides the only real pleasure in life.有所成就是人生唯一的真正的樂趣。通過xilinx vivado提供給implementment,可以看到實際情況(vivado 2017.4 kintex 7為例):每個C

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

Achievement provides the only real pleasure in life.有所成就是人生唯一的真正的樂趣。xilinx7系列FPGA主要包括:Spartan®-7/Arti

Xilinx-7系列FPGA架構—— CLB

        xilinx7系列FPGA主要包括:Spartan®-7/Artix®-7/Kintex®-7/Virtex®-7。其效能/密度/價格也隨著系列的不同而提升。其中以Virtex-7有著極高的系統性能和資源。本篇主要介紹其組成的基本單元configurable

xilinx 7系列FPGA之電源簡介

前幾篇咱們說了FPGA內部邏輯,本篇咱們再聊一聊7系列FPGA的供電部分。   首先咱們說spartan7系列,通常咱們需要使用以下電源軌:   1,    VCCINT FPGA內部核心電壓。其不損壞FPGA器件的

xilinx 7系列FPGA之SelectIO(3)_高階IO邏輯資源簡介

上一篇咱們介紹了IO邏輯資源,本篇咱們來聊一聊高階的IO邏輯資源,即ISERDESE2模組和OSERDESE2模組。   所謂ISERDESE2模組,即Input serial-to-parallel converters。該模組的作用就是實現高速源同步輸入資料的串並轉換。

xilinx 7系列FPGA之SelectIO 篇(1)_IO介面簡介

從本篇開始的接下來共三篇,咱們聊一聊xilinx 7系列FPGA的SelectIO。所謂SelectIO,就是I/O介面以及I/O邏輯的總稱。SelectIO 篇可以分成3部分:第1部分介紹I/O的電氣特性,第2部分介紹I/O邏輯資源,第3部分介紹高階的I/O邏輯資源(serializer/de

xilinx 7系列FPGA配置篇簡介

今天咱們聊聊xilinx7系列FPGA配置的相關內容。總所周知FPGA上電後,其工作的邏輯程式碼需要從外部寫入FPGA,FPGA掉電後其邏輯程式碼就丟失,因此FPGA可以被無限次的配置不同的邏輯程式碼,但FPGA需要配備外部的非易失儲存器來儲存其邏輯程式碼或者通過微控制器、DSP或者其它控制器來

xilinx 7系列FPGA之XADC簡介

今天咱們來聊一聊FPGA裡面的XADC功能。XADC即Xilinx公司的FPGA裡整合的一個ADC模組、溫度感測器、電壓感測器的集合。在7系列FPGA裡,除了少數spartan系列的低端FPGA沒有XADC外,其它所有的7系列FPGA裡都有XADC模組。 XADC包含2個通道的模擬差分輸入、

xilinx 7系列FPGA之儲存器篇簡介

上一篇咱們說了slice,提到了其與全域性時鐘在一起就可以實現任意的組合邏輯和時序邏輯功能,但很多時候咱們還需要將FPGA內部的資料暫時儲存,用作它用。Slice作為FPGA最基本的單元,也是能夠完成資料儲存的功能,但顯然有些大材小用,因此xilinx公司在其FPGA內部專門集成了很多儲存器模組

xilinx 7系列FPGA之slice篇簡介

xilinx 7系列FPGA之slice篇簡介 Xilinx的官方文件在介紹FPGA的邏輯資源時通常是按照CLB(Configurable Logic Block)來介紹,把CLB作為FPGA裡的最小邏輯單元。但是CLB是由2個slice構成,因此平時大家都把slice掛嘴邊,稱為最

xilinx 7系列FPGA時鐘篇(4)_CMT簡介

xilinx 7系列FPGA時鐘篇(4)_CMT簡介 上篇咱們僅僅簡要的介紹了時鐘的用法,並未詳細的說明,主要是因為很多時鐘用法是針對特定的應用需求,無法一一介紹。本篇咱們將重提上篇的CMT時鐘模組,聊一聊它的用法。可以這麼說,每個靠譜的FPGA應用裡都應該用到CMT模組。 在7

xilinx 7系列FPGA時鐘篇(3)_時鐘操作法則

xilinx 7系列FPGA時鐘篇(3)_時鐘操作法則 上一篇咱們介紹了7系列FPGA的時鐘區域內部結構,本篇咱們接著介紹如何實際操作時鐘。不說其它的,直接先上兩張圖,大家如果能看懂這兩張圖,那麼就不用浪費時間看我接下來的廢話了。。。。。 C:被外部差分/單端時鐘驅動;可

xilinx 7系列FPGA時鐘篇(2)_時鐘區域簡介

xilinx 7系列FPGA時鐘篇(2)_時鐘區域簡介 上一篇咱們介紹了7系列FPGA的整體時鐘架構,知道了FPGA是由很多個時鐘區域組成,時鐘區域之間可以通過Clock Backbone 和CMT Backbone來統一工作。本篇咱們就說一下時鐘區域的內部結構,如圖1所示的虛線框內

xilinx 7系列FPGA時鐘篇 (1)_時鐘結構簡介

xilinx 7系列FPGA時鐘篇 (1)_時鐘結構簡介 說起xilinx的FPGA時鐘結構,7系列FPGA的時鐘結構和前面幾個系列的時鐘結構有了很大的區別,7系列的時鐘結構如圖1所示,理解了這張圖,咱們就對七系列的FPGA時鐘結構瞭如指掌,下面咱們就聊聊這張圖: 1,Cloc

xilinx 7系列FPGA分類簡介

xilinx 7系列FPGA分類簡介 賽靈思公司的7系列FPGA根據不同客戶的應用需求,分為4個子系列,即Spartan7系列、Artix7系列、Kintex7系列以及Virtex7系列。和前幾代FPGA產品不同的是,7系列FPGA採用的是統一的28nm設計架構,客戶在不同子系列的使

xilinx 7系列FPGA分類簡介(轉)

xilinx 7系列FPGA分類簡介 賽靈思公司的7系列FPGA根據不同客戶的應用需求,分為4個子系列,即Spartan7系列、Artix7系列、Kintex7系列以及Virtex7系列。和前幾代FPGA產品不同的是,7系列FPGA採用的是統一的28nm設計架構

深度學習基礎系列(五)| 深入理解交叉熵函式及其在tensorflow和keras中的實現

  在統計學中,損失函式是一種衡量損失和錯誤(這種損失與“錯誤地”估計有關,如費用或者裝置的損失)程度的函式。假設某樣本的實際輸出為a,而預計的輸出為y,則y與a之間存在偏差,深度學習的目的即是通過不斷地訓練迭代,使得a越來越接近y,即 a - y →0,而訓練的本質就是尋找損失函式最小值的過程。   常見的

FPGA開發筆記(xilinx 7系列

    本人才疏學淺,孤陋寡聞,下文若有不當之處,還請賜教 一、verilog注意點 延時語句 begin areg = breg; #10 creg = areg; //在兩條賦值語句間延遲10個時間單位。 end      2.觸發事件 para

FPGA基礎知識24(xilinx 高速收發器系列Xilinx 7 系列的時鐘資源(1))

談到數字邏輯,談到FPGA設計,每位工程師都離不開時鐘。這裡我們簡單介紹一下xilinx 7 系列中的時鐘資源。時鐘設計的好壞,直接影響到佈局佈線時間、timing的收斂情況,FPGA的時鐘設計非常重要,認識FPGA的時鐘資源很有必要。 FPGA設計是分模組的,