1. 程式人生 > >淺談可程式設計邏輯器件

淺談可程式設計邏輯器件

專用積體電路(ASIC,Application Specific Integrated Circuit):是為某種專門用途而設計的積體電路。在用量不大的情況下,具有成本高、設計和製造的週期長。(全定製)

 

可程式設計邏輯器件(PLD,Programmable Logic Device):PLD 是做為一種通用積體電路產生的,他的邏輯功能按照使用者對器件程式設計來確定。一般的 PLD 的整合度很高,足以滿足設計一般的數字系統的需要。這樣就可以由設計人員自行程式設計而把一個數字系統“整合”在一片 PLD 上,製作成“片上系統”(SoC,System on Chip),而不必去請晶片製造廠商設計和製作專用的積體電路晶片了。

 

目前生產和使用的 PLD 產品主要有可程式設計邏輯陣列(PLA,Programmable Logic Array)、可程式設計陣列邏輯(PAL,Programmable Array Logic)和通用陣列邏輯(GAL,Generic Array Logic)、可擦除的可程式設計邏輯器件(EPLD,Erasable Programmable Logic Device)、複雜的可程式設計邏輯器件(CPLD,Complex Programmable Logic Device)和現場可程式設計門陣列(FPGA,Field Programmable Gate Array)等幾種型別。其中,PLA、PAL 和 GAL 稱為低密度 PLD(一般在千門以下),EPLD、CPLD 和 FPGA 稱為高密度 PLD。(半定製)

  PLD 最初使用的程式設計單元為熔絲或反熔絲(採用熔絲工藝的器件不能改寫),後來改為 CMOS 工藝,於是程式設計單元也就變成了疊柵 MOS 管了。

  PLD 程式設計的開發系統主要由由硬體和軟體兩部分組成。

 

一、PLA  

  PLD 最早的產品是 PLA,它出現於 20 世紀 70 年代的後期。如 PLA 程式設計之後的基本電路結構如下所示:

  這裡,OE' = 0。此時:

    Y3 = ABCD +A'B'C'D'

    Y2 = AC + BD

    Y1 = A ⊕ B

    Y0

= C ⊙ D

  這裡,介紹一下 PLD 中閘電路的慣用畫法:

  以上為組合邏輯型 PLA,不包含觸發器,只能用於設計組合邏輯電路。另外,還有包含觸發器的用於設計時序邏輯電路的時序邏輯型 PLA。如下所示:

   總結 PLA:雖然今天已經很少使用 PLA 了,但是之後所出現的 PLD 器件的基本原理都源於 PLA,由 PLA 發展、演化而來的。此外, PLA 作為一種電路結構形式,也仍然可以用於積體電路內部的結構設計當中。

 

二、PAL

  PAL 器件由可程式設計的與邏輯陣列、固定的或邏輯陣列和輸出電路三部分組成。在尚未程式設計之前,與邏輯陣列的所有交叉點上均有熔絲接通。程式設計時將有用的熔絲保留,將無用的熔絲熔斷,即得到所需的電路。PAL 程式設計之後的基本電路結構如下所示:

  這裡:

 

三、GAL

  GAL 採用了電可擦除的 CMOS(E2CMOS)工藝製作,可以用電壓訊號擦除並可重新程式設計。(以上兩種無法改寫,以下四種都是可擦除重寫的)

  GAL 的基本結構仍為與 - 或陣列,不同的是,它的輸出端新增加了可程式設計的輸出邏輯巨集單元 OLMC(Output Logic Macro Cell),通過程式設計可以將 OLMC 設定成不同的工作狀態,所以具有較強的通用性。

 

四、EPLD

  EPLD 是從 GAL 演變而來的。EPLD 採用了 CMOS(低功耗、高噪聲容限)和 UVEPROM(可靠性高、可以改寫、整合度高、造價便宜)工藝製作。

 

五、CPLD

  CPLD 是從 EPLD 演變而來的。CPLD 大多采用了 E2CMOS 工藝製作。

 

