日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

F​P​G​A​工​作​原​理

發(fā)布時(shí)間:2024/9/21 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 F​P​G​A​工​作​原​理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
FPGA采用了邏輯單元陣列LCA(Logic Cell Array)這樣一個(gè)概念,內(nèi)部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和內(nèi)部連線(Interconnect)三個(gè)部分。 現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)是可編程器件,與傳統(tǒng)邏輯電路和門(mén)陣列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的結(jié)構(gòu)。FPGA利用小型查找表(16×1RAM)來(lái)實(shí)現(xiàn)組合邏輯,每個(gè)查找表連接到一個(gè)D觸發(fā)器的輸入端,觸發(fā)器再來(lái)驅(qū)動(dòng)其他邏輯電路或驅(qū)動(dòng)I/O,由此構(gòu)成了既可實(shí)現(xiàn)組合邏輯功能又可實(shí)現(xiàn)時(shí)序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線互相連接或連接到I/O模塊。FPGA的邏輯是通過(guò)向內(nèi)部靜態(tài)存儲(chǔ)單元加載編程數(shù)據(jù)來(lái)實(shí)現(xiàn)的,存儲(chǔ)在存儲(chǔ)器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的聯(lián)接方式,并最終決定了FPGA所能實(shí)現(xiàn)的功能,FPGA允許無(wú)限次的編程。

電源類(lèi)型

FPGA電源要求輸出電壓范圍從1.2V到5V,輸出電流范圍從數(shù)十毫安到數(shù)安培。可用三種電源:低壓差(LDO)線性穩(wěn)壓器、開(kāi)關(guān)式DC-DC穩(wěn)壓器和開(kāi)關(guān)式電源模塊。最終選擇何種電源取決于系統(tǒng)、系統(tǒng)預(yù)算和上市時(shí)間要求。 如果電路板空間是首要考慮因素,低輸出噪聲十分重要,或者系統(tǒng)要求對(duì)輸入電壓變化和負(fù)載瞬變做出快速響應(yīng),則應(yīng)使用LDO穩(wěn)壓器。LDO功效比較低(因?yàn)槭蔷€性穩(wěn)壓器),只能提供中低輸出電流。輸入電容通常可以降低LDO輸入端的電感和噪聲。LDO輸出端也需要電容,用來(lái)處理系統(tǒng)瞬變,并保持系統(tǒng)穩(wěn)定性。也可以使用雙輸出LDO,同時(shí)為VCCINT和VCCO供電。 如果在設(shè)計(jì)中效率至關(guān)重要,并且系統(tǒng)要求高輸出電流,則開(kāi)關(guān)式穩(wěn)壓器占優(yōu)勢(shì)。開(kāi)關(guān)電源的功效比高于LDO,但其開(kāi)關(guān)電路會(huì)增加輸出噪聲。與LDO不同,開(kāi)關(guān)式穩(wěn)壓器需利用電感來(lái)實(shí)現(xiàn)DC-DC轉(zhuǎn)換。

要求

為確保正確上電,內(nèi)核電壓VCCINT的緩升時(shí)間必須在制造商規(guī)定的范圍內(nèi)。對(duì)于一些FPGA,由于VCCINT會(huì)在晶體管閾值導(dǎo)通前停留更多時(shí)間,因此過(guò)長(zhǎng)的緩升時(shí)間可能會(huì)導(dǎo)致啟動(dòng)電流持續(xù)較長(zhǎng)時(shí)間。如果電源向FPGA提供大電流,則較長(zhǎng)的上電緩升時(shí)間會(huì)引起熱應(yīng)力。ADI公司的DC-DC穩(wěn)壓器提供可調(diào)軟啟動(dòng),緩升時(shí)間可以通過(guò)外部電容進(jìn)行控制。緩升時(shí)間典型值在20ms至100ms范圍內(nèi)。 許多FPGA沒(méi)有時(shí)序控制要求,因此VCCINT、VCCO和VCCAUX可以同時(shí)上電。如果這一點(diǎn)無(wú)法實(shí)現(xiàn),上電電流可以稍高。時(shí)序要求依具體FPGA而異。對(duì)于一些FPGA,必須同時(shí)給VCCINT和VCCO供電。對(duì)于另一些FPGA,這些電源可按任何順序接通。多數(shù)情況下,先給VCCINT后給VCCO供電是一種較好的做法。 當(dāng)VCCINT在0.6V至0.8V范圍內(nèi)時(shí),某些FPGA系列會(huì)產(chǎn)生上電涌入電流。在此期間,電源轉(zhuǎn)換器持續(xù)供電。這種應(yīng)用中,因?yàn)槠骷柰ㄟ^(guò)降低輸出電壓來(lái)限制電流,所以不推薦使用返送電流限制。但在限流電源解決方案中,一旦限流電源所供電的電路電流超過(guò)設(shè)定的額定電流,電源就會(huì)將該電流限制在額定值以下。

