FPGA基本工作原理

2021-04-21 22:58:52 字數 1477 閱讀 5542

fpga是在pal、gal、epld、cpld等可程式設計器件的基礎上進一步發展的產物。它是作為asic領域中的一種半定製電路而出現的,即解決了定製電路的不足,又克服了原有可程式設計器件閘電路有限的缺點。

由於fpga需要被反覆燒寫,它實現組合邏輯的基本結構不可能像asic那樣通過固定的與非門來完成,而只能採用一種易於反覆配置的結構。查詢表可以很好地滿足這一要求,目前主流fpga都採用了基於sram工藝的查詢表結構,也有一些軍品和宇航級fpga採用flash或者熔絲與反熔絲工藝的查詢表結構。通過燒寫檔案改變查詢表內容的方法來實現對fpga的重複配置。

根據數位電路的基本知識可以知道,對於乙個

n輸入的邏輯運算,不管是與或非運算還是異或運算等等,最多隻可能存在

2n種結果。所以如果事先將相應的結果存放於乙個存貯單元,就相當於實現了與非門電路的功能。fpga的原理也是如此,它通過燒寫檔案去配置查詢表的內容,從而在相同的電路情況下實現了不同的邏輯功能。

查詢表(look-up-table)

簡稱為lut,lut本質上就是乙個ram。目前fpga中多使用4輸入的lut,所以每乙個lut可以看成乙個有4位位址線的的ram。當使用者通過原理圖或hdl語言描述了乙個邏輯電路以後,pld/fpga開發軟體會自動計算邏輯電路的所有可能結果,並把真值表(即結果)事先寫入ram,這樣,每輸入乙個訊號進行邏輯運算就等於輸入乙個位址進行查表,找出位址對應的內容,然後輸出即可。

下面給出乙個

四輸入與非門

電路的例子來說明lut實現邏輯功能的原理。

表給出乙個使用lut實現

四輸入與閘電路的真值表。

表  輸入與門的真值表

從中可以看到,lut具有和邏輯電路相同的功能。實際上,lut具有更快的執行速度和更大的規模。

我們還是以這個電路的為例:

圖  四

輸入與閘電路

圖a,b,c,d由fpga晶元的管腳輸入後進入可程式設計連線,然後作為位址線連到到lut,lut中已經事先寫入了所有可能的邏輯結果,通過位址查詢到相應的資料然後輸出,這樣組合邏輯就實現了。該電路中d觸發器是直接利用lut後面d觸發器來實現。時鐘訊號clk由i/o腳輸入後進入晶元內部的時鐘專用通道,直接連線到觸發器的時鐘端。觸發器的輸出與i/o腳相連,把結果輸出到晶元管腳。這樣pld就完成了圖

所示電路的功能。(以上這些步驟都是由軟體自動完成的,不需要人為干預)

這個電路是乙個很簡單的例子,只需要乙個lut加上乙個觸發器就可以完成。對於乙個lut無法完成的的電路,就需要通過進製邏輯將多個單元相連,這樣fpga就可以實現複雜的邏輯。

因為基於lut的fpga具有很高的整合度,其器件密度從數萬門到數千萬門不等,可以完成極其複雜的時序與邏輯組合邏輯電路功能,所以適用於高速、高密度的高階數字邏輯電路設計領域。其組成部分主要有可程式設計輸入/輸出單元、基本可程式設計邏輯單元、內嵌sram、豐富的佈線資源、底層嵌入功能單元、內嵌專用單元等,主要設計和生產廠家有xilinx、altera、lattice、actel、atmel和quicklogic等公司,其中最大的是xilinx、altera、lattice三家。

FPGA結構及工作原理

現場可程式設計門陣列 field programmable gate array 是基於查詢表 look up table,lut 結構的,由於lut主要適合於sram工藝生產,所以大部分fpga都是基於sram工藝的。fpga的基本結構是由可配置邏輯塊 clb,configurable logic...

Shell 基本工作原理

shell 基本工作原理 shell 基本工作原理 linux系統提供給使用者的最重要的系統程式是shell命令語言解釋程式。它不屬於核心部分,而是在核心之外,以使用者態方式執行。其基本功能是解釋並執行使用者打入的各種命令,實現使用者與linux核心的介面。系統初啟後,核心為每個終端使用者建立乙個程...

Shell 基本工作原理

shell 基本工作原理 linux系統提供給使用者的最重要的系統程式是shell命令語言解釋程式。它不屬於核心部分,而是在核心之外,以使用者態方式執行。其基本功能是解釋並執行使用者打入的各種命令,實現使用者與linux核心的介面。系統初啟後,核心為每個終端使用者建立乙個程序去執行shell解釋程式...