自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

聊聊入門FPGA及其架構

開發(fā) 架構
FPGA使您可以編程產(chǎn)品功能,適應新標準,并在產(chǎn)品安裝在現(xiàn)場后針對特定應用重新配置硬件——因此稱為“現(xiàn)場可編程”。而“門陣列”指的是其架構中存在的二維邏輯門陣列。

1 引言

之前大多數(shù)軟件都是與它們各自的硬件一起發(fā)布,沒有辦法對其進行更改。但隨著技術的成熟,制造商找到了在現(xiàn)有硬件上更新軟件以增加附加功能的方法。

現(xiàn)在,想象一下未來硬件更新也成為可能——不是很有趣嗎?

那么,這種可編程硬件,其子系統(tǒng)配置甚至在制造后也可以修改,屬于可重構系統(tǒng)的范疇。而支持可重構計算的最主要的集成電路是FPGA,即可編程門陣列的縮寫。

FPGA使您可以編程產(chǎn)品功能,適應新標準,并在產(chǎn)品安裝在現(xiàn)場后針對特定應用重新配置硬件——因此稱為“現(xiàn)場可編程”。而“門陣列”指的是其架構中存在的二維邏輯門陣列。

所有現(xiàn)代個人計算機,包括臺式機、筆記本、智能手機和平板電腦,都是通用計算機的例子。通用計算采用“馮·諾依曼”方法,即指令獲取和數(shù)據(jù)操作不能同時發(fā)生。因此,它們是順序機器,其性能也受到限制。

另一方面,我們有應用特定集成電路(ASIC),這些電路是為特定任務定制的,例如數(shù)字語音記錄器或高效的比特幣礦工。ASIC使用空間方法來實現(xiàn)只實現(xiàn)一個特定應用程序,并將電路中的元件針對該應用程序進行了高度優(yōu)化,提供了最大的性能。但是由于ASIC的電路結構非常專門化,它只能用于執(zhí)行被設計的特定任務,不能用于其他任務。

圖片

那么,為了獲得ASIC的高性能,是否需要犧牲通用處理器的靈活性呢?

實際上FPGA處于這兩種架構范式之間,具有一定的靈活性和可重構性!

雖然FPGA具有可重新編程和相對較低的NRE(非重復性工程)成本等優(yōu)勢,但與ASIC相比,F(xiàn)PGA的能源效率較低(指在完成特定計算任務時所消耗的能量與計算任務完成的速度之比),且不適用于大規(guī)模生產(chǎn)。

因此,ASIC和FPGA具有不同的優(yōu)勢和價值主張。通常,大多數(shù)設備制造商會使用FPGA進行原型設計,因為它們可以快速迭代和測試不同的設計,且具有一定的靈活性。而在確定了最終的設計之后,制造商通常會使用ASIC進行大規(guī)模生產(chǎn),以獲得更高的性能和更低的成本。

圖片

過去,F(xiàn)PGA通常被用于較低速度和復雜設計,因為FPGA的電路結構相對復雜處理速度相對較低;且其可編程性和靈活性使FPGA更適用于那些需要實現(xiàn)較為復雜設計的場合。但是現(xiàn)在隨著FPGA技術的不斷發(fā)展和改進,F(xiàn)PGA已經(jīng)能夠實現(xiàn)更高的處理速度和更優(yōu)化的電路結構。目前,F(xiàn)PGA已經(jīng)可以輕松地實現(xiàn)超過500MHz的處理性能基準。

2 FPGA的內(nèi)部架構

1985年,一家名為Xilinx的半導體制造公司發(fā)明了第一個商業(yè)化的FPGA芯片XC2064。另一家在2015年被英特爾收購的公司Altera也推動了市場的發(fā)展,并與Xilinx一起推動了FPGA技術的發(fā)展。

FPGA起源于相對較簡單的技術,如可編程只讀存儲器(PROM)和可編程邏輯器件(PLD),如PAL、PLA或復雜PLD(CPLD)。

FPGA由三個主要部分組成:

  • 可配置邏輯塊 - 實現(xiàn)邏輯功能。
  • 可編程互聯(lián) - 實現(xiàn)路由功能。
  • 可編程輸入/輸出塊 - 與外部元件連接。

圖片

邏輯塊實現(xiàn)設計所需的邏輯功能,由各種組件組成,例如晶體管對、查找表(LUT)、觸發(fā)器和多路復用器。

您可以將邏輯塊視為單獨的模塊,就像樂高積木一樣,并且可以并行操作。但與樂高積木不同的是,邏輯塊是可配置的,即其內(nèi)部狀態(tài)可以進行控制,并且可以通過編程互聯(lián)將它們連接在一起以構建有意義的東西。

可編程互聯(lián)的層次結構用于在可配置邏輯塊(CLB)之間分配資源;其中路由路徑包含可通過反熔絲或基于存儲器的技術連接的具有不同長度的電線段。

每個CLB都與交換矩陣相結合,以訪問通用路由結構。交換矩陣提供可編程的多路復用器,用于選擇給定路由通道中的信號,并因此連接垂直和水平線。

最后,輸入/輸出塊(IOB)用于將CLB和路由架構與外部元件接口。

