FPGA底層原理結構及內部資源

2021-09-26 06:26:53 字數 2437 閱讀 8795

總結博主剛開始接觸fpga時是在大三上eda實驗課,當時就對這種這種晶元的強大好奇,當時實驗課用的vhdl語言,當時覺得這種並行的語言很有趣。後續又自學了verilg,從此就邁上了這條不歸路,經過幾年學習總感覺沒啥進步,當初以為自己會用verilog就代表懂了fpga,對於fpga結構了解很少。本博文主要介紹fpga內部組成以及資源。

fpga內部主要有clb(可配置邏輯塊),iob(輸入輸出單元),block ram,豐富的布局佈線資源以及底層嵌入的邏輯支援例如dsp,fifo等邏輯資源供用。

博主以xilinx的k7系列的一款fpga為例介紹:

clb結構如圖

其中clb又由slicelslicem兩部分組成,其中這兩部分有些許差異,slicel通常用來產生時序與組合邏輯,而slicem和還可以作為mem,移位暫存器,以及multiplexers,例如程式中[15:0]ramm[15:0]就是該部分組成。這兩部分的結構通常由4個6輸入的lut,3個selmux2_1,1個carry4以及8個dff組成

slicemslicel的主要區別在於lut結構不同

slicem中的lut結構如圖

slicel中的lut結構如圖

因此可以實現6輸入或5輸入的邏輯函式,有興趣的同學可以參考**不會點**。這裡博主不再細講。

每個slice中有8個觸發器。這個8個觸發器可分為兩大類:4個只能配置為邊沿敏感的d觸發器(flip-flop)和4個即可配置為邊沿敏感的d觸發器又可配置為電平敏感的鎖存器(flop&latch)。當後者被用作鎖存器的時候,前者將無法使用。

當這8個觸發器都用作d觸發器時,他們的控制埠包括使能端ce、置位/復位埠s/r和時鐘埠clk是對應共享的,也就是就是說共用的。稱為觸發器的控制集。顯然,在具體的設計中,控制集種類越少越好,這樣可以提高觸發器的利用率。

內部的ff可以形成4種觸發器

原語(primitive)

功能描述

原語(primitive)

功能描述

fdce

同步使能,非同步復位

fdre

同步使能,同步復位

fdpe

同步使能,非同步置位

fdse

同步使能,同置復位

其中fdpe源語的寫法如下

fdpe #(

.init(1'b0)

)fdpe_inst(

.q(q),

.c(c),

.ce(ce),

.pre(pre),

.d(d)

);

其他幾種寫法都可以在vivado中的language template中找到。

可程式設計輸入/輸出單元簡稱i/o單元,是晶元與外界電路的介面部分,完成不同電氣特性下對輸入/輸出訊號的驅動與匹配要求。為了便於管理和適應多種電器標準,fpga的iob被劃分為若干個組(bank),每個bank的介面標準由其介面電壓vcco決定,乙個bank只能有一種vcco,但不同bank的vcco可以不同。只有相同電氣標準的埠才能連線在一起,vcco電壓相同是介面標準的基本條件。

bram結構如圖

其中bram由兩部組成,上部分是18ramb下半部分為fifo18。通過原語可以呼叫該部分資源利用,且不會占用clb資源。其中原語在vivado中的language template中找到。

另外在內部資源中還有mmcm時鐘管理單元以及dsp等資源,這裡就不再繼續敘述,感興趣的同學可以查閱相關資料。對fpga有乙個清晰的認識對於我們寫**,後續時序分析,以及**的魯棒性都有益處。

FPGA結構及工作原理

現場可程式設計門陣列 field programmable gate array 是基於查詢表 look up table,lut 結構的,由於lut主要適合於sram工藝生產,所以大部分fpga都是基於sram工藝的。fpga的基本結構是由可配置邏輯塊 clb,configurable logic...

fpga結構主體 FPGA內部結構

補充說明 實際開發中可以從這四個方面認識fpga的內部結構,分別是 可配置邏輯塊 clb 輸入輸出塊 iob 佈線通道 routing channels 可程式設計開關 psw 實際中,主要用clb用來衡量fpga的可使用資源數。clb主要包含查詢表 lut 和d觸發器,分別組成fpga的組合邏輯單...

FPGA布局及資源優化

3.fpga pcb佈線時會遇到調整線序的問題。1 這要根據專案需求看調整後的布局是否滿足專案需求,調整好後一定要原理圖工程師給出最新的原理圖,最後fpga根據新布局重新驗證管腳等。千萬不要口口相傳丟失了資訊。2 ddr換線序可以參照xilinx的mig手冊,仔細核對的。3 ddr pcb佈線所需的...