FPGA原理

CPLD 是可以等價於 GAL 的陣列,編程的數學模型是基於多項式的乘用與門電路實現,而多項式的加用或門電路實現。那麼我們 FPGA 的編程機理是什麼呢?它爲什麼能夠實現我們任意的函數表達式呢?我們在上一講已經知道了 FPGA就實現技術是可以分成三種不同 FPGA 的結構特點、實現的機理,這三種 FPGA 分別是基於 SRAM 技術、基於反熔絲技術、基於 E2PROM/FLASH技術。
就電路結構來講, FPGA 可編程是指三個方面的可編程,一個是可編程邏輯塊,一個是可編程 IO,還有一個就是可編程佈線資源。可編程邏輯塊是 FPGA 可編程的核心,這一節裏我們着重就這個方面可編程進行討論。

 

1 基於 SRAM 技術原理
1.1 SRAM DRAM
在前面我們提到過,最早出現的 FPGA 是基於 SRAM 技術的,它也是目前發展到現在發展的最快的,所謂走的早,走的路就越長。那麼我們講什麼是 SRAM 技術呢?關於這個概念,可能有些初學者是很模糊的。

半導體 RAM 是有動態 RAM 和靜態 RAM 之說,就是 DRAM SRAMDRAM我們可能接觸的更多一點,因爲我們如果有自己組裝機器或者選購電腦的時候,都會考慮一個內存大小的問題,目前市場上這個內存大部分都是動態的,從開始的 DDR DDR2,再到現在的 DDR3DRAM SRAM 的區別在於 DRAM 是要隔一段時間進行刷新的,而構成DRAM 的最小單元只需要一個晶體管一電容對構成,相對於 SRAM 來講是非常節省硅片的。但是缺點就是 DRAM 需要額外的定時刷新電路,對於小規模的 DRAM 來講,這種刷新電路的消耗是得不償失的。有人疑問對於大規模來講還是可以考慮的啊的確是這樣的,規模大了,總有一個界限,總體 DRAM 消耗的硅面積(包括刷新電路)會比 SRAM消耗的硅面積要小。但是對於可編程來講,還是有些不足,實現起來比較複雜。但也說不定將來技術提高了,關注更多的是硅面積的時候,會出現基於 DRAM 技術的 FPGA 出現。

相比之下, SRAM 是不需要動態刷新的,但是它最小單元是一個消耗更多硅面積的多晶體管的結構。之所以不需要動態刷新,是因爲一旦 SRAM 單元被載入數據後,它將保持不放電,但是如果整個供電系統斷了的話,器件配置的數據將會丟失,這就是說這種器件在系統上電時需要重新配置。但是這種器件的特點是可迅速反覆地編程,這也是當時選中SRAM 技術實現 FPGA 的很大原因。 

 

1.2 SRAM 構成 FPGA 機理
 我們知道,從數學上任何一個邏輯都能用有限多項式來實現或逼近, CPLD 是從具體多項式實現的角度考慮來從電路上映射實現。那麼我們放大一些思維,直接從多項式結果上考慮,針對不同的輸入組合,我們可以得到不同的多項式結果,如果我們將這些結果存起來,然後不同的輸入組合進行索引結果,便可直接輸出多項式結果了。當時基於 SRAM 技術的FPGA 思想就是這個,把事先可能的輸入組合帶入多項式進行計算,把結果存在 SRAM 中,用輸入進行索引得出結果。這個存放結果的 SRAM 我麼稱作查找表 LUT,也有些地有說基於 LUT 技術的 FPGA,其實我們基於 SRAM 技術的 FPGA 就是這個基於 LUT 技術的 FPGA的本質,後面會提到基於 E2PROM/FLASH 技術的 FPGA,它其實也是基於 LUT 技術的 FPGA。 基於 LUT 技術的 FPGA 實現機理,通過綜合器事先將所有可能的輸入的進行換算得到所有可能的結果,然後把這些結果載入到 LUT 存儲單元中,然後通過不同輸入進行索引出相應的結果,這就是整個基於 LUT 技術的 FPGA 實現邏輯機理。

 

