隨著工藝的不斷進(jìn)步,F(xiàn)PGA在邏輯密度、性能和功能上有了極大的提高,同時(shí)器件的成本也大幅下降,使得電子工程師逐漸傾向于在越來越多的產(chǎn)品中采用可編程邏輯器件。在突破了低功耗、低成本以及先進(jìn)工藝的瓶頸后,F(xiàn)PGA不斷以其可編程和靈活性向更多領(lǐng)域滲透,而眾多廠商的加入更使得FPGA市場(chǎng)群星璀璨,F(xiàn)PGA的應(yīng)用市場(chǎng)越來越廣泛、應(yīng)用的價(jià)值也越來越大。
FPGA的發(fā)展令人矚目,從原來的晶體管、集成電路,再發(fā)展到簡單的PLD,例如GLA、GAL等,接著出現(xiàn)了CPLD和FPGA,整個(gè)過程漫長而又曲折。從1985第一顆FPGA的誕生到現(xiàn)在的20多年間,F(xiàn)PGA技術(shù)的發(fā)展讓人難以想象,速度、資源、集成度都超越了人們的想象,以至于各行各業(yè)都開始關(guān)注和了解FPGA。目前從工藝上大致可以分為3類FPGA:Flash工藝、SRAM工藝、Flash+SRAM工藝,每種工藝都有其優(yōu)缺點(diǎn),適應(yīng)一定的場(chǎng)合。
本文主要介紹Flash工藝FPGA的內(nèi)部架構(gòu),這是一種全新的技術(shù),有助于讀者了解FPGA內(nèi)部結(jié)構(gòu)、資源和功能等,也為讀者對(duì)比現(xiàn)有的SRAM技術(shù)的FPGA提供參考依據(jù)。
1.ProASIC3的特點(diǎn)
ProASIC3是Actel第三代Flash架構(gòu)FPGA中的第一個(gè)器件,是當(dāng)前應(yīng)用最廣泛的Flash FPGA,它主要面向消費(fèi)、汽車及其它成本敏感的應(yīng)用領(lǐng)域。由于它的特點(diǎn)非常突出,因此越來越多的工程師轉(zhuǎn)向使用ProASIC3,它具有如下特點(diǎn):
·基于Flash架構(gòu),無須昂貴的配置芯片,單芯片解決方案;
·1.5萬到300萬個(gè)系統(tǒng)門,分類齊全,供用戶自主選擇;
·最大504kbit的雙端口RAM和Ikbit的用戶FlashROM存儲(chǔ)器;
·最大616個(gè)用戶可用I/O;
·最高350MHz的性能;
·具有128位的Flash Lock和128位的AES加密,保護(hù)設(shè)計(jì)不被盜??;
·具有很好的系統(tǒng)成本。
正因?yàn)樯鲜龅奶攸c(diǎn),Actel完全可以替換現(xiàn)有的CPLD和部分SRAM的FPGA,而且使產(chǎn)品更具特點(diǎn),例如安全性更高、可靠性更強(qiáng)、更小的體積和更低的成本等。關(guān)于ProASIC3更詳細(xì)的優(yōu)勢(shì)介紹已經(jīng)在《Actel基于Flash架構(gòu)的FPGA講座(1)》中描述,下面將介紹組成FPGA的部件有哪些?它們之間的關(guān)系又將是怎樣的?
2.先進(jìn)的Flash開關(guān)
FPGA與ASIC最大的不同點(diǎn)是具有可編程的特點(diǎn),從而使得FPGA非常靈活,可以實(shí)現(xiàn)多種不同用途的ASIC。所以FPGA被看作是一種通用的ASIC,我們可以通過編寫不同的代碼來改變其功能,但是FPGA內(nèi)部并不是所有的部件都可以讓用戶修改的,只有那些連線之間的開關(guān)可以通過程序來改變,最終的程序代碼也是轉(zhuǎn)換成對(duì)這些開關(guān)的控制。開關(guān)的性能決定了FPGA的性能,ProASIC3采用了Flash開關(guān),因此帶來的優(yōu)點(diǎn)也是顯而易見的。下面我們來對(duì)比2種不同的開關(guān)結(jié)構(gòu),如圖1所示。
Flash開關(guān)采用一種稱為懸浮柵的技術(shù)來保存開關(guān)的狀態(tài),將2個(gè)MOS管的柵極連接在一起,其中一個(gè)MOS管通過位選擇信號(hào)Bitl和Bit2來控制懸浮柵上的電子,從而實(shí)現(xiàn)編程、擦除、校驗(yàn)等功能;另外一個(gè)MOS管用于互聯(lián)其它的部件。當(dāng)懸浮柵上被充電時(shí)該MOS管導(dǎo)通,當(dāng)懸浮柵的電子被移除時(shí)該MOS管被關(guān)閉。Flash的開關(guān)只用了2個(gè)MOS管,因此功耗和面積更小,更多的空間用于布線,而且這種結(jié)構(gòu)具有非易性的特點(diǎn)。
SRAM的開關(guān)使用4個(gè)MOS管來實(shí)現(xiàn)一個(gè)開關(guān)結(jié)構(gòu),而且2個(gè)上拉電阻往往也用MOS管來代替,所以一般需要6個(gè)MOS管,這樣的結(jié)構(gòu)功耗大,而且掉電后狀態(tài)無法保存。
3.精細(xì)顆粒的邏輯單元
Actel所有Flash架構(gòu)的FPGA都采用了精細(xì)顆粒的邏輯單元,這是FPGA最基本的物理邏輯單元,每個(gè)FPGA廠家都會(huì)不同,但也各具優(yōu)勢(shì),有些廠家的邏輯單元為LE,而Actel的邏輯單元為Tile。Actel采用了精細(xì)顆粒的邏輯單元使得它的結(jié)構(gòu)更加靈活,每個(gè)邏輯單元可以自由地轉(zhuǎn)換成觸發(fā)器或者查找表。觸發(fā)器可以實(shí)現(xiàn)時(shí)序邏輯,查找表可以實(shí)現(xiàn)組合邏輯,如圖2所示,其中邏輯單元內(nèi)部除了一些門電路以外,還有許多可控的Flash開關(guān),這些開關(guān)使得邏輯單元變得非常靈活,所以Actel的FPGA資源利用率可以在不影響性能的前提下接近100%。
而一般SRAM結(jié)構(gòu)FPGA的邏輯單元,其內(nèi)部結(jié)構(gòu)都是固定的,無法靈活變動(dòng),內(nèi)部由一個(gè)觸發(fā)器和一個(gè)LUT組成,這就是所謂的粗顆粒結(jié)構(gòu)的邏輯單元,其最小的單元都至少由一個(gè)觸發(fā)器和一個(gè)LUT組成。當(dāng)設(shè)計(jì)中只用到LUT時(shí),另一半觸發(fā)器的資源就浪費(fèi)了。
4.更優(yōu)的布線資源
除了上述的2個(gè)資源外,F(xiàn)PGA很重要的一個(gè)組成部分就是布線資源,它直接影響設(shè)計(jì)的性能,足夠多的全局網(wǎng)絡(luò)可以讓更多高扇出的信號(hào)以最短的延時(shí)、最小的抖動(dòng)到達(dá)每個(gè)觸發(fā)器,自然性能也將是最優(yōu)的。ProASIC3具有7層金屬層,其中4層用于布線,分別為:超快速的局部連線資源、有效的長線資源、高速的超長線資源和高性能全局時(shí)鐘網(wǎng)絡(luò),類似于PCB的多層板,如圖3所示。每種布線資源長短不一,根據(jù)實(shí)際情況供用戶選擇。
ProASIC3最多有18條全局網(wǎng)絡(luò):6條片上全局網(wǎng)絡(luò)和12條象限全局網(wǎng)絡(luò)。在一般的設(shè)計(jì)中這些全局網(wǎng)絡(luò)已經(jīng)足夠用,全局網(wǎng)絡(luò)可以走一些扇出特別大的信號(hào),例如時(shí)鐘、復(fù)位等信號(hào),而這些信號(hào)的路徑往往對(duì)一個(gè)系統(tǒng)性能起到了關(guān)鍵行性的作用。片上全局網(wǎng)絡(luò)與每個(gè)邏輯單元相連,而象限全局網(wǎng)絡(luò)與該象限內(nèi)的邏輯單元相連,使得到達(dá)每個(gè)邏輯單元的時(shí)間最短,并且大致都相等。全局網(wǎng)絡(luò)也可以分段利用,這樣就會(huì)使得更多的信號(hào)上到全局網(wǎng)絡(luò),提高系統(tǒng)的性能。
5.ProASIC3的片內(nèi)外設(shè)
開關(guān)、邏輯單元、布線資源可謂是FPGA的內(nèi)核構(gòu)成,現(xiàn)在FPGA的集成度越來越高,很多的外設(shè)都集成在FPGA內(nèi)部,例如PLL、RAM、ROM等,ProASIC3也不例外。
ProASIC3最多可以提供6個(gè)模擬的鎖相環(huán)PLL,每個(gè)PLL位于CCC(時(shí)鐘調(diào)整電路)中,其輸入頻率為1.5~350MHz,輸出頻率為0.75N350MHz,具有6個(gè)可編程的延時(shí)模塊,3個(gè)相位選擇和最多3個(gè)不同頻率信號(hào)輸出,如圖4所示。
ProASIC3內(nèi)部最多具有504kbit的SRAM,可以實(shí)現(xiàn)真正的雙端口RAM(2個(gè)端口可以同時(shí)進(jìn)行讀寫)和2個(gè)端口的RAM,同時(shí)這些RAM塊帶有FIFO控制器,可以實(shí)現(xiàn)先進(jìn)先出隊(duì)列的FIFO,RAM和FIFO速度可達(dá)350MHz。
ProASIC3內(nèi)部具有1kbit的Flash ROM可供用戶使用,類似于普通的ROM操作,通過上位機(jī)軟件將數(shù)據(jù)固化在FPGA內(nèi)部的FROM,F(xiàn)PGA在運(yùn)行的過程中只能進(jìn)行讀操作,可以用于存放密鑰、序列號(hào)、版本號(hào)等信息。
ProASIC3還具有超強(qiáng)的加密功能,內(nèi)部不僅具有128位Flash Lock的加密,而且還有128位的AES加密。FlashLock主要對(duì)芯片進(jìn)行加密,而AES是對(duì)編程文件進(jìn)行加密,ProASIC3內(nèi)部具有AES的解密引擎,用于對(duì)AES加密的文件進(jìn)行解密。(待續(xù))