FPGA底層架構 - FPGA六大組成部分
掃描二維碼
隨時隨地手機看文章
FPGA底層資源
- 可編程輸入輸出單元(IOB)
- 可編程邏輯單元(CLB)
- 時鐘管理單元(DCM)
- 嵌入塊狀RAM(BRAM)
- 布線資源
- 內(nèi)嵌的專用硬件模塊(硬IP,硬核)
- 內(nèi)嵌的底層功能單元(軟IP,軟核)
-
補充(DSP48、PLL資源、乘法器資源等,)
最重要的部分 可編程輸入輸出單元、可編程邏輯單元、布線資源
IOB內(nèi)部結構(差分)
1.IO、IOB(可編程輸入輸出單元,Input/Output Block)
FPGA的IOB是輸入/輸出塊(Input/Output Block)的簡稱,它是FPGA內(nèi)部實現(xiàn)復雜邏輯的關鍵部分,負責處理輸入輸出信號。IOB內(nèi)部包含了一系列的邏輯單元,用以完成信號的緩沖、驅動、映射等功能。
在Xilinx的FPGA中,IOB內(nèi)部結構可以簡化為以下幾個主要部分:
- 輸入緩沖器(Input Buffers):用于提高信號的魯棒性和減少信號的噪聲干擾。
- 輸出驅動器(Output Drivers):負責將FPGA內(nèi)部邏輯單元的信號驅動到IOB外部。
- 串并轉換(Serial-to-Parallel and Parallel-to-Serial Converters):用于實現(xiàn)信號的串并轉換,以適應不同位寬的信號傳輸。
- 控制邏輯(Control Logic):負責處理IOB的各種配置和功能控制信號。
FPGA基本結構
FPGA IO命名與Bank劃分
FPGA I/O之差分信號
2.CLB(可編程邏輯單元,Configurable Logic Block)
在FPGA中,CLB是實現(xiàn)邏輯功能的基本單元,一個CLB由2個slice組成,slice可以分成以下的兩類:SliceM(Memory)和SliceL(Logic)。這兩種slice的區(qū)別在于它們的LUT不同。
- SLICEM(M:Memory):其內(nèi)部的LUT可以讀也可以寫,可以實現(xiàn)移位寄存器和64bit的DRAM等存儲功能,還可以實現(xiàn)基本的查找表邏輯。
- SLICEL(L:Logic): 其內(nèi)部的LUT只可以讀,只能實現(xiàn)基本的查找表邏輯。
SliceL和SliceM內(nèi)部都包含
-
4個6輸入查找表(LUT6)
- FPGA原理與結構(2)——查找表LUT(Look_Up_Table)
- FPGA原理與結構(5)——移位寄存器(Shift Registers)
- FPGA原理與結構(6)——分布式RAM(Distributed RAM,DRAM)
- RAM分類及實現(xiàn)
-
3個數(shù)據(jù)選擇器(MUX)
- FPGA原理與結構(4)——數(shù)據(jù)選擇器MUX(Multiplexers)
-
1個進位鏈(Carry Chain)
進位鏈CARRY在FPGA中本質(zhì)上就是解決加減法進位問題的元器件
- FPGA原理與結構(7)——進位鏈CARRY
-
8個觸發(fā)器(Flip-Flop)
- FPGA原理與結構(3)——存儲單元(Storage Elements)
CLB的sliceM中LUT形成的RAM可以同步寫異步讀,而BRAM形成的RAM只能同步寫同步讀。**
補充:
- 單端口RAM:只有一個讀寫口,就是只有一組數(shù)據(jù)線和地址線,就是讀和寫都是通過這個口來訪問 RAM,但是同一個時刻只能訪問一個,要么是讀,要么是寫。
- 偽雙端口 RAM :指的是有兩個讀寫端口,但是一個端口只能讀,一個端口只能寫,偽雙端口 RAM 一般叫 TP RAM。一般 FIFO 內(nèi)部例化的都是偽雙端口 RAM。
- 真雙端口RAM:真雙端口 RAM 指的是有兩個讀寫端口,每個端口都可以獨立發(fā)起讀或者寫。
3.時鐘管理單元
-
區(qū)域(Region):每個FPGA器件被分為多個區(qū)域,不同的型號的器件區(qū)域數(shù)量不同。時鐘資源
-
FPGA時鐘資源主要有三大類:時鐘管理單元、時鐘IO、時鐘布線資源。
-
時鐘管理模塊:不同廠家及型號的FPGA中的時鐘管理資源會有一些差異,主要功能是對時鐘的頻率、占空比、相位等功能的管理。例如:PLL,DLL,DCM,MMCM(混合模式時鐘管理器)等。
-
Clock 10:時鐘IO,F(xiàn)PGA的時鐘I0分布在不同的區(qū)域。像xiinx的時鐘IO分為MRCC(全局時鐘pin)和SRCC(局部時鐘pin)。
-
Clock Routing Source:時鐘布線資源含有時鐘線以及時鐘緩沖器,數(shù)量上會比前兩者多;含全局時鐘網(wǎng)絡(GCLK)和局部時鐘網(wǎng)絡(RCLK)的時鐘線及緩沖(BUFG,BUFR等)。
PLL
MMCM
DCM(數(shù)字時鐘管理器,Digital Clock Manager)
通過 FPGA 芯片提供的DCM 功能, 可靈活地控制時鐘頻率、相位轉換和時鐘脈沖相位差。
- FPGA時鐘資源1
- FPGA時鐘資源2
zynq
器件延時T C O T_{CO}TCO大概0.2ns
建立時間大概0.01ns
保持時間大概0.12ns
3.1 時序約束
-
為什么要時序約束?——綜合工具是以時序約束為驅動的進行布局布線的策略,即時序約束是綜合工具進行綜合的參考點
-
同步系統(tǒng)的要求
- 跨時鐘域設計
- 數(shù)據(jù)源端由寄存器產(chǎn)生,并且數(shù)據(jù)到下一個寄存器幾乎是直接相連(出現(xiàn)的概率較低)
- 那么什么時候建立時間不滿足呢——建立時間裕量不夠,T l o g i c T_logicTlogic大,即組合邏輯處理時間過長
- 寄存器(觸發(fā)器)的建立時間滿足要求
- 寄存器(觸發(fā)器)的保持時間滿足要求
- 數(shù)據(jù)的發(fā)起沿和數(shù)據(jù)的捕獲沿相差一個CLK
時序分析模型
時序分析模型
-
時序約束1——數(shù)據(jù)傳輸模型
通過vivado官方例程IP學習時序約束
一種建立時間不滿足的情況以及修改方法:分成多個always塊寫
4.塊狀RAM(BRAM,block ram)
- FPGA BRAM
Xilinx 7系列FPGA的bram最小大小為36Kb,可配置為兩個18Kb,也可級聯(lián)成更大的RAM,另外每個bram內(nèi)封有寄存器,可作為輸出緩沖,好處便是不需要利用CLB的觸發(fā)器(這樣會加大延時
5.布線資源
FPGA中的布局布線資源主要包括三部分:CB、SB和行列連線。布線資源的目的是為了能夠讓位于不同位置的邏輯資源塊、時鐘處理單元、BLOCK RAM、DSP和接口模塊等資源能夠相互通信,從而協(xié)調(diào)合作,完成所需功能。FPGA中的布線資源,就好比繪制PCB板時的連線資源一樣,雖然器件A和器件B的位置和連接關系沒有任何改變,但很可能因為周邊電路的布局、布線的一些變化,使得前后兩次A、B之間的連線形態(tài)發(fā)生很大的變化。因此,與采用固定長度的金屬線將所有宏單元連接在一起的CPLD不同,F(xiàn)PGA中任意兩點之間的線延遲是無法預測的,必須等到布局、布線完成之后才能確定。這也是為什么在FPGA的開發(fā)中,時序約束和時序分析這兩樣工作是必不可少的。
布線資源連通FPGA內(nèi)部的所有單元,而連線的長度和工藝決定著信號在連線上的驅動能力和傳輸速度。主要分為四類:全局布線資源、長線資源、短線資源、分布式布線資源。
6.DSP核
Xilinx FPGA中可用的最復雜的計算塊是下圖所示的DSP48塊
DSP48
DSP48塊是嵌入FPGA結構中的算術邏輯單元(ALU),由三個不同的塊組成的鏈。DSP48中的計算鏈包含一個加/減單元,連接到一個乘法器,再連接到最后的加/減/累加引擎。這條鏈允許單個DSP48單元實現(xiàn)如下形式的函數(shù):P=Bx(A+D)+C or P+=Bx(A+D)





