使用PCAM和Display Port添加IP內(nèi)核展示FPGA處理圖像的能力_第1頁
使用PCAM和Display Port添加IP內(nèi)核展示FPGA處理圖像的能力_第2頁
使用PCAM和Display Port添加IP內(nèi)核展示FPGA處理圖像的能力_第3頁
使用PCAM和Display Port添加IP內(nèi)核展示FPGA處理圖像的能力_第4頁
使用PCAM和Display Port添加IP內(nèi)核展示FPGA處理圖像的能力_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

使用PCAM和DisplayPort添加IP內(nèi)核展示FPGA處理圖像的能力

使用UltrascaR高效實現(xiàn)具有圖像處理1P核的圖像處理流水線系統(tǒng)。

本項目用到的品臺

硬件組件

DigilentGenesysZUXI(FPGA平臺)DigilentPCAM5XI(MI型攝像

頭)

軟件組件

AMD-XilinxVivado設(shè)計套件

介紹

從簡單的嵌入式視覺到自動駕駛汽車和無人機,圖像處理是許多應(yīng)用的核心。

XilinxMPSoC具有內(nèi)置的DisplayPort(DP)功能,并在可緬卷邏輯10中

支持M1P1DPhy,從這兩方面看,這是一個出色的嵌入式視覺平臺。

同時使用人工智能和機器學(xué)習功能使我們能夠創(chuàng)建一個復(fù)雜的嵌入式視覺處理

系統(tǒng)。

在這個項目中,我們將探索使用PCAM(FMC擴展板)和DisplayPort建立

和運行圖像處理。然后,我們可以添加圖像處理IP內(nèi)核以進一步展示FPGA的

處理圖像的能力。

可編程邏輯設(shè)計(PL端設(shè)計)

在我們的設(shè)計中,我們將包括以下IP

ZynqMPSoCProcessingSystem-啟用DisplayPort、12c和GPIOEMIO

MIPICSI2RXSubSystem-從PCAM接收MTP:CSI2流。

SensorDemosaic-將RAW像素格式轉(zhuǎn)換為RGB像素格式。

GammaLUT-gamma圖像校正

VDMA-將映像寫入PS中的DDR內(nèi)存

VideoTimingGenerator-生成輸出視頻時序

AXIStoVideoOut-從AXT流轉(zhuǎn)換為視頻流

ClockWizards-用于生成視頻像素時鐘和MIP:CSI2參考時鐘

除了IP,我們還需要考慮時鐘架構(gòu),對于這個解決方案,我們設(shè)計了以下時鐘

樹:

AXI時鐘-150MHz-這為AXIStream和AX:lite接口提供時鐘

DPHY參考時鐘-200MHz-由ClockWizards生成

PixelClock-74.25Mhz-用于1280x72060FPS-由ClockWizards生

完成的框圖應(yīng)如下所示,內(nèi)核配置如下所示。

Mi

為了控制和配置PCAM5(FMC-MIPI擴展板),我們使用I2C和GPIO,GPIO

信號用于啟用PCAM5并為其供電。而I2C用于配置PCAM5本身。

我們可以使用EMTOGPTO將處理器GPTO擴展到可編程邏輯。雖然T2C由PS

IICO提供,但是我們需要在應(yīng)用程序軟件中配置器啟用。

ZynqAux33V)33V

URraScale*dedicatedpowerPMUpowecrails

PL

(PCMaster)

Zynq------------------SODIMM

URraScale*

PS

(RCMaster)----------------12cButVef

PlatformMCU

(PCMaster)

J36PC

header

要啟用MPSoC中的顯示端口,我們需要在1/0配置頁面下配置DisplayPort

外設(shè)。硬件上使用了Bank505的MGT。

VCC0V85PSMGTRAVCC

BankS05

