tft每日頭條

 > 圖文

 > fpga的研究基礎

fpga的研究基礎

圖文 更新时间:2024-12-02 17:12:02

數字集成電路有兩種類型:ASIC和FPGA(現場可編程門陣列)。專用集成電路(ASIC)有一個預先定義的特定硬件功能,在生産後不能重新編程。但FPGA可以在制造後可無限編程。

fpga的研究基礎(深入淺出帶你了解FPGA架構)1

FPGA是一種集成電路,一種可編程芯片,它允許工程師對定制的數字邏輯進行編程,可以根據程序改變其硬件邏輯。主要目的是允許工程師重新設計和重新配置他們的芯片更快,更便宜,隻要他們想要,然而世界上沒有什麼理想的,FPGA芯片也有局限性!

FPGA最早出現于20世紀80年代,其最初的應用是允許工程師擁有通用可編程邏輯芯片。然而,這需要大量的編程才能執行簡單的功能,所以工程師們盡量避免使用這些功能。但是,雖然在1980年的FPGA是一個簡單的接口設備,主要針對難以用于設計複雜系統的膠水邏輯,但它成為了一個系統級集成電路,具有自己的内存塊、微處理器和接口,允許設計重要的系統。

基本特點

1) 采用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生産,就能得到合用的芯片。

2) FPGA可做其它全定制或半定制ASIC電路的中試樣片。

3) FPGA内部有豐富的觸發器和I/O引腳。

4) FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。

5) FPGA采用高速CMOS工藝,功耗低,可以與CMOS、TTL電平兼容。

6)使工程師能夠精确地構建所需硬件,而不必使用标準集成電路,或花費與ASIC設計相關的時間、成本和風險。

7)與微處理器或微控制器相比,它們以更快、更節能和更簡單的方式進行操作。

8)FPGA功能可以像任何其他軟件代碼一樣更新,即使硬件已經離開了生産點。這可以幫助修複bug或添加新特性。

fpga的研究基礎(深入淺出帶你了解FPGA架構)2

可以說,FPGA芯片是提高系統集成度、可靠性的最佳選擇之一。FPGA是由存放在片内RAM中的程序來設置其工作狀态,因此,工作時需要對片内RAM進行編程。用戶可以根據不同的配置模式,采用不同的編程方式。加電時,FPGA芯片将EPROM中數據讀入片内編程RAM中,配置完成後,FPGA進入工作狀态。掉電後,FPGA恢複成白片,内部邏輯關系消失,因此,FPGA能夠反複使用。FPGA的編程無須專用的FPGA編程器,隻須用通用的EPROM、PROM編程器即可。當需要修改FPGA功能時,隻需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以産生不同的電路功能。因此,FPGA的使用非常靈活。

CPLD和FPGA

CPLD是複雜可編程邏輯器件,也是一種制造後可重新編程的器件。在這個意義上,它們類似于FPGA。然而,也有顯著的差異。FPGA由多個邏輯單元組成,而CPLD由較少的邏輯單元組成。由于它們的尺寸,CPLD通常更便宜和更快。然而,CPLD的功能非常有限,它們不能用于構建複雜的系統,它們通常用于簡單的設計,如膠合邏輯[1]。

fpga的研究基礎(深入淺出帶你了解FPGA架構)3

各個廠家叫法不盡相同。PLD(Programmable Logic Device)是可編程邏輯器件的總稱,早期多EEPROM工藝,基于乘積項結構。FPGA最早由Xilinx公司發明。多為SRAM 工藝,基于查找表(Look Up Table)結構,要外挂配置用的EPROM。Xilinx把SRAM工藝,要外挂配置用的EPROM的PLD叫FPGA,把Flash工藝(類似EEPROM工藝),乘積項結構的PLD叫CPLD;Altera把自己的PLD産品:MAX系列(EEPROM工藝),FLEX/ACEX/APEX系列(SRAM工藝)都叫作CPLD,即複雜PLD(Complex PLD)。

fpga的研究基礎(深入淺出帶你了解FPGA架構)4

FPGA的應用

目前FPGA的應用有很多。當我們在生産過程中不确定我們的需求,或者需求會随着時間而改變。FPGA是最快、最便宜的原型制作方法之一,但它并不局限于此。它被用于不同的目的:從靈活的設計和機器學習訓練到快速交易和加密挖掘。服務器應用是FPGA設備最新的案例。

fpga的研究基礎(深入淺出帶你了解FPGA架構)5

然而,它們也有缺點:

硬件成本

速度要求

FPGA的架構

FPGA由構建塊組成,這些構建塊就像可以用來構建系統的樂高積木。它有一個基本的邏輯構建塊稱為邏輯單元(CLB),但也可以包含更大的其他塊,如PLL、接口、内存等。單個FPGA芯片将擁有數十萬個邏輯單元。除了CLB,芯片還有輸出輸入模塊IOB(Input Output Block)和内部連線(Interconnect)。

fpga的研究基礎(深入淺出帶你了解FPGA架構)6

