一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA 大神 Adam Taylor 使用 ALINX VD100(AMD Versal系列)開發(fā)平臺實現(xiàn)圖像處理

FPGA技術(shù)專欄 ? 來源:FPGA技術(shù)專欄 ? 作者:FPGA技術(shù)專欄 ? 2025-05-16 09:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本篇文章來自 FPGA 大神、Ardiuvo & Hackster.IO 知名博主 Adam Taylor。在這里感謝 Adam Taylor 對 ALINX 產(chǎn)品的關(guān)注與測試。為了讓文章更易閱讀,我們在原文的基礎(chǔ)上作了一些靈活的調(diào)整,包括對一些專業(yè)名詞進行了補充解釋,便于初學(xué)者快速理解。原文鏈接已貼在文章底部。歡迎大家在評論區(qū)友好互動。


最近,我在辦公室里搞了一塊ALINX VD100。



這是一塊基于AMD Versal Edge AI平臺的開發(fā)板,功能特別強大,可以用來做圖像處理、人工智能等各種高階應(yīng)用。


為了方便隨時開發(fā),我把它連到了公司局域網(wǎng),遠程就能連接,由此開始了我的折騰之旅。


這次,我最想探索的是:怎么在這塊板子上跑圖像處理的應(yīng)用。


VD100不僅帶了兩個 MIPI 攝像頭接口,還能直接連上LCD屏幕,基本滿足了圖像應(yīng)用開發(fā)的需求。


第一步:讓屏幕先亮起來!


搞攝像頭太復(fù)雜,我決定先從屏幕入手——先通過測試圖案生成器(Test Pattern Generator)驗證 LCD 屏幕圖像顯示鏈路的有效性。


ALINX VD100開發(fā)板支持的 LCD 屏幕,分辨率是1280×720(WXGA 標(biāo)準(zhǔn))


數(shù)據(jù)傳輸采用的是VESA 標(biāo)準(zhǔn)的 LVDS 接口。


這里稍微解釋一下:

LVDS(低壓差分信號)是一種高速又抗干擾的數(shù)據(jù)傳輸方式,特別適合屏幕傳輸高速畫面。

VESA 和 JEIDA 是常見的兩種 LVDS 傳輸標(biāo)準(zhǔn),咱們用的是 VESA。VESA 更國際通用,JEIDA 常見于日本廠商。


在 VESA 標(biāo)準(zhǔn)下使用 RG888 格式時,屏幕的每一幀圖像數(shù)據(jù)和控制信號(如同步信號 hsync、vsync)會被打包進 4 條數(shù)據(jù)通道里,同時還有第 5 條通道專門傳時鐘(Clock),方便接收端正確還原數(shù)據(jù)。


wKgZPGgmmPOAY4ghAAAjOE6CVmI04.webp


每次時鐘跳動時,每條數(shù)據(jù)通道都會同步傳7 位數(shù)據(jù)。


聽起來有點復(fù)雜?簡單說就是:用 4+1 條小路,高速搬運屏幕畫面。


開發(fā)流程:搭建系統(tǒng)設(shè)計


為了讓板子順利傳屏幕數(shù)據(jù),我們需要在 Vivado(AMD/Xilinx 的開發(fā)工具)里做一套設(shè)計,包括:


CIPS
→ 配置 VD100 平臺上的 V100 SoM。

NOC
→ 配置 DDRMC,并開兩條 MAXI 輸出,提供數(shù)據(jù)存取支持。

視頻測試圖生成器 (Video Test Pattern Generator, TPG)
→ 通過 AXI Lite 總線連接到 NOC,生成標(biāo)準(zhǔn)圖像(比如彩條、棋盤格)。

視頻時序生成器 (Video Timing Controller, VTC)
→ 通過 AXI Lite 總線連接到 NOC,生成 LCD 顯示需要的同步信號(如 hsync、vsync)。

AXI4-Stream to Video Out
→ 與上述兩個生成器相連,把測試圖和時序信息組織成并行視頻流(RGB888格式)。

LCD_LVDS IP核
→ 把并行視頻信號轉(zhuǎn)成符合 LVDS 規(guī)范的數(shù)據(jù)流。

Advanced IO Wizard
→ 負責(zé)真正的串行化操作,把數(shù)據(jù)以 LVDS 標(biāo)準(zhǔn)發(fā)出去(包括 4 路數(shù)據(jù)+ 1 路時鐘)。


最終 LCD 屏幕接收到 LVDS 信號并顯示圖像。


這套設(shè)計(可以在我的 GitHub 上找到)如下所示:


wKgZO2gmmPSASNduAAB2nuH_aHI71.webp


通過這個系統(tǒng),我們可以使用 CIPS 內(nèi)置的處理器來控制測試圖案,從而驗證各顏色通道是否正常。