[電?PC吆U5B3O_CIK_JP

P$_MGTREFCIKOP_5OS

dPGEUSB301ClEcM

PS_MGTREFCLK0N_5O5「

SAT/CCIK_CIP~

PSMGTREFCIK1P505TP85SATA-CIK-C-N

PS_M6TREFCIIUN_5O5

86DI$PUWqK_JP

F>$_MGTReKL?P_S05

PS_MGTREFCIK2N25O5TP?7DISPLAY二CIK:C:N

USB30_tlKES

PS.MGTREFCIK3P_5OSUSB30_CLK-C-N

PSMGTREFCLK3N505

25PCI6PETSATAOAP

PS_MGTRTXPO_5O5

PSJMGTRTXNOZSOSE26PCIEPETSATAOAN

立3USB30TXP1DIFF90

PS_MGTRTXP1505

)24USB30TXN1DIFF90

P$_MGTRTXN1_5O5

;25DPTXLANE1P

PS_MGTRTXP2_50S

:26DPTXLANE1N

P$[MGTRTXN21505

“3OPTXLANEOP

PS_MGTRTXP3_505

DPTXLANEON

PS~MGTRTXN3_5O5

PCI£_PER_SATAO_B_P

PS_MGTRRXPO_5O5PCEPER[SATAO1B[N

PS_MGTRRXN0_S05

USB30_RX_P

PS_MGTRRXP1_5O5USB30-RX-N

PS_MGTRRXN1_5OS

PS_MGTRRXP2_505

PS_MGTRRXN2_5O5

PS_MGTRRXP3_5OS

PS_MGTRRXN3_505

IC59OGND

我們還需要配置通過EMIO連接到PL的輔助引腳。這意味著我們需要以不同

于PS中的MTO的方式處理它們,輔助輸出使能引腳低電平有效,因此我們需

要在使用EMIO時對信號使用反相器。

?Re-custom?z?IP

ZynqUltraScale*MPSoC(3.3)

ODocutnenution0PresetsIPLocation

P?9?NavigatorI/OConfiguration

(SwitchToAdvancedMedeMIOVolt>9eSUndard

BdnkO|MQ025]G4nld|MIO2651)Bank2(MIO5277|Bank3(OedKated)

PSUlgScKBlockDesign

LVCMOSnVIVCMOS187LVCMOS18▼LVCMO$?v

I/OConfigurabon

ClockConfiguration

DORConfiguration

PS-PtCofWigutationPenpheralSignalI/OTypeD

G£M

bPCIe

JO$phyPod

DPAUXEMIOv

>laneSelectionDualHigherv

「SATA

RHefenceClocks

配置好DisplayPort后,我們就可以啟用PL的實時視頻輸入。這在PS-PL

配置下可用。

?Re-customizeIP

ZynqUltraScale*MPSoC(3.3)

ODocumenubon0PrceUIPlocation

P*g?NavigatorPS-PlConfiguration

*Q5e

SwKchToAdvancedMode

SeatchQ-________________________________I

PSBlockDeugn

NameSelect

I/OConfigufition

**General

dockConligufMion>Interruplt

>FabncResetEnable0

DDAConfi9Ufat>on

>AddreuFr*gm<ntMion

PS-PLConftguratJon

?Others

UseLPO.DMA0v

UseFPO.DMA0v

UseRTC0v

UwEventRRJ0v

UwProcEventBut0v

LiveAudio0v

liveVideo1p

EnableDORRefresh

>G(MO

I

最后配置是設(shè)置GPIO以提供一個1位的EMIO,這樣我們就可以打開和關(guān)閉

PCAM5o

?Re-customizeIP

ZynqUltraScale*MPSoC(3.3)

ODocumentation0PresetsIPLocation

P,g*NavigatorI/OConfiguration

FlSwitchToAdvanMIOVoltageStandard

BankO|MIO0:25]Bankl[MIO26:51]Bank?(MIO5277]Bank3(Dedkated)

PSUltraScale*Block

LVCMOS33vLVCMOS18、LVCMOS187LVCMOS33v

I/OConfiguration

ClockConfiguration?Q子等

DDRConfigurationSearchQ-

PS-PLConfigurationPeripheralI/OSignalI/OTypeDrrveStrengthfrr

>UART

,GPIO

JGPIOEMIO1V

>'GPIOOMIOMIO?V

>VGPIO1MIOMIO.V

□GPIO2MIO

>ProcessingUnit

HighSpeed

Sensor將通過12c進行配置,最后通過兩個MIPI通道以280Mbps的數(shù)據(jù)

速率輸出10位RAW視頻。

因此,我們需要配置MIPICSI-2RX子系統(tǒng)

.IP

MIPICSI-2RxSubsystem(4.0)

ODocum?nUtNXt用loubon

CompocwntN?nwRMpi.cW.n.subfytt.O

ShafWlB9icIHaAnifniMnl|A(^lkattontxampliOMffn

Sv^tyvtvmOption*

^■dFofnvMSAW10vStvMiD^teUrm2

[bubleAXIIK(CCD

Sindud*VideoFormx也如(VFBj

9SupportCSISpecV2.0

[SupportVCXFMtur*

OPHVOpt>om

l?wRjte乎(1012601

D-PMYReqnterintedacc

CSI2Opttom

Imbeddvdnonunag9mu*<M?

。Uw*Denned&Styp*1

Un?BuffefDepth2048v

TDATAWidth32

TDESTWdth4

TUSfRWrtkhM

VFBOption(

MowedVCAlvPn?hR?fClock1v

BoughtPbcem*wUbleBK*ground36runningonthedm9nC*KUC2*6Change>enot?Mow?d

由于我們只有一個MIPI接口,我們將配置M1P:內(nèi)核以包含所有共享邏輯。

如果我們在同一個bank上有多個MIPI接口,則下一個MIPI接口將被配置

為使用示例設(shè)計中的共享邏輯。

?MeflonwtIP

MIPICSI-2RxSubsystem(4.0)

OOocumtnuuonIPloc^bon

Show<M>MpomComponentHamvnwpt.cW/x.tubfyst.O

ShM?d109kc

ShMMlLAflC

Meet*4w<ht<tWMMCM?ndPU”■included

mthecor*"telfortnth*?wnptedetiQe

?Includ*SKwvdlog*tncorv

inckidtL09Ktndtugn

Sh?r?dLogicOv??vww

Include$h*?d109cm<or?

?forUMHwhow?MacompM*ungtosciutoon

-ForUM?SwhoWMHoneco??withSMredLo9xtodmremulbplecof?ivMhoutSharedLog?

BackgroundU?krunningonthed*wgnCustorwutMX)ch??9*1Knot?llow?d

MIPI接口的最終設(shè)置是為MIPI通道和時鐘選擇10bank和引腳分配。正如

我們在這里定義的那樣,我們不需要將它們添加到定義引腳位置的XDC文件

中。

.R?-cuswm*zeIP

MIPICSI2RxSubsystem(4.0)

ODocum?<nM?on*LouMn

ShowdMbkdpomComponentM*?nem?M,cfi2.ni.wbsys<.0

Locf.IUUIUORUxpHnAtugnmenttton?-MY0G??」

HP10&N*1"~]

NANWMn10cKnN?m?

ClwhLMWClIO.L1F.T0l.N0.DeC.M

UMOfl?_12P_TOI_N2.W

0?UF2K).l此T0LJM/D15P.H

Non*None

D?UUMINon*None

Mi9t)r?(onwnendHtoMQueneaIOmowd?<MH??*C*MIPIDFHYPG2O2

Boughi(PbcemewatUbtetKitgroundCMMrunning8ZdestQnCuuomaxion<h<?9e$Menotflowed

創(chuàng)建可用圖像的下一步是轉(zhuǎn)換原始圖像,其中包含有關(guān)每個像素一個顏色通道

的信息。

在包含紅色、綠色和藍色元素的圖像中,這稱為去拜耳化,由Sensor

DemosaicIP塊實現(xiàn)。

對于我們的應(yīng)用程序,PCAM5將以以下格式輸出像素BGBG/GRGR

綠色是紅色和藍色的兩倍,因為我們的眼睛對綠色更敏感,如果可見光譜位于

中間,則綠色比位于兩端的紅色和藍色更敏感。

.RecustomizeIP

SensorDemosaic(1.0)

ODocumentationIPlocation

CShowdisabledportsComponentNamev_demowk_0

SamplesperClock1

MaximumDataWidth10

MaximumNumberofColumns2048

MaximumNumberofRows1024

InterpohtionMethodFringeTolerantlnterpolat?on

vHorizontalZipperArtifactRemoval

Backgroundtaskrunningonthedesign.Customizationchangesarenotallowed

處理的下一步是實現(xiàn)Gamma校正IP內(nèi)核

.Re-customizeIP

GammaLUT(1.0)

ODocumentationIPLocation

OShowdisabledportsComponentNamev_gamma」ut_O

SamplesperClock1

MaximumDataWidth10

MaximumNumberofColumns204fi)

MaximumNumberofRows1024

?BE

—"d一

9Apnt.n

OK

最后一個階段是插入一個VDMA,這將使視頻數(shù)據(jù)能夠從PSDDR寫入到內(nèi)存

中。

,RecmtomaeIP

AXIVideoDirectMemoryAccess(6.3)

ODocumenUbonIPUxMion

CShowdt$abledpomComponentN*neaw.vdma.O

BMKAdv,n<r<*

AddretiWidth(3264)31Gbrts

Fr?meBuffets1v

ErubteWriteChannel,<?(rubleReadCtunnd

|***°]MemoryMapDataWidth64vMemoryM4P0?3M

WriteBuntStf*64vReadBuntS?e

SlreamDauWidth(Auto)22YStfe?nDouWidth

LMWBufferDepth204svUneBuHefDepth

Configuringth*IPwithMe-mingwidthwhichhnotapow?rof2

rewlHinngnificAntincr??s?inretourcM

Backgroundta$krunrungonthedesignCustomizationchangesar*notaHowed

為了向顯示端口提供輸出視頻的時序,我們在發(fā)生器模式下使用VTCo

?Rt-cuftonwztIP

VideoTimingController(6.1)

Compon?n<Namev.tc.0

O*U<t匕UwrMionD-iuJt.v,,--,■.t.:■.iyn>>■?

-mcludeAXMUH

Cloclud*INTCIHU*1M?

[Ms心“Vbd?oSupport

CSynchionueG??W*MFXIOCM?<UM<MIO

M*KCtocksUne40%*Ma>Une$Pe?Frame096

Ff*nwSyncs1▼

.(rubtoGenerMionfrubleDrt?cl(on

<?*??**ationOption*(>????.tivn

JVe?tK4lBlankGe?v*f4t>on

JHottxonuiBUnkGene?4tion

,VtftiulSyncGeneration

J'HonJE.SyncJwrgon

.Actr?*?VideoGenerMion

ActiwChfomaGcnerMion

BKfcgroundta$krunningonZdesignCuitonuxonch4n9einot'Bowed

最后階段是AXIS到視頻輸出IP,這將采用視頻時序控制器、時序信號和AXI

視頻流來創(chuàng)建具有正確時序的輸出視頻。

?Re*cus!omizeIP

AXI4-StreamtoVideoOut(4.0)

ODocumentationIPLocation

ShowdisabledportsComponentNamev_ax?4s_v?d_out_0

PixelsPecClock1

[s]VideoFormatRGB

AXI4SVideoInputComponentWidth10

NativeVideoOutputComponentWidth12

FIFODepth4096

ClockMode

Common?)Independent

TimingMode

?)Slave()Master

HysteresisLevel12

Backgroundtaskrunningonthedesign.Customizationchangesaterotallowed

其輸出將連接到顯示端口視頻實時輸入。

這需要一點思考,實時視頻輸入具有36位視頻輸入,像素的每個元素為12

位。我們正在使用每個元素10位,這使其整體為30位。

通過填充LSB,到視頻輸出的AXIS流將按比例放大輸出塊,從每像素30位

到每像素36位。

確保AXIS到VideoOutTP內(nèi)核輸出的顏色通道與DisplayPort實時視頻輸

入正確對齊。最簡單的方法是在AXIStream中使用AXIS子集轉(zhuǎn)換28根據(jù)需

要切換顏色通道C

為了幫助調(diào)試和理解設(shè)計,我還在設(shè)計中包含了幾個集成邏輯分析儀。

隨著設(shè)計的完成,我們現(xiàn)在可以構(gòu)建硬件設(shè)計并使用SDK實現(xiàn)軟件應(yīng)用程序。

軟件開發(fā)

完成硬件設(shè)計后,下一步是編寫將在可編程邏輯中配置TP的軟件。此配置將

允許他們通過視頻,可以顯示在DisplayPort監(jiān)視器上。

因此,我們的應(yīng)用軟件將執(zhí)行以下步驟

配置GPI0并啟用PCAM5電遮

將VideoMode1280x720設(shè)置為60FPS并配置VTC

3)配置VDMA幀大小和內(nèi)存存儲

自已置ScnsoDcmosaic

配置伽瑪校正

使用12c鏈路配置PCAM5

啟用從VDMA讀取和寫入幀緩沖區(qū)

設(shè)置顯示端口

就像我們處理其他項目一樣,我們需要導(dǎo)入硬件規(guī)范、創(chuàng)建應(yīng)用程序和BSP.

為了能夠在顯示端口上使用實時視頻源,我們需要首先更新BSP設(shè)置并重新生

成它。

在BSP設(shè)置中將avbuf更改為dppsu并等待BSP重新生成。

BoardSupportPackageSettings

ControlvarkxissettingsofyourBoardSupponPackage

*Overview

standaloneDrivers

ydrivers

Thetablebelowlistsallthecomponentsfoundinyourhardwaresystem.Youcanmodit

p$u.cortexa53,0

assignedforeachcomponentIfyoudonotwanttoassignadrivertoacomponentofj

none'.

ComponentComponentTypeDriverDr-

psu.ddrjctnpul.dgpsu.<Mrjtmpu1.cfggenenc2.0

pw.ddr_xmpui.cfgp$u.ddrj(mpu2.cFggeneric2.0

p$u_ddrjEpu3_dgp肛ddrjmpu3.dggeneric2.0

psu.ddrjcmpu4.cfg?."idrjcfnpu4.ctggenetic2.0

p$u.ddrjcmpu5.cf0pM.ddrjanpu5.dggeneric2.0

psu.ddrjDpju.ddrcddrcpsu1.1

avbufv22

psu.dpdmapsu.dpdmanone1.1

avbuf2.0

dpp$u

pw.fpdopvpsu.fpd.opv2.0

generic

2.0

generic2.0

generic2.0

generic2.0

zdma1.6

zdma1.6

ME*ia

正確配置BSP后,我們可以創(chuàng)建應(yīng)用程序代碼。BSP將提供使用PL中的IP

塊所需的所有API函數(shù)。

主要應(yīng)用如下

#include

#include"platform.h〃

ttinclude〃xil_printf.h〃

ttinclude,zxvtc.h"

#include〃vgamodes.h〃

ttinclude〃xvtpg.h"

#include"xvidc.h〃

#include"xavbuf.h"

#include〃xavbuf_c:k.h〃

ttinclude"xvidc.h〃

#include^xdpdma^ideo_examp1e.h〃

#include"xiicps.h"

ttinclude"i2c.h〃

#include"xaxivdma.h〃

#include"xaxivdmai.h〃

itinclude"xgpiops.h〃

ttinclude^xvdemosaic.h〃

ttinclude^xvgammalut.h〃

ttinclude"math.h〃

XVtcVtclnst;

XVtc_Config*vtc_config;

XV_tpgtpg;

XVtpgConfig*tpgconfig;

XlicPsiic_cam;

XAxiVdmavdma;

XAxiVdmaDmeiSetupvdmaDMA;

XAxiVdma_Config*vdmaConfig;

XGpioPsgp_cam;

VideoModevideo;

XVdemosaiccfa;

XVgamma_1utgammainst;

u8ScndBuffer[10];

u8RecvBuffer[10];

u16geimina_reg[1024];

#defineDEMO_MAX_FRAME(720*1280)

ftdefineDEMOSTRIDE(1280*2)

^defineDISPLAY_NUM_FRAMES3

#defineIlC_camXPAR_XIICPS_O__DEVICE_ID

#definecamgpioXPARXGPIOPS0DEVICETD

#defineCAM_ID0x78

#defineIIC_CAM_ADDR0x3c

#defineIIC_SCLK_RATE100000

并defineMUX_ADDR0x70

voiddetect_camera;);

intInitial_setting_l(u32*cfg_ini

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論