我們有一個查找表(LUT)作為FPGA邏輯塊的核心。本質上就是一個RAM。它把數據事先寫入RAM後,每當輸入一個信号就等于輸入一個地址進行查表,找出地址對應的内容,然後輸出。構建塊的輸出是多路複用的。多路複用器的一個輸入是LUT的直接輸出,用于純組合邏輯,如NAND, NOR, XOR或其他邏輯門。多路複用器的另一個輸入是經過d型觸發器并與時鐘同步存儲的LUT的注冊輸出。

一個邏輯單元本身是一個簡單的電路,不能做太多的事情,但當有很多邏輯單元時,我們可以實現任何我們想要的功能。為了做到這一點,邏輯單元被連接到一個陣列的其他邏輯單元。

fpga的研究基礎(深入淺出帶你了解FPGA架構)7

CLB塊之間的橙色矩形是可編程開關,它可以将邏輯單元的輸出路由到任何地方。這是一個非常簡單的圖表;事實上,比這裡顯示的更多的電線和互連線。

注意攜帶和攜帶引腳。每個加法器隻有一位寬,而使用進位/進位引腳,可以非常快速和有效地創建大的加法器和計數器。擁有快速、專用的攜帶鍊是FPGA相對于其他可編程邏輯器件(如CPLD)的最大優勢之一。

在FPGA中,時鐘可以實現所有觸發器,因為沒有時鐘的數字設計幾乎不可想象。FPGA有非常高級的時鐘資源,包括内置的可配置PLL(鎖相環)和DLL(延遲鎖環)。由于幾乎所有的現代數字設計都需要多個具有不同頻率和相位延遲的時鐘,因此時鐘管理非常重要。

FPGA也有用于讀取和輸出數據的輸入輸出塊。除了标準的I/O塊,大多數FPGA有以下I/O特性:

觸發器輸出同步I/O

微分信号

雙數據速率(DDR)

序列化器和反序列化器(SERDES)

上拉、下拉和三态I/O

回轉速度可調,驅動強度可調

就像内存中内置的RAM塊一樣,分布式RAM可以在100Kb和100Mb之間變化。最新一代的FPGA設備也有DSP乘法器片,主要用于DSP應用(數字信号處理)。大多數FPGA有其他内置塊:

ADC和DAC

外部存儲器控制器,如DRAM, DDR, DDR2。

串行總線控制器

以太網MAC

專用的先進先出[2]

高速收發器

這些塊在FPGA設備上設計為“硬塊”,而不是在制造過程後由邏輯塊和開關構建,因為它們通常是所有複雜系統都需要的。因為它們存在于所有的系統中,并且使用得非常頻繁,所以我們希望它們能夠存在以節省時間(總使用clb和開關從頭開始設計它們沒有意義,相反我們将它們設計為單獨的可配置塊,以便設計師能夠更改它們的參數),但更重要的是,我們希望它們具有非常好的特性,非常高效地工作并占用更少的空間。此外,這些模塊中有一些模拟部件需要手工設計,不能僅通過數字單元來構建。

如何對FPGA進行編程和配置

為了配置FPGA,我們需要對它進行編程。我們可以使用Verilog、System Verilog和VHDL等FPGA硬件描述語言進行編程。這些語言有一些區别,這裡便不再贅述。使用FPGA定義硬件的工作流程如下:

fpga的研究基礎(深入淺出帶你了解FPGA架構)8

每個步驟都需要一些工具集。大多數FPGA制造商都提供了具備所有所需工具的編程環境。

高手玩家

FPGA市場前景誘人,但是門檻之高在芯片行業裡無出其右。全球有60多家公司先後斥資數十億美元,前赴後繼地嘗試登頂FPGA高地,其中不乏英特爾、IBM、德州儀器、摩托羅拉、飛利浦、東芝、三星這樣的行業巨鳄,但是最終登頂成功的隻有位于美國矽谷的四家公司:Xilinx(賽靈思)、Altera、Lattice(萊迪思)、Microsemi,其中,Xilinx與Altera這兩家公司共占有近90%的市場份額,專利達到6000餘項之多,如此之多的技術專利構成的技術壁壘高不可攀。

fpga的研究基礎(深入淺出帶你了解FPGA架構)9

Xilinx

Xilinx公司成立于 1984年,Xilinx首創了現場可編程邏輯陣列(FPGA)這一創新性的技術,并于1985年首次推出商業化産品,是全球領先的可編程邏輯完整解決方案的供應商,也是目前排名第一的FPGA解決方案提供商。

fpga的研究基礎(深入淺出帶你了解FPGA架構)10

産品系列包括:

Spartan系列:定位于低端市場,目前最新器件為采用28nm工藝的Spartan7;

Artix系列:定位于低端Spartan和高端Kintex之間的中端市場,目前在售的主流産品為采用28nm工藝的Artix-7;

Kintex系列:定位于高端市場,包含有28nm工藝的Kintex7系列,20nm的Kintex7 Ultrascale系列,還有16nm的Kintex7 Ultrascale 系列;

