2012年10月3日 星期三

PLD GAL CPLD FPGA 介紹

可程式邏輯裝置英語Programmable Logic Device, PLD
是一種電子零件、電子組件,簡而言之也是一種積體電路晶片
PLD晶片屬於數位型態的電路晶片,而非類比或混訊(同時具有數位電路與類比電路)晶片。
PLD與一般數位晶片不同的是:PLD內部的數位電路可以在出廠後才規劃決定,有些類型的PLD也允許在規劃決定後再次進行變更、改變,而一般數位 晶片在出廠前就已經決定其內部電路,無法在出廠後再次改變,事實上一般的類比晶片、混訊晶片也都一樣,都是在出廠後就無法再對其內部電路進行調修。
本文以下將講述PLD的發展歷程,然而要想瞭解PLD的過往發展歷程就不得不談及一些半導體業者,但講述這些業者在PLD方面的事蹟並非是本文的用意,也沒有推介或批評這些業者的意思。

將ROM當成PLD來使用


  NEC公司PROM晶片:D23128C,位於ZX Spectrum的電路板上。
在PLD還未被發明前,已有人將唯讀記憶體ROM)晶片以PLD的概念來運用,用ROM晶片來充當一些輸入性的組合邏輯(combinatorial logic)函式。
首先一顆ROM晶片有 m 個輸入(位址線,或稱:位址匯流排、定址線)以及 n 個輸出(資料線,也稱:資料匯流排,在此也可稱:資料輸出線),當ROM被當成記憶體使用時,它就有 2^mn bits 的記憶儲存空間。
現在我們運用一下想像,輸入部分不再是個 m-bit 的位址線路,而被看成是有 m 個相互無關連的獨立邏輯信號線。且就理論而言一顆ROM晶片內可以放置 2^   m布林Boolean)函式(也稱:布爾函式),且每個布林函式可以有 m 個邏輯信號。
不過,這種用ROM「喬裝」成的PLD,礙於ROM自身原有的結構設計,使真正有效的函式數取決於輸出接腳(也稱:腳位、引腳)數,因此有 n 個輸出就只能有 n 個可用的有效函式。更簡單的說,這時候的ROM等同於 n 組相互無關的獨立邏輯電路,每組電路的產生、形成,則取決於由 m 個輸入所組成的邏輯函式。
使用ROM來當PLD的好處是:有幾個以m輸入方式表示的邏輯函式,就會有幾個對應的n輸出,且絕大多數一般性用途的組合邏輯裝置都可適用此種作法。同樣的,PROM(Programmable ROM)、EPROM(ultraviolet-Erasable PROM)、EEPROM(Electrically Erasable PROM)等也都可以用此種方式進行邏輯規劃、程式化,而且不需要特殊的軟硬體,只要用標準的PROM燒錄器即可實現程式化。然而,無論怎麼說,這種作法也有些缺點:
  • 與真正專精的邏輯電路相比,在反應速度表現上慢了太多。
  • 在非同步(也稱:異步)的邏輯狀態轉變下,無法提供安全性的狀態「防護,cover」。
  • 過於耗電(同樣是與真正專精的邏輯電路相比)。
  • 整個ROM中僅有小部分的記憶儲存空間能被有效使用,其餘都形同浪費。
再者,此法也不易於用於序向邏輯電路(sequential logic)中,因為ROM裡頭並不具備正反器(flip-flop,簡稱:FF,zh-cn處則稱:觸發器)。
進一步的也舉實例,對電路設計的業餘愛好者來說(這類的嗜好者經常就在我們四周),有時也仍然用「2716」之類的普遍型EPROM晶片來充當PLD,這種用法有時也稱為「窮人的PAL」。(PAL也是PLD的一種,以下將再進一步說明)

早期的可程式邏輯


MMI公司1978年推出的PAL,稱為PAL16R6,具有20-pin接腳、引腳,採行DIP封裝
第一個在商業化市場運用的PLD,是由Monolithic記憶體公司Monolithic Memories, Inc.,簡稱:MMI)所推出的可程式化陣列邏輯Programmable Array Logic,簡稱:PAL(此點有爭議,詳見討論頁),雖然IBM公司在1970年代中也有研製類似的裝置(器件),但僅在該公司內部使用。[1]
MMI公司在20-pin(20支接腳、引腳、腳位)的PAL方面相當成功,之後超微AMD)公司也推出了22V10,22V10也是顆PAL,具有原先PAL所有的特性特點,但接腳數增至24-pin。更之後AMD公司收併了MMI公司(約1987年,待查證),並將其納入自身的PLD部門,數年後AMD以百分之百轉投資的方式將PLD部門分立成獨立的威特信Vantis)公司,到了1999年則由萊迪思半導體Lattice Semiconductor)公司收購AMD公司手中的Vantis公司股份,自此收併Vantis公司。

GAL

