可程式化邏輯裝置

可程式設計邏輯器件（Programmable Logic Device，縮寫為 PLD）是一種電子零件、電子元件，簡而言之也是一種積體電路、晶片。PLD 晶片屬於數字型態的電路晶片，而非模擬或混訊（同時具有數位電路與類比電路）晶片。

PLD 與一般數位晶片不同的是：PLD 內部的數位電路可以在出廠後才規劃決定，有些型別的 PLD 也允許在規劃決定後再次進行變更、改變，而一般數位晶片在出廠前就已經決定其內部電路，無法在出廠後再次改變，事實上與一般的類比晶片、混訊晶片一樣，在出廠後就無法再對其內部電路進行調修。

發明之前

在 PLD 還未被發明前，已有人將唯讀記憶體（ROM）晶片以 PLD 的概念來運用，用 ROM 晶片來充當一些輸入性的組合邏輯（combinatorial logic）函式。

首先一顆 ROM 晶片有 m 個輸入（位址線，或稱：位址匯流排、定址線）以及 n 個輸出（資料線，也稱：資料匯流排，在此也可稱：資料輸出線），當 ROM 被當成記憶體使用時，它就有個 n bits 的記憶儲存空間。

輸入部分不再是個 m-bit 的位址線路，而被看成是有 m 個相互無關連的獨立邏輯訊號線。且就理論而言一顆 ROM 晶片內可以放置個布林（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）。

對電路設計的業餘愛好者來說，有時也仍然用普遍型 EPROM 晶片來充當 PLD，這種用法有時也稱為「窮人的 PAL」（PAL 是 PLD 的一種）。

早期的可程式邏輯

第一個在商業化市場運用的 PLD，是由 Monolithic 記憶體公司（Monolithic Memories, Inc.，簡稱：MMI）所推出的可程式化陣列邏輯（Programmable Array Logic，簡稱 PAL）（此點有爭議，詳見討論頁），雖然 IBM 公司在 1970 年代中也有研製類似的裝置（器件），但僅在該公司內部使用。

MMI 公司在 20-pin（20 支接腳、引腳、腳位）的 PAL 方面相當成功，之後超微（AMD）公司也推出了 22V10，22V10 也是顆 PAL，具有原先 PAL 所有的特性特點，但接腳數增至 24-pin。更之後 AMD 公司收併了 MMI 公司（約 1987 年，待查證），並將其納入自身的 PLD 部門，數年後 AMD 以百分之百轉投資的方式將 PLD 部門分立成獨立的威特信（Vantis）公司，到了 1999 年則由公司收購 AMD 公司手中的 Vantis 公司股份，自此收併 Vantis 公司。

GAL

以 PAL（可程式化陣列邏輯）為基礎的接續創新是通用陣列邏輯（Generic Array Logic, GAL），此是由公司所發明，GAL 的特性與 PAL 相同，不過 PAL 的電路組態、配置只能進行一次的程式燒錄，不能再有第二次，而 GAL 則是可以反覆對電路組態、配置進行燒錄、清除、再燒錄、再清除。

GAL 這種可重複燒錄的特性在研發過程時的試製階段（prototyping stage）中特別好用，一旦在邏輯電路的設計上發現有任何程式錯誤，若是用 GAL 就能夠以重新燒錄的方式來修正錯誤。此外 GAL 也可以用 PAL 的燒錄器來進行燒錄及再燒錄，雖然現在已經有可線上燒錄（In-Circuit Programmable，有時也稱：In-System Programmable）的 ispGAL22V10。

另一個與 GAL 相類似的是 PEEL（Programmable Electrically Erasable Logic），是由 International CMOS Technology（簡稱：ICT）公司所提出。

CPLD

PAL、GAL 僅適合用在約數百個邏輯閘所構成的小型電路，若要實現更大的電路則適合用 CPLD（Complex PLD，複雜型 PLD），一顆 CPLD 內等於包含了數顆的 PAL，各 PAL（邏輯區塊）間的互接連線也可以進行程式性的規劃、燒錄，CPLD 運用這種多合一（All-In-One）的整合作法，使其一顆就能實現數千個邏輯閘，甚至數十萬個邏輯閘才能構成的電路。