Virtex系列:定位于高端市場,包含有采用28nm工藝的Virtex7系列,20nm的Virtex7 Ultrascale系列,還有16nm的Virtex7 Ultrascale 系列;

全可編程 SoC 和 MPSoC系列:包括有Zynq-7000和Zynq UltraScale MPSoC系列FPGA、内嵌有ARM Cortex系列CPU;

AI Engine系列:Versal ACAP、Alveo系列等。

Intel(Altera)

與Xilinx齊名的FPGA供應商,2015年被CPU屆的大佬Intel收購。

産品系列包括:

MAXII系列:實質上是CPLD;

Cyclone系列:定位于中低端市場,類似于Xilinx 公司的Spartan系列和Artix系列,最新産品為Cyclone10。

Stratix系列:定位于高端市場,與Xilinx的Kintex、Virtex系列競争,最新産品為Stratix10;

Arria系列:SOC系列FPGA, 内置ARM Cotex A9的核;

Intel Arria 10系列:支持DDR4存儲器接口的FPGA,硬件設計人員可以使用Quartus II 軟件v14.1,在Arria 10 FPGA和SoC設計中實現666 Mbps DDR4存儲器數據速率;

Agilex系列:面向數據中心等高端市場,采用10nm工藝,異構 3D 系統級封裝 (SiP) 技術的一款FPGA産品。

Microchip(Microsemi)

Microsemi并購了Actel,專注于美國軍工和航空領域,産品為反熔絲結構FPGA和基于Flash的FPGA為主,具有抗輻照和可靠性高的優勢,Microsemi又被Microchip(微芯)并購。

産品系列包括:

基于FLASH的通用FPGA系列:包括PolarFire Mid-Range FPGAs、RTG4 Radiation-Tolerant FPGAs、IGLOO2 Low-DensityFPGAs三個高、中、低端系列。

Lattice

CPLD的發明者,著名的可編程邏輯解決方案供應商,僅次于Xilinx和Altera。

産品系列包括:

ECP系列:為Lattice自己的開發的FPGA系列,提供低成本,高密度的FPGA解決方案,而且還有高速Serdes等接口,适用于民品解決方案居多;

ICE系列:為收購SilioncBlue的超低功耗FPGA,曾用在iPhone7裡面,實現了FPGA首次在消費類産品中應用;

Mach系列:替代CPLD,實現粘合邏輯的最佳選擇。

QuickLogic Corp

QuickLogicCorporation 誕生于1988年,是一家超低功耗嵌入式現場可編程門陣列 (eFPGA) IP、多核語音識别 SoC、顯示器橋接和可編程序邏輯解決方案開發公司。

eFPGA産品系列包括:采用65nm和40nm工藝的ArcticPro系列和采用GF-22工藝的ArcticPro 2 eFPGA。

Achronix

Achronix 作為後起之秀,早期推出了eFPGA IP,但是限于IP産品的變現速度太慢,随後推出了FPGA芯片,今年5月發布的新品叫Speedater7t。

EFINIX

EFINIX可以說是後起之秀,它改變了傳統FPGA的設計理念:

eXchangeable Logic and Routing (XLR) cell

fpga的研究基礎(深入淺出帶你了解FPGA架構)11

我們将邏輯資源比作一個城市。随着城市的擴大,就必須建立更寬的道路,道路間要建立不少的立交,而且這些立交的層次都可能很複雜,還需要更多的交通燈,以及匝道來彙聚和分開車流。這些實際上和一塊FPGA的結構非常類似,你可以自然聯想到,芯片規模越大,就隻有兩個辦法來完成邏輯之間的互聯互通。要不就是把走線的資源增加很多層,要不就是把芯片做到更大的面積來增加布線。甚至兩個方面都要加強。

傳統的FPGA中的運算單元LE(Logic Element)和互連資源Routing Switch在功能上各司其職,而數量和位置都是固定的。因此,如果你的設計中有很多Logic,那麼很可能片上的LE不夠用,而互連資源會有很多富裕;而如果你的設計中需要很多的連線,比如複雜的總線,大量的Mux,那麼很可能互連資源成為瓶頸。

Efinix的想法就是設計一種新的Cell,XLR,它既可以作為運算資源,又可以作為互連資源。

國内主要玩家

fpga的研究基礎(深入淺出帶你了解FPGA架構)12


[1] gule logic的中文含意是“膠合邏輯”,它是連接複雜邏輯電路的簡單邏輯電路的統稱。例如,一個ASIC芯片可能包含許多諸如微處理器、存儲器功能塊或者通信功能塊之類的功能單元,這些功能單元之間通過較少的粘合邏輯連接起來。在印制闆(PCB)層,粘合邏輯可以使用具有較少邏輯門的“粘合芯片”實現,例如PAL、GAL、CPLD等。

[2] 先進先出(FIFO,first-in,first-out)為處理從隊列或堆棧發出的程序工作要求的一種方法,它使最早的要求被最先處理。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved