來源:Digi-Key 作者:Adam Taylor 編者按:全新的 FPGA 架構(gòu)方法帶來了更精細(xì)的控制和更大的靈活性,以滿足機器學(xué)習(xí) (ML) 和人工智能 (AI) 的需求。本系列文章包括兩部分,第 1 部分介紹了 Efinix 一款此類架構(gòu)的產(chǎn)品,以及如何借助開發(fā)板開始使用該產(chǎn)品。本文是第 2 部分,討論了開發(fā)板與外部器件和外設(shè)(如攝像頭)的連接,以及如何利用 FPGA 消除圖像處理的瓶頸。 從工業(yè)控制和安全到機器人、航空航天和汽車,F(xiàn)PGA 在許多應(yīng)用中扮演著重要角色。憑借可編程邏輯內(nèi)核的靈活性及其廣泛的接口能力,F(xiàn)PGA 在可以部署機器學(xué)習(xí) (ML) 的影像處理中的應(yīng)用日漸廣泛。由于其并行邏輯結(jié)構(gòu),F(xiàn)PGA 非常適合用來實現(xiàn)具有多個高速攝像頭接口的解決方案。此外,F(xiàn)PGA 還能在邏輯中使用專門的處理管道,從而消除與基于 CPU 或 GPU 的解決方案相關(guān)的共享資源瓶頸。 本文將再次介紹 Efinix 的 Titanium FPGA,并探討該 FPGA 的 Ti180 M484 開發(fā)板附帶的參考圖像處理應(yīng)用。其目的是了解設(shè)計的構(gòu)成部分,并明確 FPGA 技術(shù)能夠消除哪些方面的瓶頸或為開發(fā)人員帶來其他好處。 基于 Ti180 M484 的參考設(shè)計 從概念上看,該參考設(shè)計(圖 1)接收來自幾個移動行業(yè)處理器接口 (MIPI) 攝像頭的圖像,在 LPDDR4x 中執(zhí)行幀緩沖,然后將圖像輸出到高清多媒體接口 (HDMI) 顯示器。利用一個 FPGA 夾層卡 (FMC) 和開發(fā)板上的四個 Samtec QSE 接口提供攝像頭輸入和 HDMI 輸出。 圖 1:從概念上看,Ti180 M484 參考設(shè)計接收來自幾個 MIPI 攝像頭的圖像,在 LPDDR4x 中執(zhí)行幀緩沖,然后將圖像輸出到 HDMI 顯示器。>(圖片來源:Efinix) FMC 轉(zhuǎn) QSE 擴展卡與 HDMI 子卡配合使用,提供輸出視頻路徑,而 3 個 QSE 連接器用于與 DFRobot SEN0494 MIPI 攝像頭連接。如果沒有多個 MIPI 攝像頭,可以使用單個攝像頭,通過回環(huán)單個攝像頭通道來模擬其他攝像頭。 從高層次看,這種應(yīng)用可能看起來很簡單。但是要以高幀率接收多個高清 (HD) MIPI 流頗具挑戰(zhàn)性。這恰好是 FPGA 技術(shù)的優(yōu)勢所在,因為它允許設(shè)計人員并行利用多個 MIPI 流。 該參考設(shè)計的架構(gòu)利用了 FPGA 的并行和順序處理結(jié)構(gòu)。并行結(jié)構(gòu)用于實現(xiàn)圖像處理管道,而 RISC-V 處理器提供用于 FPGA 查詢表 (LUT) 的順序處理。 在許多基于 FPGA 的圖像處理系統(tǒng)中,圖像處理管道可以分成兩個部分,即輸入和輸出流。輸入流連接到攝像頭/傳感器接口,各種處理功能則應(yīng)用至傳感器輸出。這些處理功能包括 Bayer 轉(zhuǎn)換、自動白平衡和其他增強功能。在輸出流中,準(zhǔn)備圖像用于顯示。這包括改變顏色空間(例如從 RGB 更改為 YUV),以及后處理為所需的輸出格式,如 HDMI。 通常,輸入圖像處理鏈以傳感器的像素時鐘頻率運行。這與輸出鏈的時序不同,輸出鏈以輸出顯示頻率進(jìn)行處理。 幀緩沖區(qū)用于連接輸入和輸出處理管道,它通常存儲在 LPDDR4x 等外部高性能存儲器中。該幀緩沖區(qū)在輸入和輸出管道之間去耦,從而允許以適當(dāng)?shù)臅r鐘頻率通過直接內(nèi)存訪問來訪問幀緩沖區(qū)。 Ti180 參考設(shè)計采用了與上述概念類似的方法。輸入圖像處理管道實現(xiàn)了一個 MIPI 攝像頭串行接口 2 (CSI-2) 接收器知識產(chǎn)權(quán) (IP) 內(nèi)核,該內(nèi)核建立在支持 MIPI 物理層 (MIPI D-PHY) 的 Titanium FPGA 輸入/輸出 (I/O) 之上。MIPI 接口頗為復(fù)雜,因為除了低速和高速通信,它還在同一差分對上同時使用單端和差分信號。將 MIPI D-PHY 集成到 FPGA I/O 中,降低了電路板設(shè)計的復(fù)雜性,同時還可簡化物料清單 (BOM)。 收到攝像頭的圖像流后,參考設(shè)計會將 MIPI CSI-2 RX 的輸出轉(zhuǎn)換為高級可擴展接口 (AXI) 流。AXI 流屬于單向高速接口,提供從主設(shè)備到從設(shè)備的數(shù)據(jù)流。除了在主設(shè)備和從設(shè)備之間傳輸?shù)奈帐中盘枺╰valid 和 tready),還提供了邊帶信號。這些邊帶信號可用于傳遞圖像時序信息,如幀的開始和行的結(jié)束。 AXI 流是圖像處理應(yīng)用的理想選擇,使 Efinix 能夠提供一系列的圖像處理 IP,然后可以根據(jù)應(yīng)用的需要輕松集成到處理鏈中。 接收后,MIPI CSI-2 圖像數(shù)據(jù)和時序信號被轉(zhuǎn)換為 AXI 流,并輸入到直接內(nèi)存訪問 (DMA) 模塊,該模塊將圖像幀寫入 LPDDR4x 并充當(dāng)幀緩沖區(qū)。 此 DMA 模塊在 Sapphire 片上系統(tǒng) (SoC) 內(nèi) FPGA 中的 RISC-V 內(nèi)核控制下運行。該 SoC 提供停止和開始 DMA 寫入等控制功能,此外還為 DMA 寫入通道提供必要的信息,以便將圖像數(shù)據(jù)正確寫入 LPDDR4x。這包括有關(guān)存儲器位置的信息以及圖像寬度和高度(以字節(jié)為單位)。 該參考設(shè)計中的輸出通道在 RISC-V SoC 的控制下從 LPDDR4x 幀緩沖區(qū)讀取圖像信息。數(shù)據(jù)作為 AXI 流從 DMA IP 輸出,然后從傳感器提供的 RAW 格式轉(zhuǎn)換為 RGB 格式(圖 2),并準(zhǔn)備通過板載 Analog Devices 的 ADV7511 HDMI 發(fā)射器輸出。 圖 2:參考設(shè)計輸出的樣本圖像。(圖片來源:Adam Taylor) 借助 DMA,Sapphire SoC RISC-V 也能夠訪問存儲于幀緩沖區(qū)中的圖像,以及統(tǒng)計和圖像信息摘要。Sapphire SoC 還能將覆蓋層寫入 LPDDR4x 中,以便與輸出的視頻流合并。 現(xiàn)代 CMOS 圖像傳感器 (CIS) 有幾種工作模式,可配置為提供片上處理,以及幾種不同的輸出格式和時鐘方案。通常通過 I²C 接口提供這種配置。在該 Efinix 參考設(shè)計中,與 MIPI 攝像頭的 I²C 通信由 Sapphire SoC RISC-V 處理器提供。 在 Titanium FPGA 中集成 RISC-V 處理器減少了最終解決方案的整體尺寸,因為不需要部署會增加設(shè)計風(fēng)險的復(fù)雜 FPGA 狀態(tài)機,也不需要會增加 BOM 的外部處理器。 集成該處理器后,還可以支持額外的 IP 與 MicroSD 卡進(jìn)行通信。這能夠支持可能需要存儲圖像以供日后分析的現(xiàn)實應(yīng)用。 總的來說,Ti180 參考設(shè)計的架構(gòu)經(jīng)過優(yōu)化,可實現(xiàn)緊湊、低成本但高性能的解決方案,使開發(fā)人員能夠通過系統(tǒng)集成降低 BOM 成本。 參考設(shè)計的主要優(yōu)點之一是可用于在定制硬件上啟動應(yīng)用開發(fā),使開發(fā)人員能夠利用設(shè)計的關(guān)鍵元素,并以此為基礎(chǔ)進(jìn)行所需的定制。這包括能夠利用 Efinix 的 TinyML 流程來實現(xiàn)運行于 FPGA 上的視覺 TinyML 應(yīng)用。這既可利用 FPGA 邏輯的并行特性,又可輕松地將自定義指令添加至 RISC-V 處理器中,從而能夠在 FPGA 邏輯內(nèi)創(chuàng)建加速器。 實現(xiàn) 正如第 1 部分所述,Efinix 架構(gòu)的獨特之處在于,它使用可交換邏輯和路由 (XLR) 單元來提供路由和邏輯功能。像上述參考設(shè)計這樣的視頻系統(tǒng)屬于邏輯和路由都很復(fù)雜的混合系統(tǒng):需要大量的邏輯來實現(xiàn)圖像處理功能,還需要廣泛的路由來以所需的頻率連接 IP 單元。 該參考設(shè)計使用了器件內(nèi)約 42% 的 XLR 單元,留下了充足的空間來添加內(nèi)容,包括邊緣 ML 等定制應(yīng)用。 塊 RAM 和數(shù)字信號處理 (DSP) 塊的使用也非常高效,只使用了 640 個 DSP 塊中的 4 個和 40% 的存儲塊(圖 3)。 內(nèi)核資源 輸入 1264 / 3706 輸出 1725 / 4655 XLR 73587 / 172800 存儲塊 508 / 1280 DSP 塊 4 / 640 圖 3:Efinix 架構(gòu)上的資源分配顯示,僅使用了 42% 的 XLR 單元,為其他進(jìn)程預(yù)留了充足的空間。(圖片來源:Adam Taylor) 在器件 IO 上,LPDDR4x 的 DDR 接口用于為 Sapphire SoC 提供應(yīng)用存儲器以及提供圖像幀緩沖區(qū)。所有器件專用的 MIPI 資源與 50% 的鎖相環(huán)一起使用(圖 4)。 外設(shè)資源 DDR 1 / 1 GPIO 22 / 27 HSIO 20.0 / 59 JTAG 用戶 TAP 1 / 4 MIPI RX 4 / 4 MIPI TX 4 / 4 振蕩器 0 / 1 PLL 4 / 8 圖 4:所用接口和 I/O 資源的快照。(圖片來源:Adam Taylor) 通用 I/O (GPIO) 用于提供 I²C 通信以及幾個連接到 Sapphire SoC 的接口,包括 NOR FLASH、USB UART 和 SD 卡。HSIO 用于向 ADC7511 HDMI 發(fā)射器提供高速視頻輸出。 采用 FPGA 進(jìn)行設(shè)計的一個關(guān)鍵因素是,不僅要在 FPGA 中實現(xiàn)和擬合設(shè)計,還要能夠在 FPGA 內(nèi)放置邏輯設(shè)計,并在路由時達(dá)到所需的時序性能。 單時鐘域 FPGA 設(shè)計的時代已經(jīng)一去不復(fù)返了。在 Ti180 參考設(shè)計中,有幾個不同的時鐘,都以高頻率運行。最終時序表顯示了系統(tǒng)內(nèi)時鐘達(dá)到的最大頻率。在此表中也可以看到時鐘約束中要求的時序性能(圖 5),其中 HDMI 輸出時鐘的最大時鐘頻率為 148.5 MHz。 圖 5:參考設(shè)計的時鐘約束。(圖片來源:Adam Taylor) 針對時鐘約束的時序?qū)崿F(xiàn)顯示了 Titanium FPGA XLR 結(jié)構(gòu)的潛力,因為它減少了可能的路由延遲,從而提高了設(shè)計性能(圖 6)。 時序 最差負(fù)時序裕量 (WNS) 0.182 ns 最差保持時序裕量 (WHS) 0.026 ns i_pixel_clk 211.909 MHz tx_escclk 261.370 MHz i_pixel_clk_tx 210.881 MHz i_sys_clk 755.858 MHz i_axi0_mem_clk 130.429 MHz i_sys_clk_25mhz 234.577 MHz i_soc_clk 187.231 MHz i_hdmi_clk 233.918 MHz mipi_dphy_rx_inst1_WORD_CLKOUT_HS 273.973 MHz mipi_dphy_rx_inst2_WORD_CLKOUT_HS 262.881 MHz mipi_dphy_rx_inst3_WORD_CLKOUT_HS 204.290 MHz mipi_dphy_rx_inst4_WORD_CLKOUT_HS 207.598 MHz mipi_dphy_tx_inst1_SLOWCLK 201.979 MHz mipi_dphy_tx_inst2_SLOWCLK 191.865 MHz mipi_dphy_tx_inst3_SLOWCLK 165.235 MHz mipi_dphy_tx_inst4_SLOWCLK 160.823 MHz jtag_inst1_TCK 180.505 MHz 圖 6:針對時鐘約束的時序?qū)崿F(xiàn)顯示了 Titanium FPGA XLR 結(jié)構(gòu)的潛力,能夠減少可能的路由延遲,從而提高設(shè)計性能。(圖片來源:Adam Taylor) 總結(jié) Ti180 M484 參考設(shè)計清楚地展示了 Efinix FPGA 的能力,尤其是 Ti180。該設(shè)計利用幾個獨特的 I/O 結(jié)構(gòu)來實現(xiàn)復(fù)雜的圖像處理路徑,支持多個傳入的 MIPI 流。此圖像處理系統(tǒng)在軟核 Sapphire SoC 的控制下運行,實現(xiàn)了該應(yīng)用必需的順序處理元素。 |