至於 CPLD 的程式燒錄方式，雖然有些 CPLD 可以用 PAL 的燒錄器來進行燒錄，但這種燒錄方式對經常有數百隻接腳的 CPLD 來說並不方便。另一種燒錄方式是 CPLD 已焊於印刷電路板上，之後透過額外的臨時外接，或原有線路的內接，使 CPLD 與個人電腦間能取得連線，由個人電腦以串列或並列方式將新的燒錄資料傳送到 CPLD 上，而 CPLD 內部也具有解碼電路能對接收到的資料進行還原解析，之後再進行重新的燒錄，以此方式讓 CPLD 內的程式（也可稱：電路）獲得更新。

要注意的是，每家業者的 CPLD 晶片多具有焊接後再行傳輸、再次燒錄的技術，但各家的技術實現方式與名稱多不盡相同，例如公司就將此種燒錄技術稱為「in-system programming」。

各家獨創、專屬的作法也逐漸消失，朝共通的標準、一致的方向發展，如 IEEE 1532。

FPGA

當 PAL 忙於進展成 GAL、CPLD 時，另一種「可程式化」的流派也逐漸成形，此稱之為場式可程式閘陣列（Field Programmable Gate Array，簡稱：FPGA）或現場可程式閘陣列，FPGA 是以閘陣列（Gate Array）技術為基礎所發展成的一種 PLD。

FPGA 早期的例子是 Signetics 公司在 1970 年代晚期所推出的 82S100（陣列）及 82S105（定序器、編序器），其中 82S100 為「與，AND」型的閘陣列，而 82S105 也相同，但再追加正反器（Flip Flop，cn 處也稱：觸發器）的功能。

FPGA 運用一種邏輯閘式的網格（Grid），這種網格與普通的「閘陣列」相類似，網格可以在 FPGA 晶片出廠後才進行組態配置的程式性規劃。至於為何要稱「場式可程式化」就有些難懂了，「場式，Field」對晶片生產廠以外的世界來說是個工程方面的專業術語，然而廠外也是晶片買主的所在處。（言下之意是：不應當以這種艱澀難懂的工程用詞來做為晶片產品的推行名稱）

FPGA 通常也可以在焊接後再進行程式燒錄、變更的工作，此在某種程度與大型的 CPLD 相似。而絕大多數的 FPGA，其內部的程式組態配置是屬於揮發性的，即是無持續電力供應後組態配置的內容就會消失，所以在裝置（也指：器件、晶片）重新獲得電力後，就必須將組態配置內容重新載入（re-load）到 FPGA 中，或者期望改變 FPGA 內的配置組態時，也必須進行重新載入的動作。

而關於組態配置的內容，就一般來說會存放在非揮發性的記憶體中，如 PROM 或 EEPROM，若是用 EEPROM，則或許也能用線上燒錄（In-System Programmable，ISP）的方式來再次改變組態配置的內容（一般來說是透過 JTAG 介面來進行 ISP）。

FPGA 與 CPLD 都很適合用在特殊、特定的工作上，這是以此類晶片的技術本質來做為合適性的考量，然而有時在以經濟性為主的權衡評估下也適合使用 FPGA、CPLD，或者有時也會以工程師的個人偏好與經驗來決定。

維持 PLD 的電路組態與配置

在一個 PLD 內有邏輯部分也有記憶部分，記憶部分是用來儲存組態配置的程式內容，而儲存的方式多是存放在可供 PLD 使用的積體電路（也稱：積體電路）中，這包括：

Silicon s（矽反熔絲）
SRAM（靜態隨機存取記憶體）
EPROM or EEPROM cells（EPROM 或 EEPROM 的記憶晶格）
Flash memory（快閃記憶體，也稱：快閃記憶體）

矽反熔絲主要是用於 PAL 內，方式上是在 PAL 內部可程式化的矩陣中，若期望矩陣中的某處、某一位置能夠形成連線連線，則對該位置的行、列兩端施壓一個燒錄燒寫電壓（此電壓通常高於一般運作時的電壓），如此該位置就會形成連線的短路、閉路（short）狀態，相反的未施加電壓的地方則保持開路（open）狀態，由這開路、閉路來形成邏輯的 0、1 儲存。不過一旦某位置被施加燒寫電壓而形成短路後，就無法在恢復成開路狀態，但其他仍保持開路的位置，仍可施壓電壓使其短路，不過整體來說矽反熔絲僅適合一次性的組態配置燒錄，一旦燒寫的內容有錯誤，該顆 PAL 即宣佈報廢。此外，之所以稱為「反熔絲」，理由是它的特性原理恰巧與一般日常所用的熔絲、保險絲相反，保險絲平時為短路，而被施加較高電壓時便會燒斷，成為永久性的斷路、開路，反熔絲卻是平常為斷開，施加電壓後反成為連線的短路、閉路。

SRAM 屬於揮發性的記憶體，這表示它在每次失去供電後就無法儲存資料，若有 PLD 使用 SRAM 做為其組態配置的儲存記憶（多數為 FPGA），則每一次重新供電後就必須再次將組態配置資料載入（load，用意等同於將程式燒錄燒寫到 PLD 內）到 PLD 的 SRAM 中，不過此一送電後重新載入的程式，通常是交由另一部份的電路以自動化方式來執行，此一「開機後自動將程式載入到 PLD 內」的電路，過去是在 PLD 外部另行設計，但現在也有整合（也稱：整合）到 PLD 內部的作法。

EPROM 的記憶晶格是一種 MOS（metal-oxide-semiconductor，金屬氧化半導體）型的電晶體，若對該電晶體的閘極進行充電，則該充電後的狀態就會成為一個記憶留存，之後無論晶片有無供電都可以持續維持著該狀態，直到數年後充電狀態才會消退消失，而透過對各記憶晶格的充電有無就能夠儲存 0、1 的組態配置。至於記憶資料當如何抹除（也稱：拭除、擦除），這必須用強烈的紫外線對 EPROM 進行照射，以此強迫各閘極將原有的充電加以釋放，且時間必須長達數十分鐘才能全部抹除，否則會有抹除不完整的情形，此一抹除程式多是用所謂的「紫外線 EPROM 抹除盒」，英文稱 EPROM eraser，即是一個小盒子內設有紫外線燈管，之後將 EPROM 放入盒內，再將盒子的電源開啟並點亮紫外線燈管，讓紫外線照射 EPROM，以此來進行清除，也因為紫外線對人體有害，所以才要在密閉不透光的小盒子內進行照射，此外為了方便工程師使用，抹除盒通常還設有定時裝置，時間到後會自動提醒工程師已經達當初設定的照射時間。

快閃記憶體具有非揮發性，即是斷電後仍可儲存記憶內容，且需要時它也隨時能再清除抹除（erase）、再燒錄燒寫（program、reprogram）。

時至 2005 年，多數的 CPLD 都已使用電氣方式燒寫與電氣方式抹除，並以非揮發性方式來記憶。因為經過事實驗證，在太小的邏輯運用中用 SRAM 來儲存邏輯組態配置，則每次重新送電啟動就必須再次進行載入燒寫，如此實在過於麻煩，所以才會改成以非揮發方式來進行記憶儲存。此外，若是用 EPROM 方式進行儲存，且為了能夠再次抹除與再次燒寫，則 PLD 在其晶片封裝上就必須使用陶瓷材質的封裝，並在 EPROM 裸晶（Die）位置的上端設立石英材質的透光窗，好讓紫外線能夠照射入內，如此才能抹除 EPROM 裸晶上所儲存的組態配置資料，而這種封裝方式遠貴於一般的塑膠材質封裝。

PLD 的程式語言

以手工的方式來產生 JEDEC 檔過於複雜，所以多半改用電腦程式來產生，這種程式稱為「邏輯編譯器」（logic compiler），它與程式開發撰寫時所用的軟體編譯器相類似，而要編譯之前的原始程式碼也得用特定的程式語言來撰寫，此稱之為硬體描述語言（hardware description language, HDL）。

硬體描述語言並非僅有一種，如 ABEL、AHDL、Confluence、CUPL、HDCaml、JHDL、Lava、Lola、MyHDL、PALASM、RHDL 等，但目前最具知名也最普遍使用的是 VHDL 與 Verilog HDL。