《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 其他 > 入門(mén):FPGA,、CPLD工作原理與簡(jiǎn)介

入門(mén):FPGA、CPLD工作原理與簡(jiǎn)介

2022-10-24
來(lái)源:智能計(jì)算芯世界
關(guān)鍵詞: 可編程器件 FPGA CPLD

  可編程邏輯器件(Programmable Logic Device,,PLD)起源于20世紀(jì)70年代,,是在專(zhuān)用集成電路(ASIC)的基礎(chǔ)上發(fā)展起來(lái)的一種新型邏輯器件,是當(dāng)今數(shù)字系統(tǒng)設(shè)計(jì)的主要硬件平臺(tái),,其主要特點(diǎn)就是完全由用戶(hù)通過(guò)軟件進(jìn)行配置和編程,,從而完成某種特定的功能,且可以反復(fù)擦寫(xiě),。在修改和升級(jí)PLD時(shí),,不需額外地改變PCB電路板,,只是在計(jì)算機(jī)上修改和更新程序,使硬件設(shè)計(jì)工作成為軟件開(kāi)發(fā)工作,,縮短了系統(tǒng)設(shè)計(jì)的周期,,提高了實(shí)現(xiàn)的靈活性并降低了成本,因此獲得了廣大硬件工程師的青睞,,形成了巨大的PLD產(chǎn)業(yè)規(guī)模,。

  目前常見(jiàn)的PLD產(chǎn)品有:編程只讀存儲(chǔ)器(Programmable Read Only Memory,PROM),,現(xiàn)場(chǎng)可編程邏輯陣列(Field Programmable Logic Array,,F(xiàn)PLA),可編程陣列邏輯(Programmable Array Logic,,PAL),,通用陣列邏輯(Generic Array Logic,GAL),,可擦除的可編程邏輯器件(Erasable Programmable Logic Array,,EPLA),復(fù)雜可編程邏輯器件(Complex Programmable Logic Device,,CPLD)和現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array,,FPGA)等類(lèi)型。PLD器件從規(guī)模上又可以細(xì)分為簡(jiǎn)單PLD(SPLD),、復(fù)雜PLD(CPLD)以及FPGA,。它們內(nèi)部結(jié)構(gòu)的實(shí)現(xiàn)方法各不相同。

  可編程邏輯器件按照基本單元顆粒度可以分為3類(lèi): ①小顆粒度(如:“門(mén)海(sea of gates)”架構(gòu)),, ②中等顆粒度(如:FPGA),, ③大顆粒度(如:CPLD)。   按照編程工藝可以分為四類(lèi): ①熔絲(Fuse)和反熔絲(AnTIfuse)編程器件,, ②可擦除的可編程只讀存儲(chǔ)器(UEPROM)編程器件,, ③電信號(hào)可擦除的可編程只讀存儲(chǔ)器(EEPROM)編程器件(如:CPLD),④SRAM編程器件(如:FPGA),。 在工藝分類(lèi)中,,前3類(lèi)為非易失性器件,編程后,,配置數(shù)據(jù)保留在器件上,;第4類(lèi)為易失性器件,掉電后配置數(shù)據(jù)會(huì)丟失,,因此在每次上電后需要重新進(jìn)行數(shù)據(jù)配置,。   可編程邏輯器件的發(fā)展歷史   可編程邏輯器件的發(fā)展可以劃分為4個(gè)階段,即從20世紀(jì)70年代初到70年代中為第1階段,,20世紀(jì)70年代中到80年代中為第2階段,,20世紀(jì)80年代到90年代末為第3階段,,20世紀(jì)90年代末到目前為第4階段。

  第1階段的可編程器件只有簡(jiǎn)單的可編程只讀存儲(chǔ)器(PROM),、紫外線(xiàn)可擦除只讀存儲(chǔ)器(EPROM)和電可擦只讀存儲(chǔ)器(EEPROM)3種,,由于結(jié)構(gòu)的限制,它們只能完成簡(jiǎn)單的數(shù)字邏輯功能,。

  第2階段出現(xiàn)了結(jié)構(gòu)上稍微復(fù)雜的可編程陣列邏輯(PAL)和通用陣列邏輯(GAL)器件,,正式被稱(chēng)為PLD,能夠完成各種邏輯運(yùn)算功能,。典型的PLD由“與”,、“非”陣列組成,用“與或”表達(dá)式來(lái)實(shí)現(xiàn)任意組合邏輯,,所以PLD能以乘積和形式完成大量的邏輯組合。

  第3階段Xilinx和Altera分別推出了與標(biāo)準(zhǔn)門(mén)陣列類(lèi)似的FPGA和類(lèi)似于PAL結(jié)構(gòu)的擴(kuò)展性CPLD,,提高了邏輯運(yùn)算的速度,,具有體系結(jié)構(gòu)和邏輯單元靈活、集成度高以及適用范圍寬等特點(diǎn),,兼容了PLD和通用門(mén)陣列的優(yōu)點(diǎn),,能夠?qū)崿F(xiàn)超大規(guī)模的電路,編程方式也很靈活,,成為產(chǎn)品原型設(shè)計(jì)和中小規(guī)模(一般小于10000)產(chǎn)品生產(chǎn)的首選,。這一階段,CPLD,、FPGA器件在制造工藝和產(chǎn)品性能都獲得長(zhǎng)足的發(fā)展,,達(dá)到了0.18 工藝和系數(shù)門(mén)數(shù)百萬(wàn)門(mén)的規(guī)模。

  第4階段出現(xiàn)了SOPC和SOC技術(shù),,是PLD和ASIC技術(shù)融合的結(jié)果,,涵蓋了實(shí)時(shí)化數(shù)字信號(hào)處理技術(shù)、高速數(shù)據(jù)收發(fā)器,、復(fù)雜計(jì)算以及嵌入式系統(tǒng)設(shè)計(jì)技術(shù)的全部?jī)?nèi)容,。Xilinx和Altera也推出了相應(yīng)SOCFPGA產(chǎn)品,制造工藝達(dá)到65 ,,系統(tǒng)門(mén)數(shù)也超過(guò)百萬(wàn)門(mén),。并且,這一階段的邏輯器件內(nèi)嵌了硬核高速乘法器,、Gbits差分串行接口,、時(shí)鐘頻率高達(dá)500MHz的PowerPC微處理器、軟核MicroBlaze,、Picoblaze,、Nios以及NiosII,,不僅實(shí)現(xiàn)了軟件需求和硬件設(shè)計(jì)的完美結(jié)合,還實(shí)現(xiàn)了高速與靈活性的完美結(jié)合,,使其已超越了ASIC器件的性能和規(guī)模,,也超越了傳統(tǒng)意義上FPGA的概念,使PLD的應(yīng)用范圍從單片擴(kuò)展到系統(tǒng)級(jí),。目前,,基于PLD片上可編程的概念仍在進(jìn)一步向前發(fā)展。   開(kāi)發(fā)工具   基于高復(fù)雜度PLD器件的開(kāi)發(fā),,在很大程度上要依靠電子設(shè)計(jì)自動(dòng)化(EDA)來(lái)完成,。PLD的EDA工具以計(jì)算機(jī)軟件為主,將典型的單元電路封裝起來(lái)形成固定模塊并形成標(biāo)準(zhǔn)的硬件開(kāi)發(fā)語(yǔ)言(如HDL語(yǔ)言)供設(shè)計(jì)人員使用,。設(shè)計(jì)人員考慮如何將可組裝的軟件庫(kù)和軟件包搭建出滿(mǎn)足需求的功能模塊甚至完整的系統(tǒng),。PLD開(kāi)發(fā)軟件需要自動(dòng)地完成邏輯編譯、化簡(jiǎn),、分割,、綜合及優(yōu)化、布局布線(xiàn),、仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和編程下載等工作,。典型的EDA工具中必須包含兩個(gè)特殊的軟件包,即綜合器和適配器,。綜合器的功能就是將設(shè)計(jì)者在EDA平臺(tái)上完成的針對(duì)某個(gè)系統(tǒng)項(xiàng)目的HDL,、原理圖或狀態(tài)圖形描述,針對(duì)給定的硬件系統(tǒng)組件,,進(jìn)行編譯,、優(yōu)化、轉(zhuǎn)換和綜合,。

  隨著開(kāi)發(fā)規(guī)模的級(jí)數(shù)性增長(zhǎng),,就必須減短PLD開(kāi)發(fā)軟件的編譯時(shí)間、并提高其編譯性能以及提供豐富的知識(shí)產(chǎn)權(quán)(IP)核資源供設(shè)計(jì)人員調(diào)用,。此外,,PLD開(kāi)發(fā)界面的友好性以及操作的復(fù)雜程度也是評(píng)價(jià)其性能的重要因素。目前在PLD產(chǎn)業(yè)領(lǐng)域中,,各個(gè)芯片提供商的PLD開(kāi)發(fā)工具已成為影響其成敗的核心成分,。   只有全面做到芯片技術(shù)領(lǐng)先、文檔完整和PLD開(kāi)發(fā)軟件優(yōu)秀,,芯片提供商才能獲得客戶(hù)的認(rèn)可,。一個(gè)完美的PLD開(kāi)發(fā)軟件應(yīng)當(dāng)具備下面5點(diǎn):

  準(zhǔn)確地將用戶(hù)設(shè)計(jì)轉(zhuǎn)換為電路模塊

  能夠高效地利用器件資源

  能夠快速地完成編譯和綜合

  提供豐富的IP資源

  用戶(hù)界面友好、操作簡(jiǎn)單

  CPLD工作原理與簡(jiǎn)介    基于乘積項(xiàng)(Product-Term)的PLD結(jié)構(gòu)   采用這種結(jié)構(gòu)的PLD芯片有:Altera的MAX7000,,MAX3000系列(EEPROM工藝),,Xilinx的XC9500系列(Flash工藝)和LatTIce,Cypress的大部分產(chǎn)品(EEPROM工藝)   我們先看一下這種PLD的總體結(jié)構(gòu)(以MAX7000為例,,其他型號(hào)的結(jié)構(gòu)與此都非常相似):  