六、FPGA

  FPGA 則獨具匠心,其採用了 CMOS - SRAM 工藝製作。(其整合度可達百萬門級)

  FPGA 由三種可程式設計單元和一個用於存放程式設計資料的靜態儲存器組成。這三種可程式設計單元分別是輸入/輸出模組(IOB,Input Output Block)、可程式設計邏輯模組(CLB,Configurable Logic Block)和互連資源(IR,Interconnect Resource)。而它們的工作狀態全部都由程式設計資料儲存器中的資料(位元流)設定。FPGA 基本電路結構框圖如下所示:

接下來,分別介紹一下:

1、IOB

  每個 IOB 由輸出三態緩衝器 G1、觸發器、輸入緩衝器 G2 和兩個資料選擇器 MUX1 和 MUX2 組成,而資料選擇器的輸入地址程式碼都存放在 FPGA 內部的程式設計資料儲存器中(所以地址輸入端不顯示)。IOB 的電路如下所示:

2、CLB

  每個 CLB 由組合邏輯電路、儲存電路和一些資料選擇器組成的內部控制電路組成。CLB 的電路如下所示:

3、IR

  為了能將 FPGA 中數目很大的 CLB 和 IOB 連結成各種複雜的數字系統,在佈線區內佈置了豐富的連線資源 IR。這些連線資源可以分為金屬線(Metal)、開關矩陣(SM,Switching Matrices)和可程式設計連線點(PIP,Programmable Interconnect Points)三類。IR 的佈局狀況如下所示:

  佈線區裡的金屬線分為水平通用連線、垂直通用連線、水平長線、垂直長線、全域性連線和直接連線等幾種。這些金屬線經可程式設計的連線點與 CLB、IOB 和開關矩陣相連。其中的通用連線主要用於 CLB 之間的連線,長線主要用於長距離或多分支訊號的傳送,全域性連線則用於輸送一些公共訊號(如公用的 RESET' 訊號),直接連線主要是用於減少傳輸延遲時間和簡化程式設計而不經過開關矩陣和通用連線而直接對訊號接收端的開關點程式設計。

  開關矩陣的作用如同一個可以實現多根導線轉接的接線盒,通過對開關矩陣程式設計,可以將來自任何方向上的一根導線轉接至其他方向的某一根導線上。開關矩陣在不同程式設計情況下的連線狀態、開關矩陣和可程式設計連線點的佈局狀況如下所示:

  除了 FPGA 以外的 PLD 器件,基本上都採用了與 - 或邏輯陣列加上輸出邏輯單元的結構形式。而 FPGA 則採用了完全不同的電路結構形式,它由若干獨立的可程式設計邏輯模組組成,每個邏輯單元都是可程式設計的,使用者可以通過程式設計將這些模組連線成所需要的數字系統。

  FPGA 的這種 CLB 陣列結構形式克服了 PAL 等 PLD 中那種固定的與-或邏輯陣列結構的侷限性,在組成一些複雜的、特殊的數字系統時顯得更加靈活。同時,由於加大了可程式設計 I/O 端的數目,也使得各引腳訊號的安排更加方便和合理。

  不過 FPGA 本身也存在著一些明顯的缺點。首先,它的訊號傳輸延遲時間不是確定的。在構成複雜的數字系統時一般總要將若干個 CLB 組合起來才能實現。而由於每個訊號的傳輸途徑各異,所以傳輸延遲時間也就不可能相等(CPLD 的傳輸延時時間是確定的)。這不僅會給設計工作帶來麻煩,而且也限制了器件的工作速度。在 CPLD 中就不存在這個問題。

  其次,由於 FPGA 中的程式設計資料儲存器是一個靜態隨機儲存器結構,所以斷電後資料便隨之丟失。因此,每次開始工作時都要重新裝載程式設計資料,並需要配備儲存程式設計資料的 EPROM。這些都給使用帶來一些不便。

  此外,FPGA 的程式設計資料一般是存放在 EPROM 中的,而且要讀出並送到 FPGA 的 SRAM 中,因而不便於保密。而 CPLD 中設有加密程式設計單元,加密後可以防止程式設計資料被讀出。

  可見,FPGA 和 CPLD 各有不能取代的優點,這也正是兩種器件目前都得到廣泛應用的原因所