加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 基本硬件設(shè)計(jì)
    • 邊緣檢測(cè)算法
    • 總結(jié)
  • 推薦器件
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

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

2023/11/20
3723
  • 1評(píng)論
閱讀需 12 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

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

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

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

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

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

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

基本硬件設(shè)計(jì)

首先,我們要建立一個(gè)能夠?qū)崿F(xiàn)標(biāo)準(zhǔn)圖像透?jìng)鞯南到y(tǒng),其間需要在FPGA中正確配置攝像頭和IP模塊,以便接收?qǐng)D像并通過HDMI傳輸?shù)教幚礞?。這些設(shè)備的用途非常廣泛,因而可以配置為所需的輸出格式。Pcam 5C攝像頭模塊和HDMI芯片均通過相同的I2C鏈路進(jìn)行配置。

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

以下是透?jìng)鞴δ芩璧腎P塊:

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

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

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

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

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

重建完成后,就可以探索項(xiàng)目設(shè)計(jì)了(圖3)。

圖3:完整的設(shè)計(jì)(圖源:作者)

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

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

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

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

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

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

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

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

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

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

在Vitis中新建應(yīng)用程序項(xiàng)目,將剛才導(dǎo)出的XSA作為目標(biāo),然后選擇“Hello World”應(yīng)用程序(圖9 – 13)。

圖9:選擇應(yīng)用程序項(xiàng)目(圖源:作者)

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

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

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

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

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

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

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

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

構(gòu)建應(yīng)用程序(圖16)。

圖16:構(gòu)建應(yīng)用程序(圖源:作者)

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

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

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

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

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

圖20:簡(jiǎn)單的RGB圖像透?jìng)鳎▓D源:作者)

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

邊緣檢測(cè)算法

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

  • 從多媒體文件:允許使用測(cè)試工作臺(tái)中的AVI文件或MPEG文件
  • 從幀到像素:將輸出視頻轉(zhuǎn)換為像素流
  • 從像素到幀:將像素流轉(zhuǎn)換為幀
  • 兩個(gè)視頻查看器

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

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

圖像合并子模塊

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

最終的圖表應(yīng)與圖21 – 23一致。

圖21:上層設(shè)計(jì)(圖源:作者)

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

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

有了這些模塊,我們就可以運(yùn)行仿真,并將輸入圖像的結(jié)果與輸出圖像進(jìn)行比較。

在輸出視頻中,請(qǐng)注意Sobel的結(jié)果疊加到輸入視頻上時(shí)邊緣是如何增強(qiáng)的(圖24)。

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

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

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

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

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

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

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

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

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

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

總結(jié)

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

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

作者簡(jiǎn)介

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

推薦器件

更多器件
器件型號(hào) 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊(cè) ECAD模型 風(fēng)險(xiǎn)等級(jí) 參考價(jià)格 更多信息
EP4CE115F23I7N 1 Altera Corporation Field Programmable Gate Array, 7155 CLBs, 472.5MHz, 114480-Cell, PBGA484, 23 X 23 MM, 1 MM PITCH, LEAD FREE, FBGA-484

ECAD模型

下載ECAD模型
$473.28 查看
M2S150TS-FCG1152I 1 Microsemi Corporation Field Programmable Gate Array, 146124-Cell, CMOS, PBGA1152, FBGA-1152
暫無數(shù)據(jù) 查看
EPM240M100I5N 1 Altera Corporation Flash PLD, 7.5ns, 192-Cell, CMOS, PBGA100, 6 X 6 MM, 0.50 MM PITCH, LEAD FREE, MICRO, FBGA-100
$100.03 查看

相關(guān)推薦

電子產(chǎn)業(yè)圖譜