如何使用內(nèi)部邏輯分析儀來(lái)驗(yàn)證通用邊緣圖像處理應(yīng)用程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
Versal AI Edge系列提供了一系列功能強(qiáng)大的系統(tǒng)級(jí)芯片(SoC)設(shè)備,專(zhuān)門(mén)針對(duì)邊緣應(yīng)用進(jìn)行了優(yōu)化,特別是涉及人工智能和機(jī)器學(xué)習(xí)的應(yīng)用。
這些設(shè)備結(jié)合了多種處理元素,包括Arm Cortex-A72應(yīng)用處理器、實(shí)時(shí)Cortex-R5F處理器、可編程邏輯和專(zhuān)用AI引擎。所有這些組件都通過(guò)高帶寬、低延遲的片上網(wǎng)絡(luò)(NoC)相互連接,從而實(shí)現(xiàn)高效的數(shù)據(jù)移動(dòng)和跨異構(gòu)計(jì)算結(jié)構(gòu)的緊密集成。
利用人工智能和機(jī)器學(xué)習(xí)的眾多邊緣應(yīng)用之一是視頻流檢測(cè)和分類(lèi)。這些系統(tǒng)通常使用卷積神經(jīng)網(wǎng)絡(luò)(cnn)在邊緣執(zhí)行局部推理。這種類(lèi)型的應(yīng)用非常適合在Versal AI Edge設(shè)備上實(shí)現(xiàn),該設(shè)備結(jié)合了AI引擎、高帶寬片上網(wǎng)絡(luò)(NoC)、可編程邏輯和應(yīng)用處理器,以實(shí)現(xiàn)高性能、低延遲的解決方案。
在開(kāi)發(fā)和部署高級(jí)應(yīng)用程序和機(jī)器學(xué)習(xí)模型之前,必須建立一個(gè)強(qiáng)大的圖像處理管道。該管道通常與MIPI相機(jī)接口,并執(zhí)行諸如去馬賽克、色彩空間轉(zhuǎn)換和基本圖像增強(qiáng)或預(yù)處理功能等操作。這些步驟確保捕獲的圖像數(shù)據(jù)適合進(jìn)一步的處理和推理。
在許多開(kāi)發(fā)工作流程中,一個(gè)關(guān)鍵的早期里程碑是演示可靠的硬件和攝像機(jī)接口。這包括驗(yàn)證圖像處理管道是否按預(yù)期工作,MIPI相機(jī)是否可以正確配置,以及是否接收到有效的圖像流。在集成高級(jí)AI或應(yīng)用程序邏輯之前,通過(guò)確保I/O分配、時(shí)鐘策略和圖像處理流的正確實(shí)現(xiàn),及早確認(rèn)這些元素可以降低開(kāi)發(fā)風(fēng)險(xiǎn)。
這個(gè)堅(jiān)實(shí)的基礎(chǔ)使得在項(xiàng)目的其余部分中更快地迭代和更自信地進(jìn)展。
在這個(gè)項(xiàng)目中,我們將探索創(chuàng)建一個(gè)通用AI邊緣圖像處理平臺(tái),目標(biāo)是Alinx VD100開(kāi)發(fā)板,它具有兩個(gè)四通道MIPI輸入和一個(gè)LVDS LCD顯示輸出。通用AI Edge設(shè)備可以使用免許可的Vivado標(biāo)準(zhǔn)版進(jìn)行開(kāi)發(fā),使該平臺(tái)可用于原型設(shè)計(jì)和開(kāi)發(fā)。
整個(gè)的調(diào)試
雖然在Versal上調(diào)試應(yīng)用程序與在7系列、UltraScale和UltraScale+設(shè)備上調(diào)試非常相似,而且我們可以使用Chipscope,但需要注意一些重要的區(qū)別。
最重要的變化在于調(diào)試集線(xiàn)器的連接方式。在7系列、UltraScale和UltraScale+設(shè)備中,調(diào)試集線(xiàn)器通過(guò)JTAG邊界掃描接口連接到設(shè)計(jì)中插入的調(diào)試內(nèi)核。這個(gè)調(diào)試中心在實(shí)現(xiàn)流的優(yōu)化階段自動(dòng)插入。
相反,對(duì)于Versal,調(diào)試集線(xiàn)器通過(guò)CIPS(配置、初始化和電源管理系統(tǒng))塊的AXI4主接口連接到調(diào)試內(nèi)核。此外,與前幾代調(diào)試內(nèi)核使用專(zhuān)有接口不同,Versal調(diào)試內(nèi)核使用標(biāo)準(zhǔn)的AXI4-Stream接口,與平臺(tái)的現(xiàn)代化互連體系結(jié)構(gòu)保持一致。
因此,必須在設(shè)計(jì)中提供CIPS塊,以促進(jìn)到調(diào)試集線(xiàn)器的axis4主連接。根據(jù)設(shè)計(jì)上下文,調(diào)試集線(xiàn)器插入可以是自動(dòng)的,也可以是手動(dòng)的。對(duì)于包含DFX(動(dòng)態(tài)功能交換)的設(shè)計(jì),必須手動(dòng)插入調(diào)試集線(xiàn)器。
另一個(gè)關(guān)鍵的區(qū)別是軸流ILA的使用。在Versal中,該IP核將標(biāo)準(zhǔn)ILA和系統(tǒng)ILA功能集成到單個(gè)塊中。此外,用戶(hù)現(xiàn)在可以選擇用于存儲(chǔ)捕獲數(shù)據(jù)的內(nèi)存類(lèi)型(BRAM或uram),從而在捕獲深度和資源使用方面提供更大的靈活性。
調(diào)試方法
在調(diào)試應(yīng)用程序時(shí),我們需要采用邏輯方法。因此,在使用System ILA或ILA時(shí),我們應(yīng)該理解FPGA設(shè)計(jì)是一個(gè)迭代過(guò)程,如果我們從邏輯上解決問(wèn)題,這是最成功的。
最好的方法是:
?把問(wèn)題分解成更小的部分
?通過(guò)減少變量和變化來(lái)簡(jiǎn)化
?做一個(gè)預(yù)測(cè),然后驗(yàn)證結(jié)果
?在設(shè)計(jì)周期的早期計(jì)劃如何以及在哪里進(jìn)行調(diào)試
插裝方法
當(dāng)在實(shí)際設(shè)計(jì)中使用集成邏輯分析儀(ILA)時(shí),重要的是要有策略地使用儀器來(lái)平衡調(diào)試可見(jiàn)性和FPGA資源使用。
ILAs消耗邏輯和塊RAM,這在已經(jīng)接近容量的設(shè)備中成為一個(gè)關(guān)鍵問(wèn)題。
捕獲深度和被監(jiān)測(cè)信號(hào)的寬度直接影響B(tài)RAM的使用——更寬的探針和更長(zhǎng)的捕獲窗口會(huì)迅速耗盡可用內(nèi)存。
在早期的版本中,遵循上面概述的方法,重點(diǎn)關(guān)注關(guān)鍵控制信號(hào)、重置線(xiàn)和狀態(tài)或錯(cuò)誤指示器,因?yàn)檫@些通常提供對(duì)系統(tǒng)行為的直接洞察,并幫助在調(diào)試周期的早期識(shí)別問(wèn)題。
系統(tǒng)內(nèi)的關(guān)鍵AXI總線(xiàn),特別是那些與Versal的片上網(wǎng)絡(luò)(NoC)和處理系統(tǒng)接口的總線(xiàn),也應(yīng)該考慮用于儀表。這些接口是PL、NoC和PS之間的關(guān)鍵數(shù)據(jù)路徑,可能會(huì)暴露系統(tǒng)集成和數(shù)據(jù)移動(dòng)中的微妙問(wèn)題
雖然這些寬總線(xiàn)是資源密集型的,但它們承載著可編程邏輯和處理系統(tǒng)之間的基本流量,并且可以揭示數(shù)據(jù)處理和系統(tǒng)集成中的微妙問(wèn)題。
從精心選擇的控制、復(fù)位、狀態(tài)/錯(cuò)誤和這些關(guān)鍵AXI接口的混合開(kāi)始,在適當(dāng)?shù)牟东@深度提供了對(duì)系統(tǒng)級(jí)行為的有價(jià)值的可見(jiàn)性,同時(shí)為迭代調(diào)試改進(jìn)保留了空間。
Vivado設(shè)計(jì)
為了創(chuàng)建一個(gè)能夠接收、處理和顯示來(lái)自傳感器的圖像的圖像處理管道,我們必須設(shè)計(jì)一個(gè)在控制、接口和處理系統(tǒng)(CIPS)控制下運(yùn)行的復(fù)雜系統(tǒng)。
圖像幀通過(guò)一系列IP塊捕獲和處理,而應(yīng)用軟件、DDR存儲(chǔ)器訪(fǎng)問(wèn)以及CIPS和可編程邏輯之間的通信都通過(guò)片上網(wǎng)絡(luò)(NoC)進(jìn)行。
這種高性能互連確保了整個(gè)系統(tǒng)的高效數(shù)據(jù)移動(dòng)。該設(shè)計(jì)的總體架構(gòu)如下圖所示。
像素將作為10位原始數(shù)據(jù)從傳感器接收,每個(gè)時(shí)鐘周期處理4個(gè)像素。當(dāng)數(shù)據(jù)在管道中移動(dòng)時(shí),它被轉(zhuǎn)換為RGB格式,從而產(chǎn)生120位寬(4像素× 3通道× 10位)的AXI4-Stream接口。這種寬數(shù)據(jù)路徑確保了整個(gè)圖像管道的高吞吐量和低延遲。
雖然設(shè)計(jì)中使用的確切IP塊取決于應(yīng)用程序的具體要求,但核心管道通常包括傳感器接口、去馬賽克、色彩空間轉(zhuǎn)換、圖像增強(qiáng)和視頻定時(shí)控制模塊,以及AXI流互連和控制邏輯。
為了幫助我確保設(shè)計(jì)正確運(yùn)行,我將在圖像處理管道中插入幾個(gè)ila。
?ILA_LCD_LVDS -這將幫助我監(jiān)控LCD / LVDS接口,確保其錯(cuò)誤和狀態(tài)信號(hào)可以很容易地觀察到。
?視頻ILA -使用四個(gè)通道來(lái)監(jiān)控處理管道中的AXIS視頻。它觀察MIPI輸出、Demosaic、子集轉(zhuǎn)換器和VDMA輸出。這允許我們?cè)诠艿赖娜魏坞A段監(jiān)控視頻,無(wú)論是進(jìn)入和走出VDMA。
?內(nèi)存ILA—通過(guò)NoC監(jiān)視進(jìn)出DDR的AXI4流量,這允許我檢查DDR的數(shù)據(jù)寫(xiě)入和寫(xiě)入是否正確。
?輸出ILA -這監(jiān)視AXI流到視頻輸出狀態(tài),以確保我們可以看到它的狀態(tài)和錯(cuò)誤條件。
?控制、接口和處理系統(tǒng)(CIPS)配置處理系統(tǒng)(PS),管理平臺(tái)初始化,并提供對(duì)基本外設(shè)的訪(fǎng)問(wèn)。
?片上網(wǎng)絡(luò)(NoC)通過(guò)為互連結(jié)構(gòu)提供入口和出口點(diǎn),促進(jìn)了高帶寬數(shù)據(jù)的移動(dòng),并且還集成了DDR存儲(chǔ)器控制器,用于訪(fǎng)問(wèn)外部存儲(chǔ)器。
?SmartConnect -提供連接到IP塊上的axis - lite寄存器接口,使處理系統(tǒng)能夠控制和配置。
?MIPI CSI-2 RX子系統(tǒng)-實(shí)現(xiàn)4通道MIPI CSI-2接口,每通道運(yùn)行1000 Mbps,實(shí)現(xiàn)從兼容相機(jī)傳感器高速圖像數(shù)據(jù)捕獲。
?Demosaic -將原始拜耳模式像素?cái)?shù)據(jù)轉(zhuǎn)換為完整的RGB像素,從傳感器輸入重建每個(gè)像素的顏色信息。
?AXI子集轉(zhuǎn)換器-將40位像素?cái)?shù)據(jù)(通常每個(gè)RGB通道10位)轉(zhuǎn)換為24位像素格式(每個(gè)通道8位),保持每個(gè)時(shí)鐘周期4個(gè)像素的吞吐量。
?VDMA(視頻直接內(nèi)存訪(fǎng)問(wèn))——橋接了AXI4- stream和AXI4內(nèi)存映射接口,通過(guò)NoC在DDR內(nèi)存中存儲(chǔ)和檢索視頻幀,并支持處理階段之間的高效緩沖。
?AXI4-Stream to Video Out—將AXI4-Stream視頻流轉(zhuǎn)換為標(biāo)準(zhǔn)視頻輸出格式,生成必要的同步信號(hào),如HSync、VSync和視頻定時(shí),以驅(qū)動(dòng)顯示接口。
?視頻時(shí)序控制器(VTC) -生成所需的視頻時(shí)序信號(hào),如HSync, VSync和活動(dòng)視頻指示器,并與AXI4-Stream to Video Out塊同步,以確保正確的顯示時(shí)序。
?LCD LVDS接口-將標(biāo)準(zhǔn)并行視頻輸出轉(zhuǎn)換為串行VESA LVDS流格式,適用于驅(qū)動(dòng)具有所需時(shí)序和信號(hào)特性的基于LVDS的LCD面板。
?高級(jí)IO向?qū)?配置通用設(shè)備中的XPIO序列化LCD LVDS輸出數(shù)據(jù),使視頻信號(hào)高速傳輸?shù)椒螸VDS VESA標(biāo)準(zhǔn)的顯示器。
為了確保我們能夠驗(yàn)證和調(diào)試圖像處理管道的操作,我們?cè)谠O(shè)計(jì)中添加了幾個(gè)集成邏輯分析儀(ILAs)。這些ila提供關(guān)鍵內(nèi)部信號(hào)的實(shí)時(shí)可視性,并能夠監(jiān)測(cè)以下要素:
?ILA_LCD_LVDS -監(jiān)控LCD_LVDS塊的狀態(tài)輸出,以驗(yàn)證正確的序列化和數(shù)據(jù)傳輸?shù)絃CD面板。
?Video_ILA -監(jiān)控視頻處理管道中的關(guān)鍵點(diǎn),包括RAW視頻輸出、Demosaic塊的RGB輸出、AXI子集轉(zhuǎn)換器的24位輸出和VDMA的視頻流輸出。這樣可以在每個(gè)階段驗(yàn)證像素?cái)?shù)據(jù)轉(zhuǎn)換。
?Memory_ILA—監(jiān)視通過(guò)NoC進(jìn)出DDR內(nèi)存的AXI4事務(wù),提供對(duì)內(nèi)存訪(fǎng)問(wèn)模式、帶寬利用率和數(shù)據(jù)移動(dòng)中的潛在瓶頸的可見(jiàn)性。
?Output_ILA—監(jiān)視AXI4-Stream到Video Out IP的狀態(tài)信號(hào),包括同步有效性、數(shù)據(jù)啟用和視頻時(shí)序校準(zhǔn),確保正確切換到顯示接口。
這為我們提供了在整個(gè)圖像處理管道中觀察靜態(tài)go/no-go狀態(tài)信號(hào)和高帶寬數(shù)據(jù)傳輸?shù)哪芰Α?
完成的設(shè)計(jì)如下所示,可以使用本項(xiàng)目附帶的TCL腳本重新創(chuàng)建。
為了生成比特流,我們當(dāng)然需要定義XDC I/O約束,它為所有外部接口指定物理引腳位置和電氣標(biāo)準(zhǔn)。這些I/O位置定義如下:
應(yīng)用軟件
應(yīng)用軟件將使用Vitis統(tǒng)一軟件平臺(tái)開(kāi)發(fā)。該應(yīng)用程序負(fù)責(zé)執(zhí)行以下關(guān)鍵任務(wù):
?使用Alinx提供的初始化文件配置攝像機(jī)。
?設(shè)置視頻定時(shí)控制器(VTC)以生成720p分辨率的適當(dāng)定時(shí)信號(hào)。
?配置Demosaic IP以實(shí)現(xiàn)正確的顏色重建。
?通過(guò)GPIO控制信號(hào)使能攝像頭。
?將VDMA配置為在DDR內(nèi)存和視頻管道之間讀寫(xiě)圖像幀,利用NoC進(jìn)行高速數(shù)據(jù)訪(fǎng)問(wèn)。
?完整的軟件應(yīng)用程序可以在我的GitHub上參考和重用。
伊拉驗(yàn)證
當(dāng)軟件運(yùn)行時(shí),我們可以使用ILAs來(lái)驗(yàn)證圖像處理管道是否按預(yù)期運(yùn)行。這些集成電路在系統(tǒng)優(yōu)化和調(diào)試中也起著關(guān)鍵作用。
在Vivado硬件管理器中,ILA將被重新映射為一個(gè)數(shù)值。映射如下圖所示:
?ILA1 -記憶ILA。
?ILA2 -輸出ILA。
?Ila3 - LCD液晶顯示器。
?ILA4 -視頻ILA。
驗(yàn)證的第一步是監(jiān)視axis4 - stream to Video Out塊的狀態(tài)信號(hào)。該IP提供指示器,顯示AXI流和視頻定時(shí)信號(hào)是否正確同步。如果輸入的視頻時(shí)間不匹配或不穩(wěn)定,塊將無(wú)法鎖定,從而阻止視頻輸出。
此外,由于該塊包括一個(gè)內(nèi)部FIFO,我們可以通過(guò)ILA觀察其溢出和下流狀態(tài)信號(hào)。這些信號(hào)在診斷性能問(wèn)題(如數(shù)據(jù)饑餓或管道中的反壓)時(shí)特別有價(jià)值,并有助于指導(dǎo)內(nèi)存帶寬或緩沖策略的改進(jìn)。
觀察作為輸出ILA的ILA1上的信號(hào),我們可以看到包含視頻的AXI流被視頻時(shí)序控制器生成的時(shí)序信號(hào)鎖定。如果AXI流沒(méi)有同步,例如,它是一個(gè)不同的格式,AXI流到視頻輸出塊將無(wú)法鎖定。
驗(yàn)證過(guò)程的下一步是檢查L(zhǎng)CD LVDS輸出。此階段提供關(guān)鍵狀態(tài)指示燈,用于確認(rèn)內(nèi)部時(shí)鐘是否被鎖定以及接口是否允許向顯示器傳輸下游數(shù)據(jù)。監(jiān)控這些信號(hào)有助于確保序列化視頻流正確生成并傳輸?shù)絃CD面板,并可以快速突出與時(shí)鐘或鏈路啟用相關(guān)的問(wèn)題。
在驗(yàn)證圖像處理路徑本身時(shí),首先要檢查的是MIPI CSI-2 RX子系統(tǒng)的視頻輸出。在這個(gè)階段,我們應(yīng)該觀察到每個(gè)時(shí)鐘4像素的10位原始輸出。如果相機(jī)配置或MIPI接口有問(wèn)題,通常會(huì)出現(xiàn)這種情況——要么是沒(méi)有視頻輸出,要么是視頻格式出乎意料。驗(yàn)證此輸出有助于確認(rèn)相機(jī)已正確初始化,并且MIPI鏈路已正確建立。
MIPI CSI-2 RX子系統(tǒng)的輸出輸入Demosaic模塊,該模塊將10位原始拜耳像素?cái)?shù)據(jù)轉(zhuǎn)換為30位RGB格式,每個(gè)顏色通道(紅、綠、藍(lán))有10位。由于管道繼續(xù)以每個(gè)時(shí)鐘4像素的速度運(yùn)行,因此Demosaic塊的最終AXI4-Stream輸出為120位寬(4像素× 30位),在提供完全重構(gòu)的顏色數(shù)據(jù)的同時(shí)保持高吞吐量。
液晶顯示器需要24位RGB像素,每個(gè)顏色通道8位。為了滿(mǎn)足這一要求,AXI子集轉(zhuǎn)換器將像素深度從每像素30位減少到24位。當(dāng)系統(tǒng)繼續(xù)以每個(gè)時(shí)鐘4像素的速度運(yùn)行時(shí),轉(zhuǎn)換器的輸出變?yōu)?6位寬(4像素× 24位),與下游視頻輸出路徑所期望的格式一致。
最后,在寫(xiě)入路徑上,我們可以觀察到AXI4事務(wù)將處理過(guò)的視頻幀寫(xiě)入DDR內(nèi)存。這些傳輸由VDMA發(fā)起,VDMA將AXI4- stream視頻管道連接到AXI4內(nèi)存映射接口,從而通過(guò)NoC實(shí)現(xiàn)幀數(shù)據(jù)的高效存儲(chǔ)。監(jiān)視此活動(dòng)可確保將幀緩沖區(qū)正確地寫(xiě)入內(nèi)存以供后續(xù)讀取和顯示。
讀取路徑從VDMA通過(guò)NoC發(fā)出AXI4讀取事務(wù)開(kāi)始,以便從DDR內(nèi)存檢索視頻幀。這些事務(wù)將存儲(chǔ)的幀數(shù)據(jù)移回axis4 - stream域中,在那里它可以通過(guò)管道的其余部分流向顯示。觀察這些AXI4讀取可以確認(rèn)內(nèi)存訪(fǎng)問(wèn)正常工作,并且正在與視頻輸出時(shí)間同步獲取幀。
圖像處理管道的最后一個(gè)元素是來(lái)自VDMA的AXI4-Stream輸出,它每個(gè)時(shí)鐘提供一個(gè)像素。該流被送入AXI4-Stream to Video Out IP塊,在那里它與視頻定時(shí)信號(hào)同步并準(zhǔn)備顯示。這種切換標(biāo)志著從基于內(nèi)存的緩沖到實(shí)時(shí)視頻輸出的過(guò)渡,完成了圖像管道。
通過(guò)觀察所有這些ila,我們獲得了對(duì)圖像處理管道內(nèi)部操作的寶貴見(jiàn)解,使我們能夠調(diào)查和查明可能出現(xiàn)的任何問(wèn)題。通常,這些問(wèn)題可以追溯到軟件配置錯(cuò)誤或單個(gè)IP塊上的錯(cuò)誤配置設(shè)置,這在早期的開(kāi)發(fā)和集成階段是可以預(yù)料到的。
當(dāng)然,對(duì)正確系統(tǒng)操作的最直接和最直觀的確認(rèn)是看到屏幕上顯示的實(shí)時(shí)圖像,但是當(dāng)事情沒(méi)有按計(jì)劃進(jìn)行時(shí),ILAs提供了所需的更深入的可視性。
總結(jié)
在這個(gè)項(xiàng)目中,我們探索了如何在Versal AI Edge設(shè)備上構(gòu)建一個(gè)簡(jiǎn)單的圖像處理管道并驗(yàn)證其功能。在繼續(xù)開(kāi)發(fā)應(yīng)用程序及其算法的高級(jí)方面時(shí),建立這個(gè)基礎(chǔ)管道可以顯著降低技術(shù)風(fēng)險(xiǎn)。
通過(guò)利用集成邏輯分析儀(ILAs),我們能夠觀察和驗(yàn)證設(shè)計(jì)中的關(guān)鍵點(diǎn),確保每個(gè)階段的行為都符合預(yù)期。這種實(shí)時(shí)可見(jiàn)性使我們能夠快速有效地識(shí)別在集成或開(kāi)發(fā)過(guò)程中可能出現(xiàn)的任何問(wèn)題的根本原因,從而導(dǎo)致更順暢、更可靠的開(kāi)發(fā)過(guò)程。
ChipScope及其集成邏輯分析儀是開(kāi)發(fā)人員可以快速輕松地調(diào)試應(yīng)用程序的重要元素。
本文編譯自hackster.io