配電結(jié)構(gòu)

集中式電源結(jié)構(gòu)[2]

對(duì)于高速、高密度FPGA器件,保持良好的信號(hào)完整性對(duì)于實(shí)現(xiàn)可靠、可重復(fù)的設(shè)計(jì)十分關(guān)鍵。適當(dāng)?shù)碾娫磁月泛腿ヱ羁梢愿纳普w信號(hào)完整性。如果去耦不充分,邏輯轉(zhuǎn)換將會(huì)影響電源和地電壓,導(dǎo)致器件工作不正常。此外,采用分布式電源結(jié)構(gòu)也是一種主要解決方案,給FPGA供電時(shí)可以將電源電壓偏移降至最低。 在傳統(tǒng)電源結(jié)構(gòu)中,AC/DC或DC/DC轉(zhuǎn)換器位于一個(gè)地方,并提供多 個(gè)輸出電壓,在整個(gè)系統(tǒng)內(nèi)分配。這種設(shè)計(jì)稱(chēng)為集中式電源結(jié)構(gòu)(CPA),見(jiàn)左圖。以高電流分配低電壓時(shí),銅線或PCB軌道會(huì)產(chǎn)生嚴(yán)重的電阻損耗,CPA就會(huì)發(fā)生問(wèn)題。

分布式電源結(jié)構(gòu)

CPA的替代方案是分布式電源結(jié)構(gòu)(DPA),見(jiàn)左圖。采用DPA時(shí),整個(gè)系統(tǒng)內(nèi)僅分配一個(gè)半穩(wěn)壓的DC電壓,各DC/DC轉(zhuǎn)換器(線性或開(kāi)關(guān)式)與各負(fù)載相鄰。DPA中,DC/DC轉(zhuǎn)換器與負(fù)載(例如FPGA)之間的距離近得多,因而線路電阻和配線電感引起的電壓下降得以減小。這種為負(fù)載提供本地電源的方法稱(chēng)為負(fù)載點(diǎn)(POL)。 芯片結(jié)構(gòu) 主流的FPGA仍是基于查找表技術(shù)的,已經(jīng)遠(yuǎn)遠(yuǎn)超出了先前版本的基本性能,并且整合了常用功能(如RAM、時(shí)鐘管理和DSP)的硬核(ASIC型)模塊。如圖1-1所示(注:圖1-1只是一個(gè)示意圖,實(shí)際上每一個(gè)系列的FPGA都有其相應(yīng)的內(nèi)部結(jié)構(gòu)),FPGA芯片主 要由7部分完成,分別為:可編程輸入輸出單元、基本可編程邏輯單元、完整的時(shí)鐘管理、嵌入塊式RAM、豐富的布線資源、內(nèi)嵌的底層功能單元和內(nèi)嵌專(zhuān)用硬件模塊。 圖1-1 FPGA芯片的內(nèi)部結(jié)構(gòu)

FPGA芯片的內(nèi)部結(jié)構(gòu)

每個(gè)模塊的功能如下: 1. 可編程輸入輸出單元(IOB) 可編程輸入/輸出單元簡(jiǎn)稱(chēng)I/O單元,是芯片與外界電路的接口部分,完成不同電氣特性下對(duì)輸入/輸出信號(hào)的驅(qū)動(dòng)與匹配要求,其示意結(jié)構(gòu)如圖1-2所示。FPGA內(nèi)的I/O按組分類(lèi),每組都能夠獨(dú)立地支持不同的I/O標(biāo)準(zhǔn)。通過(guò)軟件的靈活配置,可適配不同的電氣標(biāo)準(zhǔn)與I/O物理特性,可以調(diào)整驅(qū)動(dòng)電流的大小,可以改變上、下拉電阻。I/O口的頻率也越來(lái)越高,一些高端的FPGA通過(guò)DDR寄存器技術(shù)可以支持高達(dá)2Gbps的數(shù)據(jù)速率。 圖1-2 典型的IOB內(nèi)部結(jié)構(gòu)示意圖

典型的IOB內(nèi)部結(jié)構(gòu)示意圖