設(shè)置和驅(qū)動 LCD 顯示器的 CIPS 端代碼也非常簡單,如下所示:

#include 
#include "platform.h"
#include "xil_printf.h"
#include "xvtc.h"
#include "xparameters.h"
#include "xv_tpg.h"
#include "xvidc.h"
#include"vga.h"

XV_tpg      tpg;
XVtc	    VtcInst;
VideoMode   video;
XVtc_Config *vtc_config ;

int main()
{
    XVtc_SourceSelect SourceSelect;
    XVtc_Timing vtcTiming;
    u32 height,width,status;
    init_platform();

    print("Setting up Timingnr");
    vtc_config = XVtc_LookupConfig(XPAR_XVTC_0_BASEADDR);        
    XVtc_CfgInitialize(&VtcInst,vtc_config ,XPAR_XVTC_0_BASEADDR);
    
    print("Setting up Videonr");
    video = VMODE_1280x720 ;
	vtcTiming.HActiveVideo = video.width;	
	vtcTiming.HFrontPorch = video.hps - video.width;	
	vtcTiming.HSyncWidth = video.hpe - video.hps;		
	vtcTiming.HBackPorch = video.hmax - video.hpe + 1;	
	vtcTiming.HSyncPolarity = video.hpol;	
	vtcTiming.VActiveVideo = video.height;	
	vtcTiming.V0FrontPorch = video.vps - video.height;	
	vtcTiming.V0SyncWidth = video.vpe - video.vps;	
	vtcTiming.V0BackPorch = video.vmax - video.vpe + 1;;	
	vtcTiming.V1FrontPorch = video.vps - video.height;	
	vtcTiming.V1SyncWidth = video.vpe - video.vps;	
	vtcTiming.V1BackPorch = video.vmax - video.vpe + 1;
	vtcTiming.VSyncPolarity = video.vpol;	
	vtcTiming.Interlaced = 0;

    print("Setting up TPGnr");
        
    	XV_tpg_Initialize(&tpg,XPAR_XV_TPG_0_BASEADDR );
    	status = XV_tpg_IsIdle(&tpg);
    	XV_tpg_Set_height(&tpg, (u32) video.height);
	XV_tpg_Set_width(&tpg, (u32) video.width);
	height = XV_tpg_Get_height(&tpg);
	width = XV_tpg_Get_width(&tpg);
	XV_tpg_Set_colorFormat(&tpg,XVIDC_CSF_RGB);
    	XV_tpg_Set_bckgndId(&tpg,XTPG_BKGND_TARTAN_COLOR_BARS);
	XV_tpg_Set_maskId(&tpg, 0x0);
	XV_tpg_Set_motionSpeed(&tpg, 0x4);
    	XV_tpg_EnableAutoRestart(&tpg);
	XV_tpg_Start(&tpg);
    
    print("Setting up Sourcenr");

    memset((void *)&SourceSelect, 0, sizeof(XVtc_SourceSelect));
	SourceSelect.VBlankPolSrc = 1;
	SourceSelect.VSyncPolSrc = 1;
	SourceSelect.HBlankPolSrc = 1;
	SourceSelect.HSyncPolSrc = 1;
	SourceSelect.ActiveVideoPolSrc = 1;
	SourceSelect.ActiveChromaPolSrc= 1;
	SourceSelect.VChromaSrc = 1;
	SourceSelect.VActiveSrc = 1;
	SourceSelect.VBackPorchSrc = 1;
	SourceSelect.VSyncSrc = 1;
	SourceSelect.VFrontPorchSrc = 1;
	SourceSelect.VTotalSrc = 1;
	SourceSelect.HActiveSrc = 1;
	SourceSelect.HBackPorchSrc = 1;
	SourceSelect.HSyncSrc = 1;
	SourceSelect.HFrontPorchSrc = 1;
	SourceSelect.HTotalSrc = 1;

    print("Run Timing Gennr");    
	
	XVtc_SetGeneratorTiming(&VtcInst, &vtcTiming);
	XVtc_SetSource(&VtcInst, &SourceSelect);
	XVtc_EnableGenerator(&VtcInst);
    XVtc_RegUpdateEnable(&VtcInst);
	XVtc_Enable(&VtcInst);

    while(1){

    };

    cleanup_platform();
    return 0;
}


LCD_LVDS 這個模塊,我是直接從 ALINX 的 GitHub 倉庫上下載的。


下載好后,把它加到 Vivado 里面,就能像拼積木一樣拖進設(shè)計里。

LCD_LVDS 下載鏈接:https://github.com/alinxalinx/VD100_2023.2/tree/master/Demo/course_s1


