1970-PLA 可程式邏輯陣列#
案件摘要#
1970 年代,德州儀器(TI)的 John Sangster 等人提出「可程式邏輯」的概念,將固定的布線改為由使用者決定的連接點。1975 年,Signetics 推出首款商品化現場可程式邏輯陣列 82S100 FPLA,讓工程師不必重新設計晶片,就能在一片現場燒錄的元件上實作任意兩級組合邏輯。
前因 -- 為什麼會會有這個案子#
1960 年代末,數位系統設計者面臨一個兩難:要用標準的 74 系列中小型積體電路(SSI/MSI)拼出控制邏輯,就得付出大量的板面積、焊點與除錯時間;而若採用客製化的 mask ROM 或專用邏輯晶片,光罩費用高昂、交期漫長,一旦設計出錯便前功盡棄。組合邏輯函數 \(f:\{0,1\}^n \to \{0,1\}\) 的數量高達 \(2^{2^n}\) ,例如 \(n=10\) 時便有超過 \(10^{308}\) 種,任何「固定功能」的晶片都注定只能覆蓋極小的角落。
TI 的 John Sangster 等人在這段期間發展出可程式邏輯的構想:與其由晶片製造商決定邏輯功能,不如把「做決定的權力」留給使用者,由使用者在現場以燒錄(programming)的方式決定內部連接。這個想法在 1975 年由 Signetics 付諸商品化——82S100 FPLA(Field Programmable Logic Array),內含 48 個乘積項,採用鎳鉻熔絲(NiCr fuse)技術,能在現場以高電流燒斷不需要的連接點。
這就是第一樁「可程式邏輯」案件:一片晶片,既是邏輯元件,又是一張留白待填的表格。
線索與推理 -- 數學式、程式、理論#
積之和:兩級 AND-OR 平面的本質#
任何組合邏輯函數都可以寫成最小項(minterm)的積之和(Sum of Products, SOP)形式。令最小項編號為 \(i\) ,則:
其中 \(I\) 是使函數為 1 的所有輸入組合的集合。這正是 Shannon 展開定理(又稱 Shannon expansion)的必然結果:
反覆對每個變數展開,最後每一項都是一個最小項。而每個最小項 \(m_i\) 都可以由一個 AND 閘產生(AND 平面的任務),再把所有需要的最小項送進一個大 OR 閘(OR 平面的任務)。
PLA 的「兩級平面」結構正是把這個數學事實直接搬進矽片:
| 平面 | 輸入 | 輸出 | 實作的數學物件 |
|---|---|---|---|
| AND 平面 | \(n\) 個輸入及其反相 | \(p\) 個乘積項(product term) | 每條乘積項線 = 一個寬輸入 AND 閘 |
| OR 平面 | \(p\) 個乘積項 | \(m\) 個輸出 | 每條輸出線 = 一個 OR 閘對乘積項求和 |
在 PLA 中,可程式化的地方是兩個平面都可程式:AND 平面上決定哪些輸入(原變數或反相)參與每個乘積項;OR 平面上決定哪些乘積項參與每個輸出。相較之下,ROM 只是把 AND 平面「固定」為完整譯碼器(產生全部 \(2^n\) 個最小項),僅 OR 平面可程式——這是 ROM 與 PLA 的根本差異。
PLA vs ROM 的面積複雜度#
考慮 \(n\) 個輸入、 \(p\) 個乘積項、 \(m\) 個輸出的情形。以連接點(位元)數量衡量面積:
| 輸入數 \(n\) | 乘積項數 \(p\) (典型) | ROM 位元數 \(2^n \times m\) | PLA 位元數 |
|---|---|---|---|
| 8 | 40 | \(256 \times 4 = 1024\) | \(2(8)(40)+40(4) = 800\) |
| 10 | 60 | \(1024 \times 4 = 4096\) | \(2(10)(60)+60(4) = 1440\) |
| 12 | 80 | \(4096 \times 4 = 16384\) | \(2(12)(80)+80(4) = 2240\) |
關鍵推理:PLA 的面積隨乘積項數 \(p\) 線性成長,而 ROM 隨 \(n\) 指數成長。當函數的 SOP 表示式只用少數乘積項(絕大多數實際控制邏輯都是如此),PLA 遠比 ROM 省面積。反之,若函數「幾乎所有輸入組合都為 1」需要極多乘積項,ROM 反而划算。這解釋了為什麼 PLA 適合控制邏輯(稀疏的輸入→輸出映射),而 ROM 適合查表(稠密映射)。
82S100 FPLA 規格與範例#
Signetics 82S100 的基本參數:
| 項目 | 規格 |
|---|---|
| 輸入數 | 16(含原變數與反相) |
| 乘積項數 | 48 |
| 輸出數 | 8 |
| 燒錄技術 | 鎳鉻熔絲 |
| 輸出型態 | 三態(TS) |
| 封裝 | 28 腳 |
用 PLA 圖表示法描述一個小例子。設 \(n=2\) (輸入 \(A, B\) ),要實作兩個函數:
先用表格表示 AND 平面(× 表示連接):
| 乘積項 | \(A\) | \(\bar{A}\) | \(B\) | \(\bar{B}\) | 意義 |
|---|---|---|---|---|---|
| \(P_1\) | × | × | \(AB\) | ||
| \(P_2\) | × | × | \(\bar{A}\bar{B}\) | ||
| \(P_3\) | × | × | \(A\bar{B}\) |
再表示 OR 平面:
| 輸出 | \(P_1\) | \(P_2\) | \(P_3\) | 函數 |
|---|---|---|---|---|
| \(F_1\) | × | × | \(AB + \bar{A}\bar{B}\) | |
| \(F_2\) | × | \(A\bar{B}\) |
注意 \(F_1\) 是異或(XOR): \(F_1 = A \oplus B\) 。這個例子的最小項集合是 \(I = \{1, 2, 3\}\) ( \(A\bar{B}\) 、 \(\bar{A}B\) 、 \(AB\) ),其中 \(\bar{A}B\) 項可與 \(AB\) 合併為 \(B\) ——這正是化簡的功勞:好的 PLA 設計者會先做邏輯化簡,用最少的乘積項覆蓋所有最小項,因為乘積項是整個晶片最貴的資源。
熔絲燒錄的物理與「乘積項共享」推理#
FPLA 的每一個連接點都是一條微小的鎳鉻熔絲。出廠時全部連通(邏輯 1),燒錄時對需要「斷開」的位置施加約 \(20\sim30\,\mathrm{mA}\) 的脈衝電流,熔絲因焦耳熱 \(Q = I^2 R t\) 汽化斷開。因此 PLA 的預設狀態是:
- AND 平面:若所有輸入都連接,乘積項 \(= \prod(x_i + \bar{x}_i) = 0\) (恆為假);
- OR 平面:若所有乘積項都連接,輸出 \(= \sum P_j\) (所有項之和)。
燒錄的本質,就是用熔絲的斷開「挑掉」不需要的訊號路徑。
另一個重要的推理:兩級 PLA 的每一條乘積項可以被多個輸出共享。若某乘積項 \(P_k\) 同時是 \(F_1\) 與 \(F_2\) 的一部分,只需在 OR 平面連兩個點即可。這種「乘積項共享」是 PLA 優於離散閘拼裝的另一個關鍵,也是後來 PAL(乘積項不共享)為了換取速度而犧牲的成本優勢。
結案 -- 後果與影響#
PLA 的誕生證明了「可程式邏輯」這條路走得通:一片晶片可以同時是製造者的產品與使用者的畫布。82S100 雖然價格高昂、乘積項有限,但它在電信交換機、微處理器周邊控制電路中迅速站穩腳步,證實市場存在。TI、Signetics、National Semiconductor 等廠商隨後展開 PLD 競賽。
影響條列:
- 確立了 SOP/兩級平面的邏輯抽象,成為此後所有 PLD(PAL、GAL、CPLD)乃至 FPGA 合成器的理論基礎。
- 現場燒錄(field programmable)從此成為產業術語,改寫了「晶片出廠即定型」的規則。
- PLA 內部結構被廣泛複用:1970 年代許多微處理器(如 MC68000 的微碼控制)內部也嵌入了 mask PLA,可程式版 PLA 則成為板級 glue logic 的主力。
- 面積複雜度分析(線性 vs 指數)為後續架構取捨提供了量化語言。
關鍵人物與文獻#
- John Sangster(德州儀器):可程式邏輯概念的重要推手,主導 TI 早期可程式邏輯元件的發展。
- Signetics 工程團隊:1975 年推出 82S100 FPLA,為首款商品化現場可程式邏輯陣列。
- C. E. Shannon:《A Symbolic Analysis of Relay and Switching Circuits》(1938),展開定理的數學根基。
- T. S. Birkner 與 H. T. Chua:其後 PAL 的發明者,故事接續於下一案。
- G. D. Hachtel、F. Somenzi:《Logic Synthesis and Verification Algorithms》(Kluwer, 1996),SOP 化簡與 PLA 映射的系統性整理。
- R. Brayton 等:《Logic Minimization Algorithms for VLSI Synthesis》(Kluwer, 1984),Espresso 演算法及其前身,PLA 自動化簡的經典。