以下文章來源于OpenFPGA,作者碎碎思
FPGA 允許在單個芯片中實現(xiàn)大量數(shù)字邏輯,其運行速度相對較高,并且只需很少或不需要在 CPU 內(nèi)核上運行的傳統(tǒng)順序程序即可完成其工作。
這種數(shù)字邏輯可以實現(xiàn)任何東西,從簡單的UART到由數(shù)十個CPU內(nèi)核組成的架構,每個CPU內(nèi)核都運行自己的小程序,并在共享任務上相互通信?;蛘?,它可以是幾組不同的邏輯在處理完全獨立的任務,這些任務彼此之間可以沒有關系。
1、數(shù)字邏輯實現(xiàn)
基本上,F(xiàn)PGA 允許放置下圖中所有這些較小的黑色芯片:
只需 1 個芯片,就可以立即使用新設計以任何想要的方式重新連接所有這些芯片。誠然,設計過程是......比較困難!
FPGA 擅長同時執(zhí)行多項任務,可以將該功能實現(xiàn)為單獨的數(shù)字邏輯,從最簡單的組合邏輯一直到復雜的 CPU 處理器。除了邏輯元件的數(shù)量和它們之間的互連之外,幾乎沒有什么限制。
2、高速率高帶寬數(shù)據(jù)處理
一個典型的例子:
看到頂部和底部有多達 32 個 LVDS 串行輸出。
LVDS信號是串行數(shù)據(jù)的一對差分線(用于獲得高速和抗噪性)。圖像數(shù)據(jù)將從每個LVDS對中輸出。
這種高速串行輸出數(shù)據(jù)的原因是為了讓整個圖像盡快從傳感器中取出,并進入后續(xù)處理階段(可能在FPGA中)。完成此操作的速度越快,幀速率就越高。如果想要一個能夠達到 120fps 幀速率的運動相機,那么就需要將整個幀數(shù)據(jù)輸出 - 在以 18 位分辨率模式運行時,此傳感器為單幀數(shù)據(jù)量為 12 MB - 每秒 120 幀,超過 2 GBytes/s 的數(shù)據(jù)量!
實現(xiàn)這一目標的一種方法是使用大量LVDS輸出,并將每個輸出分配給幀的特定部分。這基本上是“分而治之”。
問題在于,接收數(shù)據(jù)后需要重組這些LVDS數(shù)據(jù),組成一個圖像傳感器的一幀數(shù)據(jù)。唯一可行的方法是在硬件中實現(xiàn),因為:(a)沒有微控制器/處理器具有那么多串行LVDS,(b)即使有,處理負擔也會很大,并且可能永遠無法達到所需的幀速率。
這只是使用FPGA的一個“經(jīng)典”示例,它將來自每個LVDS輸入的所有數(shù)據(jù)重新組合到圖像的單個相干幀中。然而,它并沒有就此結束。后續(xù)的ISP處理等操作都可以在同一個FPGA中進行。
3、保證時間精確控制
FPGA的另一個重要用途:在需要“保證”響應的情況下,或者需要確定地滿足“硬”時序約束。實時控制系統(tǒng)的挑戰(zhàn)之一是保證實際上能夠滿足這些時間限制。
在大多數(shù)通過微處理器/微控制器上的順序編程實現(xiàn)的非平凡的控制系統(tǒng)中,有時主要“應用程序”會被中斷,要么是切換到其他輔助任務,要么是處理 I/O 中斷,尤其是需要大量計算資源且自身具有時序限制的現(xiàn)代通信協(xié)議。由于所有這些其他任務和職責都在爭奪 CPU 時間,嵌入式系統(tǒng)開發(fā)人員已經(jīng)提出了幾種技術來應對這些挑戰(zhàn),但是順序編程系統(tǒng)可以實現(xiàn)的功能是有限的。
FPGA 是專用電路、狀態(tài)機以及控制和數(shù)據(jù)流“編程”的絕佳解決方案,精度低至納秒級,幾乎沒有系統(tǒng)“錯過”事件或不符合設計時序約束的風險。
一個常見示例是通過多相電機或橋式整流器進行相位控制或PWM控制,或使用H橋晶體管驅動器配置時進行的。
在這些場景中,不僅可以以數(shù)十kHz甚至高達MHz的速度開關電源,而且還可能根據(jù)其他控制信號調制PWM - 可能是一組3個正弦波,用于三相對準,在這種情況下,需要相對PWM時序的精細分辨率。
在FPGA中實現(xiàn)這種控制可以滿足非常精細的時序約束。
4、其他
FPGA 還有無數(shù)其他用途。
就在我常用的一種工具-Saleae邏輯分析儀:
Xilinx Spartan 6 FPGA 執(zhí)行所有高速工作,捕獲其數(shù)字輸入的時間序列狀態(tài),然后通過 USB 將其發(fā)送到PC。通過在 PC 上的分析來查找自己的數(shù)字電路設計中的錯誤。
數(shù)據(jù)中心:
在過去的幾年里,微軟、亞馬遜和谷歌在云服務器基礎設施中使用FPGA引起了很多關注,其中每個服務器都有一個FPGA,允許一些傳統(tǒng)上通過線性編程完成的計算任務,在專用的定制FPGA數(shù)字邏輯中完成。
這使得服務器可以相對快速且輕松地重新配置,以便針對在其上運行的特定應用程序進行優(yōu)化。這些應用程序可以是加密計算,或是OpenCV視覺算法,或是AI/ML推理,或是復雜的網(wǎng)絡數(shù)據(jù)包過濾,或者其他我們不知道的操作!
IC設計:
最后,F(xiàn)PGA 通常被用作原型設計的一種方式,該設計最終將被“鎖定”到自己的IC芯片設計中。
本文轉載自OpenFPGA公眾號
-
處理器
+關注
關注
68文章
20066瀏覽量
242573 -
FPGA
+關注
關注
1650文章
22204瀏覽量
626667 -
芯片
+關注
關注
462文章
53166瀏覽量
453429 -
內(nèi)核
+關注
關注
4文章
1427瀏覽量
42207 -
cpu
+關注
關注
68文章
11186瀏覽量
221178
原文標題:FPGA可以解決哪些問題?
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
淺析Altera公司Stratix V FPGA芯片
FPGA/CPLD同步設計若干問題淺析
微波暗室的主要用途
GPS的主要用途有哪些?
液晶拼接屏主要用途有哪些
寬帶固定衰減器的主要用途和指標
液晶拼接屏主要用途有哪些

施密特觸發(fā)器的主要用途有哪些
Jtti:Windows服務器在企業(yè)環(huán)境中的主要用途和應用場景是什么?
頂堅單北斗井下防爆手機的重要用途

評論