外部輸入信號(hào)可以通過(guò)IOB模塊的存儲(chǔ)單元輸入到FPGA的內(nèi)部,也可以直接輸入FPGA 內(nèi)部。當(dāng)外部輸入信號(hào)經(jīng)過(guò)IOB模塊的存儲(chǔ)單元輸入到FPGA內(nèi)部時(shí),其保持時(shí)間(Hold Time)的要求可以降低,通常默認(rèn)為0。 為了便于管理和適應(yīng)多種電器標(biāo)準(zhǔn),FPGA的IOB被劃分為若干個(gè)組(bank),每個(gè)bank的接口標(biāo)準(zhǔn)由其接口電壓VCCO決定,一個(gè)bank只能有 一種VCCO,但不同bank的VCCO可以不同。只有相同電氣標(biāo)準(zhǔn)的端口才能連接在一起,VCCO電壓相同是接口標(biāo)準(zhǔn)的基本條件。
2. 可配置邏輯塊(CLB) CLB是FPGA內(nèi)的基本邏輯單元。CLB的實(shí)際數(shù)量和特性會(huì)依器件的不同而不同,但是每個(gè)CLB都包含一個(gè)可配置開(kāi)關(guān)矩陣,此矩陣由4或6個(gè)輸入、一些選型電路(多路復(fù)用器等)和觸發(fā)器組成。開(kāi)關(guān)矩陣是高度靈活的,可以對(duì)其進(jìn)行配置以便處理組合邏輯、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多個(gè)(一般為4個(gè)或2個(gè))相同的Slice和附加邏輯構(gòu)成,如圖1-3所示。每個(gè)CLB模塊不僅可以用于實(shí)現(xiàn)組合邏輯、時(shí)序邏輯,還可以配置為分布式RAM和分布式ROM。 圖1-3 典型的CLB結(jié)構(gòu)示意圖

典型的CLB結(jié)構(gòu)示意圖

Slice是Xilinx公司定義的基本邏輯單位,其內(nèi)部結(jié)構(gòu)如圖1-4所示,一個(gè)Slice由兩個(gè)4輸入的函數(shù)、進(jìn)位邏輯、算術(shù)邏輯、存儲(chǔ)邏輯和函數(shù)復(fù)用器組成。算術(shù)邏輯包括一個(gè)異或門(mén)(XORG)和一個(gè)專(zhuān)用與門(mén)(MULTAND),一個(gè)異或門(mén)可以使一個(gè)Slice實(shí)現(xiàn) 2bit全加操作,專(zhuān)用與門(mén)用于提高乘法器的效率;進(jìn)位邏輯由專(zhuān)用進(jìn)位信號(hào)和函數(shù)復(fù)用器(MUXC)組成,用于實(shí)現(xiàn)快速的算術(shù)加減法操作;4輸入函數(shù)發(fā)生 器用于實(shí)現(xiàn)4輸入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的兩個(gè)輸入函數(shù)為6輸入,可以實(shí)現(xiàn)6輸入LUT或 64比特移位寄存器);進(jìn)位邏輯包括兩條快速進(jìn)位鏈,用于提高CLB模塊的處理速度。 圖1-4 典型的4輸入Slice結(jié)構(gòu)示意圖

典型的4輸入Slice結(jié)構(gòu)示意圖