1.3 LUT 的討論
 上面的例子中,我們看到所用的 LUT 是一個三輸入,存儲單元爲 8 比特的規模,對於同一塊麪積來講,是用越多的小規模的 LUT 好還是用少一點的規模大的 LUT 好呢?這是我們接下來要討論的問題。對於一個 n 輸入查找表來說,它能夠實現任何具有 n 輸入組合函數功能,假如增加一位輸入的話,它可以實現的函數複雜度是成倍增加的,當然使用的 SRAM 也是成倍增加的。在歷史上第一片 FPGA 是基於 3 輸入 LUT 的,後來也出現過的 LUT 有 3 輸入、 4 輸入、 5輸入、 6 輸入以及片內混合型的(即兼有其中兩種或兩種以上類型的 LUT)。無論怎樣,需要知道的是查找表越小,它的配置使用率就越高,但是邏輯綜合器的工作量就越大。經過一些性能和成本的最後衡量,於是市面上主流廠商的片子是基於 4 輸入 LUT 的,但是一些高端的器件,比如 Xilinx 的 V4 及以上系列,即存在 4 輸入 LUT,也存在 5 輸入的 LUT。主要的考慮是隨着面積的增大,全都採用 4 輸入的,綜合器的工作量很多,如果全部使用 5輸入的,那麼有很大一部分 LUT 利用率不是很高,比如一個函數是 4 輸入的功能規模,也得用一個 5 輸入的 LUT 實現,剩下的 1 輸入不能被重新利用,就浪費掉了。經過這麼一綜合, 4 輸入和 5 輸入的 LUT 都有了。隨着技術的發展,多少輸入的 LUT 來構成 FPGA 相信也會在目前大部分基於 4 輸入的基礎上有所改變。對於我們邏輯開發者來說,在確定好開發平臺後,明確了構成該型號 FPGA 的 LUT 後,編寫邏輯時,要儘量充分利用 LUT,如果構成該 FPGA 的 LUT 是 4 輸入的,那麼邏輯信號寬度儘量用 4 的倍數,比如你用到一個計數器是 23 位寬的,這裏建議用 24 位寬的,一個是不浪費資源,二個是可以防止計數溢出,除非有目的的設計它爲 23 位用來加 1 清零。

 

1.4 基於 SRAM 優缺點
 通過上面的瞭解,我們知道了基於 SRAM 技術的 FPGA 可編程機理,基於這種技術的FPGA 的優缺點是什麼?我接下來做個總結。在前面敘述三種技術的時候,提到了一點,就是基於 SRAM 技術的 FPGA 可反覆的重新配置,這就意味着設計者可以不斷的反覆的下載設計的邏輯做驗證,一次不行可以快速修改設計後重新配置,這是它的一個最大的特點,它的另一個優點是 FPGA 製造廠商可以依靠很大的致力於存儲設備研發的公司的力量推動 FPGA 的發展,正式由於這一點,基於SRAM 的 FPGA 比其他技術的要先進一代甚至幾代。世界上沒有盡善盡美的東西,基於 SRAM 技術的 FPGA 也是,他既然有可重新配置的優勢,帶來的不利就是它每次在系統掉電後,之前載入的程序將丟失,系統上電後需要重新配置。配置是從外部專用的外部存儲器件中引導配置的,這就帶來了板級有關的花費和麪積消耗。
另一個我們在使用基於 SRAM 技術的 FPGA 需要考慮的是安全問題。大家都知道,現在很多複雜一點的電路,抄板,其實 80 年代末 90 年代初的時候就開始了,只不過當時還是表測,高級一點的是抄板機。同樣, FPGA 設計需要考慮知識產權的保護。用來對基於 SRAM技術的 FPGA 上電配置的數據文件是存儲在外部存儲器中的。雖然還沒有什麼商業工具可以讀取存儲的配置文件轉換成相應的原理圖和網標描述,但是這也是遲早的事。

 

2 基於反熔絲技術原理
2.1 熔絲與反熔絲
 在敘述基於反熔絲技術 FPGA 的電路原理之前,我們先來看看什麼是熔絲,什麼是反熔絲,以免在後面的敘述中大家會一直帶着這個問題,一致越看越費勁。熔絲的概念大家可能沒有,但是保險絲的概念相信更接近我們生活,它們並不僅僅有個絲的關係在裏面,其實原理是一樣的。小時候,那時候還是老一代電錶,幾戶人家公用一個電錶,晚上用的電器多了,特別是那時農村裏電視是個打發時間的好東西,一到晚上功率一大,經常斷電,一查就是燒了保險絲,當時家裏沒少備着,看大人們樓梯一架,馬上就好了,還以爲他們很厲害,修電成了那時的夢想。當然後來才知道這是一件多麼容易實現的理想。我們這裏的熔絲是小型的保險絲,小到只有用顯微鏡才能看得到,它的基本原材料也是硅。保險絲是大功率時會過載熔斷,熔絲也一樣遇到大電流大電壓的時候也會斷開。反熔絲呢?反熔絲僅從文字上看猜到,它們的技術原理正好相反。反熔絲最開始的時候是連接兩個金屬連線的微型非晶體硅柱,在未編程狀態下,非晶體硅就是一個絕緣體,也就是意味着斷開,當遇到大電流和大電壓的時候就會變成電阻很小的導體,幾乎就是通路了。