015.JPG

     圖1 基于乘積項(xiàng)的PLD內(nèi)部結(jié)構(gòu)   

這種PLD可分為三塊結(jié)構(gòu):宏單元(Marocell),可編程連線(xiàn) (PIA)和I/O控制塊,。宏單元是PLD的基本結(jié)構(gòu),,由它來(lái)實(shí)現(xiàn)基本的邏輯功能。圖1中蘭色部分是多個(gè)宏單元的集合(因?yàn)楹陠卧^多,,沒(méi)有一一畫(huà)出),。可編程連線(xiàn)負(fù)責(zé)信號(hào)傳遞,,連 接所有的宏單元,。I/O控制塊負(fù)責(zé)輸入輸出的電氣特性控制,比如可以設(shè)定集電極開(kāi)路輸出,,擺率控制,,三態(tài)輸出等。圖1 左上的INPUT/GCLK1,,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局時(shí)鐘,,清零和輸出使能信號(hào),這幾個(gè)信號(hào)有專(zhuān)用連線(xiàn)與PLD中每個(gè)宏單元相連,,信號(hào)到每個(gè)宏單元的延時(shí)相同并且延時(shí)最短,。   宏單元的具體結(jié)構(gòu)見(jiàn)下圖:

014.JPG

圖2 宏單元結(jié)構(gòu)   