3. 數(shù)字時(shí)鐘管理模塊(DCM) 業(yè)內(nèi)大多數(shù)FPGA均提供數(shù)字時(shí)鐘管理(Xilinx的全部FPGA均具有這種特性)。Xilinx推出最先進(jìn)的FPGA提供數(shù)字時(shí)鐘管理和相位環(huán)路鎖定。相位環(huán)路鎖定能夠提供精確的時(shí)鐘綜合,且能夠降低抖動(dòng),并實(shí)現(xiàn)過(guò)濾功能。 4.嵌入式塊RAM(BRAM) 大多數(shù)FPGA都具有內(nèi)嵌的塊RAM,這大大拓展了FPGA的應(yīng)用范圍和靈活性。塊RAM可被配置為單端口RAM、雙端口RAM、內(nèi)容地址存儲(chǔ)器 (CAM)以及FIFO等常用存儲(chǔ)結(jié)構(gòu)。RAM、FIFO是比較普及的概念,在此就不冗述。CAM存儲(chǔ)器在其內(nèi)部的每個(gè)存儲(chǔ)單元中都有一個(gè)比較邏輯,寫(xiě)入 CAM中的數(shù)據(jù)會(huì)和內(nèi)部的每一個(gè)數(shù)據(jù)進(jìn)行比較,并返回與端口數(shù)據(jù)相同的所有數(shù)據(jù)的地址,因而在路由的地址交換器中有廣泛的應(yīng)用。除了塊RAM,還可以將 FPGA中的LUT靈活地配置成RAM、ROM和FIFO等結(jié)構(gòu)。在實(shí)際應(yīng)用中,芯片內(nèi)部塊RAM的數(shù)量也是選擇芯片的一個(gè)重要因素。 單片塊RAM的容量為18k比特,即位寬為18比特、深度為1024,可以根據(jù)需要改變其位寬和深度,但要滿(mǎn)足兩個(gè)原則:首先,修改后的容量(位寬 深度)不能大于18k比特;其次,位寬最大不能超過(guò)36比特。當(dāng)然,可以將多片塊RAM級(jí)聯(lián)起來(lái)形成更大的RAM,此時(shí)只受限于芯片內(nèi)塊RAM的數(shù)量,而不再受上面兩條原則約束。 5. 豐富的布線資源 布線資源連通FPGA內(nèi)部的所有單元,而連線的長(zhǎng)度和工藝決定著信號(hào)在連線上的驅(qū)動(dòng)能力和傳輸速度。FPGA芯片內(nèi)部有著豐富的布線資源,根據(jù)工藝、長(zhǎng)度、寬度和分布位置的不同而劃分為4類(lèi)不同的類(lèi)別。第一類(lèi)是全局布線資源,用于芯片內(nèi)部全局時(shí)鐘和全局復(fù)位/置位的布線;第二類(lèi)是長(zhǎng)線資源,用以完成芯片 Bank間的高速信號(hào)和第二全局時(shí)鐘信號(hào)的布線;第三類(lèi)是短線資源,用于完成基本邏輯單元之間的邏輯互連和布線;第四類(lèi)是分布式的布線資源,用于專(zhuān)有時(shí)鐘、復(fù)位等控制信號(hào)線。 在實(shí)際中設(shè)計(jì)者不需要直接選擇布線資源,布局布線器可自動(dòng)地根據(jù)輸入邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇布線資源來(lái)連通各個(gè)模塊單元。從本質(zhì)上講,布線資源的使用方法和設(shè)計(jì)的結(jié)果有密切、直接的關(guān)系。 6. 底層內(nèi)嵌功能單元 內(nèi)嵌功能模塊主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等軟處理核(SoftCore)。越來(lái)越豐富的內(nèi)嵌功能單元,使得單片F(xiàn)PGA成為了系統(tǒng)級(jí)的設(shè)計(jì)工具,使其具備了軟硬件聯(lián)合設(shè)計(jì)的能力,逐步向SOC平臺(tái)過(guò)渡。 DLL和PLL具有類(lèi)似的功能,可以完成時(shí)鐘高精度、低抖動(dòng)的倍頻和分頻,以及占空比調(diào)整和移相等功能。Xilinx公司生產(chǎn)的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同時(shí)集成了PLL和DLL。PLL 和DLL可以通過(guò)IP核生成的工具方便地進(jìn)行管理和配置。DLL的結(jié)構(gòu)如圖1-5所示。 圖1-5 典型的DLL模塊示意圖

典型的DLL模塊示意圖

7. 內(nèi)嵌專(zhuān)用硬核 內(nèi)嵌專(zhuān)用硬核是相對(duì)底層嵌入的軟核而言的,指FPGA處理能力強(qiáng)大的硬核(Hard Core),等效于ASIC電路。為了提高FPGA性能,芯片生產(chǎn)商在芯片內(nèi)部集成了一些專(zhuān)用的硬核。例如:為了提高FPGA的乘法速度,主流的FPGA 中都集成了專(zhuān)用乘法器;為了適用通信總線與接口標(biāo)準(zhǔn),很多高端的FPGA內(nèi)部都集成了串并收發(fā)器(SERDES),可以達(dá)到數(shù)十Gbps的收發(fā)速度。 Xilinx公司的高端產(chǎn)品不僅集成了Power PC系列CPU,還內(nèi)嵌了DSP Core模塊,其相應(yīng)的系統(tǒng)級(jí)設(shè)計(jì)工具是EDK和Platform Studio,并依此提出了片上系統(tǒng)(System on Chip)的概念。通過(guò)PowerPC、Microblaze、Picoblaze等平臺(tái),能夠開(kāi)發(fā)標(biāo)準(zhǔn)的DSP處理器及其相關(guān)應(yīng)用,達(dá)到SOC的開(kāi)發(fā)目的。 基本特點(diǎn) 1)采用FPGA設(shè)計(jì)ASIC電路(專(zhuān)用集成電路),用戶(hù)不需要投片生產(chǎn),就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC電路的中試樣片。 3)FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 4)FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最小的器件之一。 5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 可以說(shuō),FPGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶(hù)可以根據(jù)不同的配置模式,采用不同的編程方式。 加電時(shí),FPGA芯片將EPROM中數(shù)據(jù)讀入片內(nèi)編程RAM中,配置完成后,FPGA進(jìn)入工作狀態(tài)。掉電后,FPGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,FPGA能夠反復(fù)使用。FPGA的編程無(wú)須專(zhuān)用的FPGA編程器,只須用通用的EPROM、PROM編程器即可。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,FPGA的使用非常靈活。

