FPGA內(nèi)部結(jié)構(gòu)及工作原理
FPGA是英文Field Programmable Gate Array的縮寫(xiě),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在PAL、GAL、EPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門(mén)電路數(shù)有限的缺點(diǎn)
FPGA芯片結(jié)構(gòu)
FPGA芯片主要由三部分組成,分別是IOE(input output element,輸入輸出單元)、LAB(logic array block,邏輯陣列塊,對(duì)于Xilinx稱之為可配置邏輯塊CLB)和Interconnect(內(nèi)部連接線)。
?IOE
IOE是芯片與外部電路的物理接口,主要完成不同電氣特性下輸入/輸出信號(hào)的驅(qū)動(dòng)與匹配要求,比如從基本的LVTTL/LVCMOS接口到PCI/LVDS/RSDS甚至各種各樣的差分接口,從5V兼容到3.3V/2.5V/1.8V/1.5V的電平接口,下面是ALTERA公司的Cyclone IV EP4CE115F29設(shè)備的IOE結(jié)構(gòu)

EP4CE115F29設(shè)備的IOE結(jié)構(gòu)圖
LAB
LAB是FPGA的基本邏輯單元,其實(shí)際的數(shù)量和特性依據(jù)所采用的器件的不同而不同,EP4CE115F29設(shè)備的每個(gè)LAB的布局包括16個(gè)LE、LAB控制信號(hào)、LE carry chains、Register chains和Local interconnect,其LAB結(jié)構(gòu)圖如下:

LAB結(jié)構(gòu)圖
查找表LUT(Look-Up-Table)其本質(zhì)是一個(gè)靜態(tài)存儲(chǔ)器SRAM,目前FPGA多采用4輸入的LUT,每個(gè)LUT可以看作一個(gè)有4位地址線的16x1的RAM。當(dāng)我們通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路后,F(xiàn)PGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能的結(jié)果,并把結(jié)果事先寫(xiě)入RAM。這樣,在FPGA工作時(shí),每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出。

LUT的實(shí)現(xiàn)原理圖
Interconnect
FPGA內(nèi)部連接線很豐富,根據(jù)數(shù)據(jù)手冊(cè)的描述,主要有圖3中的Row interconnect、column interconnect、Direct link interconnect、和Local interconnect和Register chain interconnect(寄存器之間連接的連接線)。
內(nèi)部連接線聯(lián)通FPGA內(nèi)部的所有單元,而連線的長(zhǎng)度和工藝決定著信號(hào)再連接線上的驅(qū)動(dòng)能力和傳輸速度。在實(shí)際開(kāi)發(fā)中,設(shè)計(jì)者不需要直接選擇連接線,布局布線器可自動(dòng)地根據(jù)輸入邏輯網(wǎng)表(這由綜合生成)的拓?fù)浣Y(jié)構(gòu)和約束條件選擇連接線來(lái)連通各個(gè)邏輯單元,所以,從本質(zhì)上來(lái)說(shuō),布線資源的使用方法和設(shè)計(jì)的結(jié)果有密切和直接、直接的關(guān)系。
FPGA工作原理
FPGA的內(nèi)部結(jié)構(gòu)主要包含可配置的邏輯塊(CLB)、輸入輸出塊、布線資源和可編程開(kāi)關(guān)。其中可配置的控制塊是FPGA的主要資源指標(biāo),在芯片內(nèi)部以二維陣列的形式排布。在CLB中包含查找表和D觸發(fā)器,查找表(LUT)負(fù)責(zé)給芯片提供組合邏輯,D觸發(fā)器負(fù)責(zé)提供時(shí)序邏輯,為設(shè)計(jì)數(shù)字電子系統(tǒng)提供資源。其中的查找表是一個(gè)16*1的RAM,具有RAM的物理結(jié)構(gòu),但是在作用上是類似ROM,負(fù)責(zé)存儲(chǔ)Quartus II綜合生成的邏輯電路的各種可能的運(yùn)行結(jié)果,在FPGA工作的時(shí)候,依據(jù)端口輸入的數(shù)據(jù)流或者是邏輯流,在RAM中取出對(duì)應(yīng)的數(shù)字邏輯運(yùn)算,配合D觸發(fā)器可以完成數(shù)字電子系統(tǒng)需要的組合邏輯和時(shí)序邏輯。設(shè)計(jì)者在進(jìn)行軟件設(shè)計(jì)的時(shí)候,依據(jù)設(shè)計(jì)目標(biāo),將電路功能以代碼的形式描述出來(lái),Quartus II負(fù)責(zé)對(duì)代買(mǎi)進(jìn)行編譯和綜合,得到設(shè)計(jì)電路的各種可能結(jié)果,下載到FPGA的時(shí)候,這些數(shù)據(jù)都存儲(chǔ)在CLB的查找表中。系統(tǒng)開(kāi)始工作時(shí),在數(shù)據(jù)流或者是邏輯流的驅(qū)動(dòng)下,在查找表中取出對(duì)應(yīng)的數(shù)字邏輯,然后和D觸發(fā)器配合完成數(shù)字電子系統(tǒng)的組合邏輯設(shè)計(jì)和時(shí)序邏輯設(shè)計(jì)。
明德?lián)P最近制作了FPGA知識(shí)點(diǎn)分享,歡迎進(jìn)來(lái)一起學(xué)習(xí)交流