左側(cè)是乘積項(xiàng)陣列,,實(shí)際就是一個(gè)與或陣列,,每一個(gè)交叉點(diǎn)都是一個(gè)可編程 熔絲,如果導(dǎo)通就是實(shí)現(xiàn)“與”邏輯,。后面的乘積項(xiàng)選擇矩陣是一個(gè)“或”陣列,。兩者一起完成組合邏輯。圖右側(cè)是一個(gè)可編程D觸發(fā)器,,它的時(shí)鐘,,清零輸入都可 以編程選擇,可以使用專(zhuān)用的全局清零和全局時(shí)鐘,,也可以使用內(nèi)部邏輯(乘積項(xiàng)陣列)產(chǎn)生的時(shí)鐘和清零,。如果不需要觸發(fā)器,也可以將此觸發(fā)器旁路,,信號(hào)直接 輸給PIA或輸出到I/O腳,。   乘積項(xiàng)結(jié)構(gòu)PLD的邏輯實(shí)現(xiàn)原理   下面我們以一個(gè)簡(jiǎn)單的電路為例,具體說(shuō)明PLD是如何利用以上結(jié)構(gòu)實(shí)現(xiàn)邏輯的,,電路如下圖:

013.JPG

圖3 假設(shè)組合邏輯的輸出(AND3的輸出)為f,,則f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我們以,!D表示D的“非”) PLD將以下面的方式來(lái)實(shí)現(xiàn)組合邏輯f: 