2.2 熔絲與反熔絲編程機理
 我們大概知道了這個反熔絲的概念了,我們是如何利用這樣的技術來實現我們大規模的可編程邏輯陣列的呢?我們先來看幾個簡單的例子,看看我們這個熔絲和反熔絲是如何形成我們簡單邏輯的可編程。其實最早的爲人所知允許開發者進行器件可編程的是這個熔絲技術。

不管是熔絲還是反熔絲,都相當於開關,只不過熔絲編程操作的是需要的邏輯的反斷開,而反熔絲的編程操作是將需要的邏輯給接上。這樣就爲反熔絲型 FPGA提供的可編程基礎。這裏需要說明的是,我們現在的基於各種技術的 FPGA 裏並沒有基於熔絲型的 FPGA,但是在可編程的 PROM 裏面有采用熔絲技術的,所以在這裏對熔絲可編程性一併做一個說明,也說不準以後會出現熔絲型 FPGA。

2.3 最小單元 MUX
什麼是 MUX?在介紹基於 SRAM 技術的 FPGA 裏有用門電路搭建過,它是二選一多路選擇器。爲什麼介紹它呢?它是構成基於反熔絲型 FPGA 的基本結構,是怎樣構成的呢?我們還是先看一個這個簡單的二選一多路器,如圖。

在輸入信號 s、 a、 b 輸入端各選一個反熔絲進行通電拉長。不知道大家發現一個規律沒有,當發生乘操作的時候,都有 s 信號或其反信號,爲二選一的選擇開關信號;當發生加操作的時候,加的兩項加數是作爲二選一的被選擇信號。從 CPLD 結構裏得知,有了乘和加,就能夠實現任何多項式,也就能實現或逼近任意函數了。有些地方有說基於 MUX 結構的 FPGA 和這裏說的基於反熔絲技術的 FPGA 結構至少目前說的是一回事,因爲目前還沒有基於其他技術的FPGA 是 MUX 結構的。

 

2.4 基於反熔絲技術的優缺點討論
既然是討論,那我們就得帶着問題進行探討。爲什麼我們有了這個基於 SRAM 技術的FPGA 還要用反熔絲技術?它爲什麼會產生?哪種需求需要它?等等帶着這些問題,我們來說下基於反熔絲技術的優缺點。
在上面介紹 SRAM 技術的之後,我們知道了,基於 SRAM 技術的最大的缺點就是掉電失配,上電重配,外圍必須要用配置存儲芯片,佔用板級空間,而且基於 SRAM 的 FPGA本身最小單元的面積相對來說比較大,也就決定了由它得到的同等邏輯的 FPGA 面積大。然而基於反熔絲技術的 FPGA 是非易失性的,配置數據在系統掉電後依然存在,上電後,系統會立刻使用,不需要額外的配置存儲芯片來配置,這樣就節約了額外的板級面積了,同時儘管基於反熔絲的需要額外的編程電路,但是當規模達到了百萬千萬的時候,它的密集性就會很明顯了,而現在的一些基於 SRAM 技術的已達到這個規模了,所以這一點在今後看會越來越明顯。其實大家細心一點就會發現, ACTEL 的一些型號 FPGA 芯片大部分面積很小的。
反熔絲型的 FPGA 的另一個很大的優點也是它能夠和基於其他技術的 FPGA 競爭生存下去的特性就是,它生來就是免疫輻射。這個對於軍事航空航天等有特別要求的場合來講還是非常有用的。在這些環境下,基於 SRAM 技術的 FPGA 裏面的 LUT 存儲單元在受到外部輻射,粒子流射線會導致存儲在 SRAM 中的邏輯 1 和 0 翻轉,最終導致整個邏輯功能錯亂。雖然基於 SRAM 的 FPGA 早期這針對這些環境也有解決策略,對設計採用多倍冗餘設計,採用多偏制,一個表保存多份,當其中一份或者幾份發生倒轉,但是大部分沒有發生倒轉,程序通過判斷後還能正常運行,但是這不是根本解決問題的方法,只是減小錯誤發生概率,也是以消耗幾倍的資源來滿足的。其實基於反熔絲的器件還有一些有點的,功耗低速度快延時小等,問題是說了這麼多好處,爲什麼還是發展的相對基於 SRAM 技術的 FPGA 落後很多呢?問題出在於反熔絲製造工藝上,它必須要一些很複雜的處理,能力不行,即使再好也只能眼巴巴的看着。但是後面的發展,這些誘惑性還是會引起廠商的重視的。  

 

