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