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