3 基於 FLASH 技術原理
3.1 FLASH
 FLASH 我覺得大家非常不陌生,即是常聽的閃存,我們生活學習中經常用到。如果要追述 FLASH 技術的發展的話可以追述到 EPROM 和 EEPROM,閃存一方面具有 EPROM 的浮置柵晶體管單元,另一方面具有 EEPROM 的薄氧化層特性,所以具有電可擦除性能,其他結構方面的特性和具有雙晶體管的 EEPROM 相似,從而可以實現以字爲單元的操作。具體的電路我們可以查找半導體相關介紹,這裏對於我們瞭解 FPGA 來將,只要知道這個層次就足夠了。

 

3.2 FLASH 結構 FPGA
在對 FLASH 有了一定了解後,我們來看看基於 FLASH 的 FPGA 的原理,就目前市面上來講,純 FLASH 結構的 FPGA 並不多見,更多的是形式是 FLASH 與 SRAM 混合形式的FPGA,如圖 XX。其中 SRAM 用於構成器件正常工作時的電路,而 FLASH 則是用來在上電時對 SRAM 進行配置,本身 FLASH 是具有掉電非易失性,所以並不需要額外的片外配置電路。

 

3.3 FLASH 架構 FPGA 優缺點
由於市面上基於 FLASH 架構的 FPGA 主要廠家是 ACTEL,所以大部分基於 ACTEL 有的 FLASH 型 FPGA 來說明。首先是單芯片可重配性。在前面提到,基於反熔絲的 FPGA 不需要額外的配置存儲但是是一次性編程的,用在較成熟的產品中,不能重複的配置驗證,基於 SRAM 技術的 FPGA可以重複下載驗證,但是需要外部額外的配置存儲器件,上電後需要一定的配置延時時間。兩者都不是很盡人意。那麼基於 FLASH 技術的 FPGA 它在兩者當中都取得了優勢,既可以重複下載配置,也不需要額外的片外配置芯片。

第二個是高安全性。基於 SRAM 的 FPGA 很大的問題就是安全性很難保障,逆向工程工作者通過努力可以分析出配置在片外的存儲器的配置文件,推出其電路網表結構。而ACTEL 的 FLAHS 架構的 FPGA 可以從三個層次很好的對電路進行保護。第一層是這個物理層的保護,在 ACTEL 的第三代 FLASH 器件中,晶體管有多層金屬保護,去除它非常困難,很難實現逆向,同時採用的是片內配置,不用擔心在上電配置過程中數據流被截取。第二層就是基於 FLASH LOCK 加密技術,通過將密鑰下載到芯片中進行加密來防止對芯片非授權的操作,載入密鑰後,從器件中讀取數據或寫入數據的唯一途徑就是 JTAG 端口。第三層就是加密算法了,採用的是 AES 加密算法,該算法目前來說只能採用暴力破解的方式,然而目前的 JTAG 端口速度大約是 20MHz,按照 128 位密鑰, 1 秒鐘算一個密鑰的話,也得算上幾億年。

第三大優點是低功耗, ACTEL 的 FPGA 的功耗低也是其賣點。特別是很多手持設備的低功耗要求。 FPGA 的功耗主要考慮有四個方面,分別是上電功耗、配置功耗、靜態功耗和動態功耗。ACTEL 的 FLASH 型 FPGA 上電不需要大電流啓動,且非易失性,幾乎是沒有上電功耗和配置功耗的,同時因爲其相比 SRAM 型 FPGA 的可編程開關的 6 個晶體管,它只需要 2 個,靜態功耗也好 動態功耗也罷,都具有很強的競爭力。

FLASH 型的 FPGA 還有很多的有點,比如另一個賣點,相比 SRAM 型的穩定性可以抵抗輻射,成本低等等,但是事實的情況是大部分的市場還是給 ALTERA 和 XILINX 佔據,主要的問題和基於反熔絲技術的 FPGA 一樣,在其生產過程中存在更多的工序,工序一多,一種技術的提高要求各道工序都的有提高,這個有點類似水桶原理。對之前未涉及該類型的FPGA 廠家來講,是不太願意做的事情,除非本身的領域受到強烈的衝擊。  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章