查找表的原理與結(jié)構(gòu)

查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線的的RAM。當(dāng)用戶(hù)通過(guò)原理圖或HDL語(yǔ)言描述了一個(gè)邏輯電路以后,PLD/FPGA開(kāi)發(fā)軟件會(huì)自動(dòng)計(jì)算邏輯電路的所有可能結(jié)果,并把真值表(即結(jié)果)事先寫(xiě)入RAM,這樣,每輸入一個(gè)信號(hào)進(jìn)行邏輯運(yùn)算就等于輸入一個(gè)地址進(jìn)行查表,找出地址對(duì)應(yīng)的內(nèi)容,然后輸出即可。

下面給出一個(gè)四輸入與非門(mén)電路的例子來(lái)說(shuō)明LUT實(shí)現(xiàn)邏輯功能的原理。

給出一個(gè)使用LUT實(shí)現(xiàn)輸入與門(mén)電路的真值表。


表??輸入與門(mén)的真值表




從中可以看到,LUT具有和邏輯電路相同的功能。實(shí)際上,LUT具有更快的執(zhí)行速度和更大的規(guī)模。

3.1.2查找表結(jié)構(gòu)的FPGA邏輯實(shí)現(xiàn)原理

我們還是以這個(gè)電路的為例:



圖??輸入與門(mén)電路

A,B,C,D由FPGA芯片的管腳輸入后進(jìn)入可編程連線,然后作為地址線連到到LUT,LUT中已經(jīng)事先寫(xiě)入了所有可能的邏輯結(jié)果,通過(guò)地址查找到相應(yīng)的數(shù)據(jù)然后輸出,這樣組合邏輯就實(shí)現(xiàn)了。該電路中D觸發(fā)器是直接利用LUT后面D觸發(fā)器來(lái)實(shí)現(xiàn)。時(shí)鐘信號(hào)CLK由I/O腳輸入后進(jìn)入芯片內(nèi)部的時(shí)鐘專(zhuān)用通道,直接連接到觸發(fā)器的時(shí)鐘端。觸發(fā)器的輸出與I/O腳相連,把結(jié)果輸出到芯片管腳。這樣PLD就完成了圖所示電路的功能。(以上這些步驟都是由軟件自動(dòng)完成的,不需要人為干預(yù))

這個(gè)電路是一個(gè)很簡(jiǎn)單的例子,只需要一個(gè)LUT加上一個(gè)觸發(fā)器就可以完成。對(duì)于一個(gè)LUT無(wú)法完成的的電路,就需要通過(guò)進(jìn)位邏輯將多個(gè)單元相連,這樣FPGA就可以實(shí)現(xiàn)復(fù)雜的邏輯。

因?yàn)?/span>基于LUT的FPGA具有很高的集成度,其器件密度從數(shù)萬(wàn)門(mén)到數(shù)千萬(wàn)門(mén)不等,可以完成極其復(fù)雜的時(shí)序與邏輯組合邏輯電路功能,所以適用于高速、高密度的高端數(shù)字邏輯電路設(shè)計(jì)領(lǐng)域。其組成部分主要有可編程輸入/輸出單元、基本可編程邏輯單元、內(nèi)嵌SRAM、豐富的布線資源、底層嵌入功能單元、內(nèi)嵌專(zhuān)用單元等,主要設(shè)計(jì)和生產(chǎn)廠家有Xilinx、Altera、Lattice、Actel、Atmel和QuickLogic等公司,其中最大的是Xilinx、Altera、Lattice三家。





總結(jié)

以上是生活随笔為你收集整理的F​P​G​A​工​作​原​理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。