012.JPG

圖4   A,B,C,D由PLD芯片的管腳輸入后進(jìn)入可編程連線(xiàn)陣列 (PIA),,在內(nèi)部會(huì)產(chǎn)生A,A反,,B,B反,C,C反,,D,D反8個(gè)輸出,。圖中每一個(gè)叉表示相連(可編程熔絲導(dǎo)通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) ,。這樣組合邏輯就實(shí)現(xiàn)了,。圖3電路中D觸發(fā)器的實(shí)現(xiàn)比較簡(jiǎn)單,直接利用宏單元中的可編程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就完成了圖3所示電路的功能,。(以上這些步驟都是由軟件自 動(dòng)完成的,,不需要人為干預(yù))   圖3的電路是一個(gè)很簡(jiǎn)單的例子,只需要一個(gè)宏單元就可以完成,。但對(duì)于一個(gè)復(fù)雜的電路,,一個(gè)宏單元是不能實(shí)現(xiàn)的,這時(shí)就需要通過(guò)并聯(lián)擴(kuò)展項(xiàng)和共享擴(kuò)展項(xiàng)將多個(gè)宏單元相連,,宏單元的輸出也可以連接到可編程連線(xiàn)陣列,,再做為另一個(gè)宏單元的輸入。這樣PLD就可以實(shí)現(xiàn)更復(fù)雜邏輯,。   這種基于乘積項(xiàng)的PLD基本都是由EEPROM和Flash工藝制造的,,一上電就可以工作,無(wú)需其他芯片配合,。

  FPGA工作原理與簡(jiǎn)介

  如前所述,,F(xiàn)PGA是在PAL、GAL,、EPLD,、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為ASIC領(lǐng)域中的一種半定制電路而出現(xiàn)的,,即解決了定制電路的不足,,又克服了原有可編程器件門(mén)電路有限的缺點(diǎn)。

  由于FPGA需要被反復(fù)燒寫(xiě),,它實(shí)現(xiàn)組合邏輯的基本結(jié)構(gòu)不可能像ASIC那樣通過(guò)固定的與非門(mén)來(lái)完成,,而只能采用一種易于反復(fù)配置的結(jié)構(gòu)。查找表可以很好地滿(mǎn)足這一要求,目前主流FPGA都采用了基于SRAM工藝的查找表結(jié)構(gòu),,也有一些軍品和宇航級(jí)FPGA采用Flash或者熔絲與反熔絲工藝的查找表結(jié)構(gòu),。通過(guò)燒寫(xiě)文件改變查找表內(nèi)容的方法來(lái)實(shí)現(xiàn)對(duì)FPGA的重復(fù)配置。

  根據(jù)數(shù)字電路的基本知識(shí)可以知道,,對(duì)于一個(gè)n輸入的邏輯運(yùn)算,,不管是與或非運(yùn)算還是異或運(yùn)算等等,最多只可能存在2n種結(jié)果,。所以如果事先將相應(yīng)的結(jié)果存放于一個(gè)存貯單元,,就相當(dāng)于實(shí)現(xiàn)了與非門(mén)電路的功能。FPGA的原理也是如此,,它通過(guò)燒寫(xiě)文件去配置查找表的內(nèi)容,,從而在相同的電路情況下實(shí)現(xiàn)了不同的邏輯功能。

  查找表(Look-Up-Table)簡(jiǎn)稱(chēng)為L(zhǎng)UT,,LUT本質(zhì)上就是一個(gè)RAM,。目前FPGA中多使用4輸入的LUT,所以每一個(gè)LUT可以看成一個(gè)有4位地址線(xiàn)的 的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è)4與門(mén)電路的例子來(lái)說(shuō)明LUT實(shí)現(xiàn)邏輯功能的原理。

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

  表1-1 4輸入與門(mén)的真值表

  011.JPG

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

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

  如前所述,,F(xiàn)PGA是由存放在片內(nèi)的RAM來(lái)設(shè)置其工作狀態(tài)的,,因此工作時(shí)需要對(duì)片內(nèi)RAM進(jìn)行編程。用戶(hù)可根據(jù)不同的配置模式,,采用不同的編程方式,。FPGA有如下幾種配置模式:

  并行模式:并行PROM、Flash配置FPGA,;

  主從模式:一片PROM配置多片F(xiàn)PGA,;

  串行模式:串行PROM配置FPGA;

  外設(shè)模式:將FPGA作為微處理器的外設(shè),,由微處理器對(duì)其編程,。

  目前,F(xiàn)PGA市場(chǎng)占有率最高的兩大公司Xilinx和Altera生產(chǎn)的FPGA都是基于SRAM工藝的,,需要在使用時(shí)外接一個(gè)片外存儲(chǔ)器以保存程序,。上電時(shí),F(xiàn)PGA將外部存儲(chǔ)器中的數(shù)據(jù)讀入片內(nèi)RAM,,完成配置后,,進(jìn)入工作狀態(tài);掉電后FPGA恢復(fù)為白片,,內(nèi)部邏輯消失,。這樣FPGA不僅能反復(fù)使用,還無(wú)需專(zhuān)門(mén)的FPGA編程器,,只需通用的EPROM,、PROM編程器即可。Actel,、QuickLogic等公司還提供反熔絲技術(shù)的FPGA,,只能下載一次,具有抗輻射,、耐高低溫,、低功耗和速度快等優(yōu)點(diǎn),,在軍品和航空航天領(lǐng)域中應(yīng)用較多,但這種FPGA不能重復(fù)擦寫(xiě),,開(kāi)發(fā)初期比較麻煩,,費(fèi)用也比較昂貴。Lattice是ISP技術(shù)的發(fā)明者,,在小規(guī)模PLD應(yīng)用上有一定的特色,。早期的Xilinx產(chǎn)品一般不涉及軍品和宇航級(jí)市場(chǎng),但目前已經(jīng)有Q Pro-R等多款產(chǎn)品進(jìn)入該類(lèi)領(lǐng)域,。

  FPGA芯片結(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)),,F(xiàn)PGA芯片主要由6部分完成,,分別為:可編程輸入輸出單元、基本可編程邏輯單元,、完整的時(shí)鐘管理,、嵌入塊式RAM、豐富的布線(xiàn)資源,、內(nèi)嵌的底層功能單元和內(nèi)嵌專(zhuān)用硬件模塊,。

 

