• 正文
    • 基本硬件設計
    • 邊緣檢測算法
    • 總結
  • 推薦器件
  • 相關推薦
申請入駐 產(chǎn)業(yè)圖譜

面向工業(yè)應用的FPGA圖像處理

2023/11/20
2936
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

作者:Adam Taylor,貿(mào)澤電子專稿

現(xiàn)場可編程門陣列FPGA)是實現(xiàn)圖像處理系統(tǒng)的絕佳選擇。它具有高度并行的邏輯架構,可實現(xiàn)高分辨率、高幀率的圖像處理算法,因而非常適合用于從自動駕駛機器人等諸多應用。通常,圖像處理解決方案是在異構片上系統(tǒng)(SoC)中實現(xiàn)的,這樣的系統(tǒng)能夠結合可編程邏輯與Arm?硬處理器內(nèi)核。然而,在某些應用中,這些處理器并不能得到充分利用,上電后也只能進行進行初步的IP核配置。在這種情況下,使用傳統(tǒng)FPGA搭配IP核配置狀態(tài)機或使用軟處理器內(nèi)核會是更好的選擇。

本項目中,我們將使用AMD AC701評估板,在AMD Artix? 7 FPGA上創(chuàng)建圖像處理管道。該電路板將使用FMC互連來連接MIPI攝像頭,并通過HDMI顯示輸出視頻。

本項目的材料清單包括以下內(nèi)容:

  • AMD AC701評估板 · Digilent FMC PCAM適配器
  • Digilent Pcam 5C固定焦距彩色攝像頭模塊
  • HDMI顯示屏
  • HDMI電纜

我們將使用以下軟件開發(fā)應用程序

  • Vivado? 2022.1
  • Vitis? 2022.1(分步安裝教程:《How to Install Vitis》)
  • Matlab和Simulink – R2021b

基本硬件設計

首先,我們要建立一個能夠實現(xiàn)標準圖像透傳的系統(tǒng),其間需要在FPGA中正確配置攝像頭和IP模塊,以便接收圖像并通過HDMI傳輸?shù)教幚礞?。這些設備的用途非常廣泛,因而可以配置為所需的輸出格式。Pcam 5C攝像頭模塊和HDMI芯片均通過相同的I2C鏈路進行配置。

為了配置攝像頭、HDMI芯片和內(nèi)部IP核,我們需要實現(xiàn)AMD MicroBlaze?軟處理器內(nèi)核。

以下是透傳功能所需的IP塊:

  • MicroBlaze,配置為同時提供指令AXI接口和數(shù)據(jù)AXI接口
  • MicroBlaze調(diào)試模塊
  • AMD AXI中斷控制器,連接至MicroBlaze中斷端口
  • AXI IIC,與外部I2C總線連接,用于攝像頭和HDMI配置,并與AXI中斷控制器連接,以實現(xiàn)中斷驅動方法
  • AMD MIPI CSI2 RX子系統(tǒng),配置為接收來自攝像頭的MIPI數(shù)據(jù)流
  • AMD LogiCORE? IP傳感器去馬賽克內(nèi)核,可將攝像頭捕獲的原始圖像轉換為RGB像素表示形式
  • 視頻幀緩沖寫入,將圖像幀存儲到DDR3內(nèi)存中
  • 視頻幀緩沖讀取,從DDR3內(nèi)存中讀出圖像幀
  • 視頻時序控制器,生成所需輸出時序的時序波形(本例中為1080p、60FPs)。
  • 視頻處理子系統(tǒng),執(zhí)行從RGB到YUV色彩空間的轉換
  • AXI Stream轉視頻輸出,可將AXI Stream內(nèi)部視頻轉換為并行視頻,并為HDMI芯片提供適當?shù)耐叫盘?/li>
  • 時鐘向導,用于生成FPGA內(nèi)部時鐘(MIPI和MIG基準時鐘為200MHz,視頻管道為150MHz。MicroBlaze在內(nèi)部使用較慢的MIG生成時鐘)
  • UART Lite,用于與用戶進行處理通信

這些模塊通過AXI Stream和AXI4接口連接。通過AMD Vivado? ML版Tcl窗口(圖1)中的框圖腳本,可以重建最終的模塊設計。

圖1:Tcl命令窗口(圖源:作者)

通過該窗口,可開始在Vivado中重建項目,如圖2所示。此過程可能需要幾分鐘才能完成。

圖2:重建項目(圖源:作者)

重建完成后,就可以探索項目設計了(圖3)。

圖3:完整的設計(圖源:作者)

新建一個頂層HDL包裝器,如圖4所示。

圖4:新建HDL包裝器(圖源:作者)

添加定義引腳的XDC約束。選擇“添加源”并選擇約束(圖5)。

圖5:添加約束條件(圖源:作者)

選擇IO.xdc文件(圖6)。

圖6:選擇IO.xdc文件作為約束條件(圖源:作者)

現(xiàn)在,我們就可以構建項目并生成位流。獲取到位流后,就可以將其導出為Xilinx支持存檔(XSA)文件,以便在Vitis中開發(fā)軟件(圖7)。

圖7:將硬件導出到Vitis(圖源:作者)

打開Vitis,并為工作區(qū)選擇工作目錄(圖8)。所有文件和應用程序都將存儲在這個位置。

圖8:選擇工作區(qū)(圖源:作者)

在Vitis中新建應用程序項目,將剛才導出的XSA作為目標,然后選擇“Hello World”應用程序(圖9 – 13)。

圖9:選擇應用程序項目(圖源:作者)

圖10:選擇剛才導出的XSA文件(圖源:作者)

圖11:選擇目標處理器(圖源:作者)

圖12:選擇域(圖源:作者)