寫好所有程序后,我們讓開發(fā)板運行,屏幕上果然顯示出了測試圖案,色彩鮮明,說明各個顏色通道都正常了。開發(fā)板和屏幕之間的溝通,算是正式打通了!


wKgZPGgmmPSAAYUWAABx7CtEwZo47.webp

wKgZO2gmmPSARyVfAACVymrdhl078.webp


不過,這里面有個很有意思的事情。


Advanced IO Wizard 這個模塊,默認是按 8 位一組來打包數(shù)據(jù)發(fā)出去的。


而我們的 VESA LVDS 傳輸,要求 7 位一組。這咋辦?


我用到了一個叫做 Gearbox 的小模塊,把 7 位數(shù)據(jù)轉(zhuǎn)換成 4 位數(shù)據(jù)輸出。


然后,用 Advanced IO Wizard 把 4 位數(shù)據(jù)高速串行發(fā)出去。


這樣就實現(xiàn)了 7 位序列化,雖然中間多了一步變換,但整體還是很高效的。


不過,其實只要手動配置一下,Advanced IO Wizard 也是可以支持直接 7 位打包發(fā)送的,只是這次參考了 AMD 的官方應(yīng)用筆記(參考代碼叫 tx_piso_7to1),所以先用了 Gearbox 的方式。


未來有機會的話,我想試著優(yōu)化一下,直接用 7 位串行模式,把系統(tǒng)做得更簡潔高效!


接下來要做的


現(xiàn)在圖像輸出環(huán)節(jié)已經(jīng)搞定了,接下來就是更刺激的前端部分:


通過 MIPI 接口接入攝像頭,把真實拍到的圖像,實時顯示到屏幕上。


真正的圖像處理任務(wù),馬上就要開始啦!


(未完待續(xù))