010.JPG

  圖1-1 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ù)速率,。

 009.JPG

  圖1-2 典型的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),,F(xiàn)PGA的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。

 

008.JPG

  圖1-3 典型的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模塊的處理速度,。

 007.JPG

  圖1-4 典型的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. 豐富的布線(xiàn)資源

  布線(xiàn)資源連通FPGA內(nèi)部的所有單元,,而連線(xiàn)的長(zhǎng)度和工藝決定著信號(hào)在連線(xiàn)上的驅(qū)動(dòng)能力和傳輸速度。FPGA芯片內(nèi)部有著豐富的布線(xiàn)資源,,根據(jù)工藝,、長(zhǎng)度、寬度和分布位置的不同而劃分為4類(lèi)不同的類(lèi)別,。第一類(lèi)是全局布線(xiàn)資源,,用于芯片內(nèi)部全局時(shí)鐘和全局復(fù)位/置位的布線(xiàn),;第二類(lèi)是長(zhǎng)線(xiàn)資源,,用以完成芯片Bank間的高速信號(hào)和第二全局時(shí)鐘信號(hào)的布線(xiàn),;第三類(lèi)是短線(xiàn)資源,用于完成基本邏輯單元之間的邏輯互連和布線(xiàn),;第四類(lèi)是分布式的布線(xiàn)資源,,用于專(zhuān)有時(shí)鐘、復(fù)位等控制信號(hào)線(xiàn),。

  在實(shí)際中設(shè)計(jì)者不需要直接選擇布線(xiàn)資源,,布局布線(xiàn)器可自動(dòng)地根據(jù)輸入邏輯網(wǎng)表的拓?fù)浣Y(jié)構(gòu)和約束條件選擇布線(xiàn)資源來(lái)連通各個(gè)模塊單元。從本質(zhì)上講,,布線(xiàn)資源的使用方法和設(shè)計(jì)的結(jié)果有密切,、直接的關(guān)系。

  6. 底層內(nèi)嵌功能單元

  內(nèi)嵌功能模塊主要指DLL(Delay Locked Loop),、PLL(Phase Locked Loop),、DSP和CPU等軟處理核(Soft Core)。現(xiàn)在越來(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所示,。

006.JPG

  圖1-5 典型的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)用乘法器,;為了適用通信總線(xià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、Miroblaze,、Picoblaze等平臺(tái),,能夠開(kāi)發(fā)標(biāo)準(zhǔn)的DSP處理器及其相關(guān)應(yīng)用,達(dá)到SOC的開(kāi)發(fā)目的,。

  軟核,、硬核以及固核的概念

  IP(Intelligent Property)核是具有知識(shí)產(chǎn)權(quán)核的集成電路芯核總稱(chēng),是經(jīng)過(guò)反復(fù)驗(yàn)證過(guò)的,、具有特定功能的宏模塊,,與芯片制造工藝無(wú)關(guān),可以移植到不同的半導(dǎo)體工藝中,。到了SOC階段,,IP核設(shè)計(jì)已成為ASIC電路設(shè)計(jì)公司和FPGA提供商的重要任務(wù),也是其實(shí)力體現(xiàn),。對(duì)于FPGA開(kāi)發(fā)軟件,,其提供的IP核越豐富,用戶(hù)的設(shè)計(jì)就越方便,,其市場(chǎng)占用率就越高,。目前,IP核已經(jīng)變成系統(tǒng)設(shè)計(jì)的基本單元,,并作為獨(dú)立設(shè)計(jì)成果被交換,、轉(zhuǎn)讓和銷(xiāo)售。

  從IP核的提供方式上,,通常將其分為軟核,、硬核和固核這3類(lèi)。從完成IP核所花費(fèi)的成本來(lái)講,,硬核代價(jià)最大,;從使用靈活性來(lái)講,軟核的可復(fù)用使用性最高,。

  1. 軟核

  軟核在EDA設(shè)計(jì)領(lǐng)域指的是綜合之前的寄存器傳輸級(jí)(RTL)模型,;具體在FPGA設(shè)計(jì)中指的是對(duì)電路的硬件語(yǔ)言描述,包括邏輯描述,、網(wǎng)表和幫助文檔等,。軟核只經(jīng)過(guò)功能仿真,需要經(jīng)過(guò)綜合以及布局布線(xiàn)才能使用。其優(yōu)點(diǎn)是靈活性高,、可移植性強(qiáng),,允許用戶(hù)自配置;缺點(diǎn)是對(duì)模塊的預(yù)測(cè)性較低,,在后續(xù)設(shè)計(jì)中存在發(fā)生錯(cuò)誤的可能性,,有一定的設(shè)計(jì)風(fēng)險(xiǎn)。軟核是IP核應(yīng)用最廣泛的形式,。

  2. 固核

  固核在EDA設(shè)計(jì)領(lǐng)域指的是帶有平面規(guī)劃信息的網(wǎng)表,;具體在FPGA設(shè)計(jì)中可以看做帶有布局規(guī)劃的軟核,,通常以RTL代碼和對(duì)應(yīng)具體工藝網(wǎng)表的混合形式提供,。將RTL描述結(jié)合具體標(biāo)準(zhǔn)單元庫(kù)進(jìn)行綜合優(yōu)化設(shè)計(jì),形成門(mén)級(jí)網(wǎng)表,,再通過(guò)布局布線(xiàn)工具即可使用,。和軟核相比,固核的設(shè)計(jì)靈活性稍差,,但在可靠性上有較大提高,。目前,固核也是IP核的主流形式之一,。

  3. 硬核

  硬核在EDA設(shè)計(jì)領(lǐng)域指經(jīng)過(guò)驗(yàn)證的設(shè)計(jì)版圖,;具體在FPGA設(shè)計(jì)中指布局和工藝固定、經(jīng)過(guò)前端和后端驗(yàn)證的設(shè)計(jì),,設(shè)計(jì)人員不能對(duì)其修改,。不能修改的原因有兩個(gè):首先是系統(tǒng)設(shè)計(jì)對(duì)各個(gè)模塊的時(shí)序要求很?chē)?yán)格,不允許打亂已有的物理版圖,;其次是保護(hù)知識(shí)產(chǎn)權(quán)的要求,,不允許設(shè)計(jì)人員對(duì)其有任何改動(dòng)。IP硬核的不許修改特點(diǎn)使其復(fù)用有一定的困難,,因此只能用于某些特定應(yīng)用,,使用范圍較窄。



更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<

mmexport1621241704608.jpg


本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失,。聯(lián)系電話(huà):010-82306118;郵箱:[email protected],。