圖13:選擇“Hello World”應用程序(圖源:作者)

打開圖8中新建的工作區(qū)src文件夾,將其中的文件替換為圖14所示的文件。

圖14:將文件復制到工作區(qū)(圖源:作者)

這些文件將出現(xiàn)在項目源文件下(圖15)。

圖15:確保文件已導入(圖源:作者)

構建應用程序(圖16)。

圖16:構建應用程序(圖源:作者)

新建調(diào)試應用程序,并通過JTAG下載到AC701評估板。將FMC Pcam適配器和Pcam模塊組裝到電路板上(圖17 – 19)。

圖17:設置硬件(圖源:作者)

圖18:配置調(diào)試應用程序(圖源:作者)

圖19:查看調(diào)試應用程序設置(圖源:作者)

連接到HDMI目標機后,該目標機將下載調(diào)試應用程序并運行,實現(xiàn)圖像顯示和透傳。如果您想了解軟件設計,請查看AMD Vitis?統(tǒng)一軟件平臺中的軟件應用程序。請注意,必須配置多個I2C開關,才能同時與攝像頭和HDMI芯片通信(圖20)。

圖20:簡單的RGB圖像透傳(圖源:作者)

為了創(chuàng)建執(zhí)行邊緣檢測的IP核,我們將使用Matlab和Simulink建立能夠放入圖像處理鏈中的IP塊。

邊緣檢測算法

在Matlab中新建一個Simulink圖表,并添加以下元素:

  • 從多媒體文件:允許使用測試工作臺中的AVI文件或MPEG文件
  • 從幀到像素:將輸出視頻轉換為像素流
  • 從像素到幀:將像素流轉換為幀
  • 兩個視頻查看器

新建一個子模塊,并添加以下內(nèi)容:

  • 索貝爾濾波器:其輸出為1或0,取決于是否存在邊緣
  • 常量blocjs:設置為0和255
  • 開關
  • 像素流校準器
  • 新建另一個子模塊

圖像合并子模塊

  • 兩個增益塊:一個用于1-Alpha,另一個用于Alpha
  • 延遲元件
  • 求和

最終的圖表應與圖21 – 23一致。

圖21:上層設計(圖源:作者)

圖22:HDL過濾器模塊(圖源:作者)

圖23:圖像疊加(圖源:作者)

有了這些模塊,我們就可以運行仿真,并將輸入圖像的結果與輸出圖像進行比較。

在輸出視頻中,請注意Sobel的結果疊加到輸入視頻上時邊緣是如何增強的(圖24)。

圖24:Simulink仿真(圖源:作者)

要生成HDL,我們可以使用HDL工作流程助手和SoC Blockset來生成具有AXI Stream接口和AXI4 Lite配置寄存器的IP模塊。

IP創(chuàng)建的關鍵要素是將像素流和控制端口映射到生成的IP塊上的AXI Stream接口,這樣就可以輕松地將IP塊集成到我們的Vivado設計中(圖25和26)。

圖25:選擇AXI接口(圖源:作者)

圖26:生成HDL(圖源:作者)

生成后,我們可以將此IP核添加回Vivado項目。在Vivado中新建一個IP資源庫,并添加我們剛剛創(chuàng)建的IP(圖27)。

圖27:更新后的Vivado圖表(圖源:作者)

將IP塊添加到Vivado設計中。我們可以將其添加到VPSS和AXIS-to-Video Out塊之間。該IP塊處理的是灰度圖像,而在VPSS的YUV444輸出中,Y通道是亮度通道,因而我們在兩個塊之間添加一個AXI子集轉換器,并且只提取TData數(shù)據(jù)流的低8位,因為這就是我們需要的信息。在IP塊的輸出端,添加另一個AXIS子集轉換器(將8位TData轉換為24位),將UV元素設置為0x80,將Y元素設置為IP塊的輸出。

然后,我們就可以重建該設計并生成位流。獲取到位流后,就可以導出XSA文件并在Vitis中更新XSA文件,從而為FPGA設計提供新的位文件,其中就包括IP塊。默認情況下,您無需自行更改或啟用軟件中的任何功能,因此應用程序應該能夠立即開始運行。請注意,HDMI顯示屏上的輸出顯示的是灰度圖像(圖28)。

圖28:生成的輸出圖像(圖源:作者)

總結

該項目表明,創(chuàng)建運行在AMD FPGA上的圖像處理系統(tǒng)并不是一件難事。

AMD、AMD箭頭標識、Artix、MicroBlaze、LogiCORE、Vivado和Vitis以及上述標識的組合均為Advanced Micro Devices, Inc.的商標。本文中使用的其他產(chǎn)品名稱僅用于識別目的,它們可能是其各自所有者的商標。

作者簡介

Adam Taylor是嵌入式系統(tǒng)教授、工程負責人,也是FPGA/片上系統(tǒng)和電子設計領域的知名專家。

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風險等級 參考價格 更多信息
EPM2210F256I5 1 Intel Corporation Flash PLD, 11.2ns, 1700-Cell, CMOS, PBGA256, 17 X 17 MM, 1 MM PITCH, FBGA-256
$585.54 查看
5M570ZF256I5N 1 Altera Corporation Flash PLD, 17.7ns, 440-Cell, CMOS, PBGA256, 17 X 17 MM, 1 MM PITCH, LEAD FREE, FBGA-256

ECAD模型

下載ECAD模型
暫無數(shù)據(jù) 查看
XC6SLX25T-2CSG324C 1 AMD Xilinx Field Programmable Gate Array, 1879 CLBs, 667MHz, 24051-Cell, CMOS, PBGA324, 15 X 15 MM, 0.80 MM PITCH, LEAD FREE, BGA-324
$129.32 查看

相關推薦