在早期的FPGA芯片中,沒有處理器來運行任何軟件,實現(xiàn)應用程序意味著從頭設計電路。因此,我們可以將FPGA配置得像OR門一樣簡單,也可以像多核處理器一樣復雜。

但是自XC2064以來,F(xiàn)PGA的基本架構已經(jīng)通過添加更多專門的可編程功能塊(如ALU、塊RAM、多路復用器、DSP-48和微處理器)而得到發(fā)展。

3 FPGA設計流程

設計流程描述了在物理板上實現(xiàn)和編程任何給定邏輯的流程。于該流程與軟件開發(fā)生命周期(SDLC)類比,我將其稱為 FPGA 開發(fā)生命周期(FDLC)。

FPGA架構設計流程包括設計輸入、邏輯綜合、設計實現(xiàn)、設備編程和設計驗證等步驟。然而,具體步驟因制造商而異。

圖片

4 設計輸入

邏輯的描述可以使用原理圖編輯器、有限狀態(tài)機(FSM)編輯器或硬件描述語言(HDL)來制作。這是通過從給定庫中選擇組件并將設計函數(shù)直接映射到所選的計算塊來完成的。

當設計具有大量功能時,圖形化管理變得困難,此時可以使用HDL以結構化或行為方式捕捉設計。除了已經(jīng)成為最常用的HDL語言之一的VHDL和Verilog之外,還有一些類似于C語言的HDL語言可供選擇,如Handel-C、Impulse C和SystemC等。

使用HDL進行設計描述,可以更直觀地表達設計的結構和行為,并方便設計的復用和修改。同時,HDL還可以進行仿真驗證,確保設計的正確性和可靠性。因此,HDL在FPGA設計中具有廣泛的應用價值。

5 邏輯綜合

這個過程將上述VHDL代碼翻譯成設備網(wǎng)表格式,以描述具有邏輯元素的完整電路。綜合過程涉及檢查代碼語法和分析設計體系結構的層次結構。接下來是將代碼與優(yōu)化一起編譯,并將生成的網(wǎng)表保存為.ngc文件。

6 設計實現(xiàn)

設計實現(xiàn)過程包括以下步驟:

圖片

  • 翻譯:合并所有輸入網(wǎng)表到邏輯設計文件中,生成 .ngd 文件。用戶約束文件為端口指定物理元素。

圖片

  • 映射:將.ngd文件中定義的邏輯映射到FPGA器件的組件上,并生成 .ncd 文件。

圖片

  • 布局布線:按照約束條件,將上述過程中的子塊放置到邏輯塊中,然后連接這些塊。

7 設備編程

將上述路由好的設計加載并轉換為FPGA支持的格式。將路由好的.ncd文件傳遞給BitGen程序,生成一個包含所有FPGA編程信息的比特流文件。

8 設計驗證

這個過程是與設計流程一起完成的,以確保邏輯行為符合預期。這個過程涉及以下仿真:

  • 行為仿真(RTL仿真)
  • 功能仿真
  • 靜態(tài)時序仿真

通過為設計提供各種輸入測試模式,并觀察輸出,這些仿真可以模擬設計的行為,從而驗證其正確性和可靠性。設計驗證過程是確保設計質量的關鍵步驟,可以在設計實現(xiàn)之前或之后進行。

9 FPGA的未來

產(chǎn)業(yè)趨勢將FPGA推向在異構計算范例中越來越重要的作用。這里的異構計算是指使用多種類型的處理器來執(zhí)行各自的專門處理能力的系統(tǒng)。而所有這些不同的處理器,包括FPGA,都可以通過OpenCL進行編程——這是一個行業(yè)標準的開發(fā)平臺。

FPGA提供了成本效益的并行計算能力,適用于快速原型制作。在測試神經(jīng)網(wǎng)絡時,F(xiàn)PGA有時也能夠超越GPU。雖然GPU對于訓練來說可能很好,但當涉及實時應用時,F(xiàn)PGA更加適應。微軟已經(jīng)在通過Microsoft Azure云服務加速AI時使用了英特爾Stratix FPGA。

責任編輯:武曉燕 來源: Java學研大本營
相關推薦

2020-12-22 06:05:43

Mbedtls應用基礎

2021-05-07 08:02:53

Sentinel 流量服務

2021-04-28 21:19:48

FPGA設計流程

2021-09-01 22:58:22

Canvas標簽

2022-01-10 11:28:55

數(shù)據(jù)結構算法DP入門

2019-06-11 13:22:32

Lambda大數(shù)據(jù)架構大數(shù)據(jù)平臺

2022-01-04 11:31:15

不同路徑DP

2022-06-14 11:01:37

架構模式開發(fā)

2024-08-18 14:09:24

2021-05-10 08:58:09

Harbor架構Registry 服務

2024-06-05 12:03:43

微服務架構場景

2021-01-28 17:26:57

LoRa網(wǎng)絡架構網(wǎng)絡技術

2024-09-26 07:29:19

2022-11-02 08:31:53

BFF架構App

2016-05-17 10:26:51

2020-05-06 22:07:53

UbuntuLinux操作系統(tǒng)

2017-12-20 16:15:30

分布式系統(tǒng)架構

2024-10-08 10:11:57

2024-04-17 08:03:45

架構設計Java

2024-04-26 08:28:08

高可用存儲架構
點贊
收藏

51CTO技術棧公眾號