審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1646

    文章

    22054

    瀏覽量

    618813
  • amd
    amd
    +關(guān)注

    關(guān)注

    25

    文章

    5589

    瀏覽量

    136413
  • 圖像處理
    +關(guān)注

    關(guān)注

    27

    文章

    1329

    瀏覽量

    58088
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺Versal 介紹(2)

    ALINX 技術(shù)分享】AMD Versal AI Edge 自適應(yīng)計算加速平臺Versal 介紹,以及
    的頭像 發(fā)表于 03-07 16:03 ?1774次閱讀
    【<b class='flag-5'>ALINX</b> 技術(shù)分享】<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b> AI Edge 自適應(yīng)計算加速<b class='flag-5'>平臺</b>之 <b class='flag-5'>Versal</b> 介紹(2)

    在Vivado中構(gòu)建AMD Versal可擴展嵌入式平臺示例設(shè)計流程

    為了應(yīng)對無線波束形成、大規(guī)模計算和機器學(xué)習(xí)推斷等新一代應(yīng)用需求的非線性增長,AMD 開發(fā)了一項全新的創(chuàng)新處理技術(shù) AI 引擎,片內(nèi)集成該AI Engine的FPGA
    的頭像 發(fā)表于 04-09 15:14 ?2126次閱讀
    在Vivado中構(gòu)建<b class='flag-5'>AMD</b> <b class='flag-5'>Versal</b>可擴展嵌入式<b class='flag-5'>平臺</b>示例設(shè)計流程

    使用ALINX VD100開發(fā)板實現(xiàn)圖像處理

    這是一塊基于 AMD Versal Edge AI 平臺開發(fā)板,功能特別強大,可以用來做圖像處理
    的頭像 發(fā)表于 05-12 09:23 ?444次閱讀
    使用<b class='flag-5'>ALINX</b> <b class='flag-5'>VD100</b><b class='flag-5'>開發(fā)板實現(xiàn)</b><b class='flag-5'>圖像</b><b class='flag-5'>處理</b>

    基于DSP和FPGA的通用圖像處理平臺設(shè)計

    設(shè)計一種基于DSP和FPGA架構(gòu)的通用圖像處理平臺,運用FPGA實現(xiàn)
    發(fā)表于 12-25 17:06 ?62次下載

    基于DSP和FPGA的通用圖像處理平臺設(shè)計

    基于DSP和FPGA的通用圖像處理平臺設(shè)計 摘要:設(shè)計一種基于DSP和FPGA架構(gòu)的通用圖像
    發(fā)表于 02-01 11:10 ?1598次閱讀
    基于DSP和<b class='flag-5'>FPGA</b>的通用<b class='flag-5'>圖像</b><b class='flag-5'>處理</b><b class='flag-5'>平臺</b>設(shè)計

    Adam Taylor玩轉(zhuǎn)MicroZed系列第80部分

    Adam Taylor玩轉(zhuǎn)MicroZed系列的前期部分中,我們介紹了IP棧的概念。(見Adam Taylor玩轉(zhuǎn)MicroZed
    發(fā)表于 01-13 11:17 ?1296次閱讀
    <b class='flag-5'>Adam</b> <b class='flag-5'>Taylor</b>玩轉(zhuǎn)MicroZed<b class='flag-5'>系列</b>第80部分

    Adam Taylor玩轉(zhuǎn)MicroZed系列,第79部分

    By Adam Taylor 在本系列博客的前兩部分中,我們研究了帶有Zynq SoC PS(處理器系統(tǒng))的以太網(wǎng)MAC(介質(zhì)訪問控制層),包括深入探討了一個MAC使用范例。以太網(wǎng)MA
    發(fā)表于 01-13 11:24 ?929次閱讀

    有哪些小技巧可以改進圖像處理開發(fā)

    Adam Taylor討論了使用Zynq?和Zynq UltraScale +?SoC開發(fā)圖像處理應(yīng)用程序時學(xué)到的一些技巧
    的頭像 發(fā)表于 11-30 06:37 ?2433次閱讀

    ALINX VERSAL SOM產(chǎn)品介紹

    近日,2024 AMD Adaptive Computing Summit(AMD ACS)在深圳舉行,芯驛電子應(yīng)邀出席作主題分享:《ALINX 基于 Versal
    的頭像 發(fā)表于 08-05 10:33 ?1226次閱讀

    ALINX FPGA+GPU異架構(gòu)視頻圖像處理開發(fā)平臺介紹

    Alinx 最新發(fā)布的新品 Z19-M 是一款創(chuàng)新的 FPGA+GPU 異構(gòu)架構(gòu)視頻圖像處理開發(fā)平臺
    的頭像 發(fā)表于 08-29 14:43 ?2155次閱讀

    AMD推出第二代Versal Premium系列

    近日,AMD(超威,納斯達克股票代碼:AMD )今日宣布推出第二代 AMD Versal Premium 系列,這款自適應(yīng) SoC
    的頭像 發(fā)表于 11-13 09:27 ?933次閱讀

    ALINX 發(fā)布 AXVU13P:AMD Virtex UltraScale+ 高端 FPGA PCle 3.0 綜合開發(fā)平臺

    ALINX 正式發(fā)布 AMD Virtex UltraScale+ 系列 FPGA PCIe 3.0 綜合開發(fā)
    的頭像 發(fā)表于 12-20 16:46 ?839次閱讀
    <b class='flag-5'>ALINX</b> 發(fā)布 AXVU13P:<b class='flag-5'>AMD</b> Virtex UltraScale+ 高端 <b class='flag-5'>FPGA</b> PCle 3.0 綜合<b class='flag-5'>開發(fā)</b><b class='flag-5'>平臺</b>

    面向AI與機器學(xué)習(xí)應(yīng)用的開發(fā)平臺 AMD/Xilinx Versal? AI Edge VEK280

    AMD/Xilinx Versal? AI Edge VEK280評估套件是一款面向AI與機器學(xué)習(xí)應(yīng)用的開發(fā)平臺,專為邊緣計算場景優(yōu)化設(shè)計。以下從核心配置、技術(shù)特性、應(yīng)用場景及
    的頭像 發(fā)表于 04-11 18:33 ?1336次閱讀
    面向AI與機器學(xué)習(xí)應(yīng)用的<b class='flag-5'>開發(fā)</b><b class='flag-5'>平臺</b> <b class='flag-5'>AMD</b>/Xilinx <b class='flag-5'>Versal</b>? AI Edge VEK280

    高性能緊湊型 RFSoC FPGA 開發(fā)平臺 AXW22,重塑射頻開發(fā)體驗

    如果您正在煩惱如何在 有限的物理空間和預(yù)算內(nèi),依然實現(xiàn)卓越的射頻帶寬與處理能力 ,ALINX 基于 AMD RFSoC FPGA
    的頭像 發(fā)表于 06-24 10:24 ?215次閱讀
    高性能緊湊型 RFSoC <b class='flag-5'>FPGA</b> <b class='flag-5'>開發(fā)</b><b class='flag-5'>平臺</b> AXW22,重塑射頻<b class='flag-5'>開發(fā)</b>體驗

    ALINX AMD RFSoC射頻開發(fā)板選型指南

    ALINX 作為 FPGA 開發(fā)板領(lǐng)域領(lǐng)先供應(yīng)商,RFSoC 系列開發(fā)板精準(zhǔn)定位于雷達通信、5G 基站、衛(wèi)星通信、測試測量等對性能要求嚴(yán)苛的
    的頭像 發(fā)表于 07-11 10:03 ?320次閱讀
    <b class='flag-5'>ALINX</b> <b class='flag-5'>AMD</b> RFSoC射頻<b class='flag-5'>開發(fā)</b>板選型指南