以PAL(可程式陣列邏輯)為基礎的接續創新是GALGeneric Array Logic,通用陣列邏輯),此是由萊迪思半導體en:Lattice Semiconductor)公司所發明,GAL的特性與PAL相同,不過PAL的電路組態、配置只能進行一次的程式燒錄,不能再有第二次,而GAL則是可以反覆對電路組態、配置進行燒錄、清除、再燒錄、再清除。[2]
GAL這種可重複燒錄的特性在研發過程時的試製階段(prototyping stage)中特別好用,一旦在邏輯電路的設計上發現有任何錯誤(bug),若是用GAL就能夠以重新燒錄的方式來修正錯誤。此外GAL也可以用PAL的燒錄器來進行燒錄及再燒錄,雖然現在已經有可線上燒錄(In-Circuit Programmable,有時也稱:In-System Programmable)的ispGAL22V10。
另一個與GAL相類似的是PEELProgrammable Electrically Erasable Logic),是由International CMOS Technology(簡稱:ICT)公司所提出

CPLD


Altera公司的MAX 7000系列CPLD:EPM7128SLC84-7,該CPLD內有2,500邏輯閘可供組態配置。
PAL、GAL僅適合用在約數百個邏輯閘所構成的小型電路,若要實現更大的電路則適合用CPLDComplex PLD,複雜型PLD),一顆CPLD內等於包含了數顆的PAL,各PAL(邏輯區塊)間的互接連線也可以進行程式性的規劃、燒錄,CPLD運用這種多合一(All-In-One)的整合作法,使其一顆就能實現數千個邏輯閘,甚至數十萬個邏輯閘才能構成的電路。
至於CPLD的程式燒錄方式,雖然有些CPLD可以用PAL的燒錄器來進行燒錄,但這種燒錄方式對經常有數百隻接腳的CPLD來說並不方便。另一種燒錄方式是CPLD已焊於印刷電路板上,之後透過額外的臨時外接,或原有線路的內接,使CPLD與個人電腦間能取得連線,由個人電腦以串列或並列方式將新的燒錄資料發送到CPLD上,而CPLD內部也具有解碼電路能對接收到的資料進行還原解析,之後再進行重新的燒錄,以此方式讓CPLD內的程式(也可稱:電路)獲得更新。
要注意的是,每家業者的CPLD晶片多具有焊接後再行傳輸、再次燒錄的技術,但各家的技術實現方式與名稱多不盡相同,例如萊迪思半導體en:Lattice Semiconductor)公司就將此種燒錄技術稱為「in-system programming」。
不過,各家獨創、專屬的作法也正逐漸消失、去除中,並朝共通標準、一致的方向發展,如IEEE 1532。

FPGA


Altera公司的Flex系列FPGA:EF10K20RC240-4,該晶片內有20,000個Cell(邏輯晶格)可供組態配置。
當PAL忙於進展成GAL、CPLD時,另一種「可程式化」的流派也逐漸成形,此稱之為場式可程式閘陣列Field Programmable Gate Array,簡稱:FPGA)或現場可程式閘陣列,FPGA是以閘陣列en:Gate Array)技術為基礎所發展成的一種PLD。
FPGA早期的例子是Signetics公司在1970年代晚期所推出的82S100(陣列)及82S105(定序器、編序器),其中82S100為「與,AND」型的閘陣列,而82S105也相同,但再追加正反器(Flip Flop,cn處也稱:觸發器)的功能。
FPGA運用一種邏輯閘式的網格(Grid),這種網格與普通的「閘陣列」相類似,網格可以在FPGA晶片出廠後才進行組態配置的程式性規劃。至於為何要稱「場式可程式化」就有些難懂了,「場式,Field」對晶片生產廠以外的世界來說是個工程方面的專業術語,然而廠外也是晶片買主的所在處。(言下之意是:不應當以這種艱澀難懂的工程用詞來做為晶片產品的推行名稱)[3]
FPGA通常也可以在焊接後再進行程式燒錄、變更的工作,此在某種程度與大型的CPLD相似。而絕大多數的FPGA,其內部的程式組態配置是屬於揮 發性的,即是無持續電力供應後組態配置的內容就會消失,所以在裝置(也指:器件、晶片)重新獲得電力後,就必須將組態配置內容重新載入(re-load) 到FPGA中,或者期望改變FPGA內的配置組態時,也必須進行重新載入的動作。
而關於組態配置的內容,就一般來說會存放在非揮發性的記憶體中,如PROMEEPROM,若是用EEPROM,則或許也能用線上燒錄(In-System Programmable,ISP)的方式來再次改變組態配置的內容(一般來說是透過JTAG介面來進行ISP)。
FPGA與CPLD都很適合用在特殊、特定的工作上,這是以此類晶片的技術本質來做為合適性的考量,然而有時在以經濟性為主的權衡評估下也適合使用FPGA、CPLD,或者有時也會以工程師的個人偏好與經驗來決定。

沒有留言:

張貼留言