2012年11月28日 星期三

2012/11/29 Ring_Osc_05






心得:這是第二題的練習 從這一題開始 有一點點難度提昇了 這是我練習這題得第二次了
第一次的時候並沒有完成 因為一開始的不熟悉 都會有一些錯誤 但做久了 練習多了
就發現了錯誤 並且更正了 完成後的成就感真得很棒

2012年11月7日 星期三

2012/11/8/gpdk090






心得:這是第二次做第二題  這次修改了錯誤 並且把他的圖做出來了 很開心
            做完這題之後 提高了自己的信心 覺得VLSI還蠻有趣的 會想要繼續練習下去

2012年10月31日 星期三

2012/11/1






心得:這是第一次做第一題的練習  第一次做感覺很複雜 並沒有做出 圖跑不出來
            但最後有發現錯誤 只是時間不夠了 下一次在努力看看

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,或者有時也會以工程師的個人偏好與經驗來決定。

PLD介紹


可規劃邏輯元件(PLD)

    傳統的邏輯電路均由布林代數化簡,然後經由基本邏輯元件組裝完成,此類電路存在著零件較多、接線複雜、成本較高、檢修不易、容易仿製等等的缺點。雖然任何數位電路可以經由訂製IC以縮小體積,並達到電路保密的目的,但對於小量生產或生命週期較短的產品並不經濟,此時可規劃邏輯元件(Programmable Logic DevicePLD)將是最佳選擇。
  •  PLD的結構與種類

    我們知道任何組合邏輯函數均可用積之和(SOP)的方式呈現,在電路上的結構是一種AND-OR的型態,其中AND閘與輸入的變數端關聯,而OR閘與函數輸出的項發生關聯,例如 ,需要使用4AND閘關聯輸入變數,另外還需要一個4輸入的OR閘關聯輸出的項,當然輸入變數需要的反閘也不可少。
(1) PLD結構圖
    PLD為了要讓使用者自行定義積之和的項,AND閘設計成可以規劃輸入連接的方式,如圖2至圖5所示,當保險絲符號斷路時,輸入端等於1。而可規劃OR閘是為了定義輸出的項,如圖6至圖7所示,當保險絲符號斷路時,連接的項消失。
(2) 固定4輸入及閘
(3) 可規劃4輸入及閘
(4) 可規劃及閘陣列中的畫法
(5) 可規劃及閘陣列中的簡圖
(6) 可規劃或閘陣
(7) 可規劃或閘陣列中的簡圖
 
   AND閘陣列與OR閘陣列分為固定或可規劃的設計,可將PLD分為以下幾種:

(1)可規劃僅讀記憶體

    可規劃僅讀記憶體(Programmable Read Only MemoryPROM)是一種AND閘陣列固定,OR閘陣列為可規劃的PLD。圖8為一只16×4位元PROM,在固定的AND閘陣列中構成161的解碼電路,而每一個F輸出以一個可規劃16輸入的OR閘與AND閘陣列連接,當此積之和函數(F)不需要的項,可將AND閘至OR閘輸入端的熔絲燒斷。由於4F函數輸出同時對應16個相同的輸入狀態,故構成一只16×4位元的僅讀記憶體。
(8) 16×4位元PROM

(2)可規劃邏輯陣列

    可規劃邏輯陣列(Programmable Logic ArrayPLA)是一種AND陣列與OR陣列均可規劃的PLD,以陣列接通的製造方式來區分,以熔絲(Fuse)為可規劃接點者稱為FPLA,以電晶體為可規劃接點者稱為PLAFPLAPLA的優點是可以用較少的“乘積項”來完成組合邏輯,而PROM是完整的“乘積項”。例如規劃 只需2×2×2PLA而不需2×4×2PLA,見圖9及圖10所示。
(9) 2×2×2 FPLD規劃前
(10) 2×2×2 FPLD規劃後

(3)可規劃陣列邏輯

    可規劃陣列邏輯(Programmable Array LogicPAL)將積之和中的AND陣列設計成可以規劃,而OR陣列是固定的,種類很多是PLD產品應用最為廣泛的元件。
(11) 2×2 PAL規劃前