電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 2390|回復(fù): 0
收起左側(cè)

基于ZYNQ的CameraLink圖像采集與邊緣檢測(cè)開(kāi)發(fā)詳解

[復(fù)制鏈接]

678

主題

902

帖子

8293

積分

高級(jí)會(huì)員

Rank: 5Rank: 5

積分
8293
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-5-11 16:10:02 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  • 案例說(shuō)明
  • PL端接入CameraLink相機(jī),通過(guò)Base模式采集圖像(1280*1024),然后通過(guò)VDMA緩存到PS端DDR。
  • 使用AXI4-Stream Switch IP核將圖像復(fù)分成兩路,一路用于邊緣檢測(cè)處理(Sobel算法),另一路直接回顯。
  • 利用Video Mixer IP核將圖像疊加,通過(guò)HDMI輸出原始圖像或者算法處理后的圖像。本案例支持CameraLink Base/Full模式、彩色/黑白相機(jī)。
此開(kāi)發(fā)詳解基于創(chuàng)龍ZYNQ Z-7045/Z-7100評(píng)估板TLZ7xH-EVM展開(kāi)。
增加TLZ7xH-EVM視頻播放框
2.案例框圖
3.申請(qǐng)IP核license
本開(kāi)發(fā)案例使用的Video Mixer和Chroma Resampler IP核,需要到官網(wǎng)下載IP核免費(fèi)license,否則將無(wú)法通過(guò)TcL腳本生成Vivado工程。
請(qǐng)參照創(chuàng)龍TLZ7xH-EVM評(píng)估板(ZYNQ Z-7045/Z-7100)用戶手冊(cè)《Xilinx Vivado 2017.4及License安裝教程》文檔,導(dǎo)入IP核。
成功導(dǎo)入后,點(diǎn)擊View License Status可以查看新添加的IP核license如下圖。
4.Vivado工程說(shuō)明
參照創(chuàng)龍TLZ7xH-EVM評(píng)估板(ZYNQ Z-7045/Z-7100)《基于TcL腳本生成Vivado工程及編譯》文檔,使用TcL腳本生成Vivado工程。
(1)生成評(píng)估板TLZ7xH-EVM、ZYNQ型號(hào)為xc7z100的Vivado工程:
Vivado# vivado -mode batch -source tl_cameralink_edge_display_project.tcl  -tclargs tlz7xh-evm  xc7z100ffg900-2
(2)生成評(píng)估板TLZ7xH-EVM、ZYNQ型號(hào)為xc7z045的Vivado工程:
Vivado# vivado -mode batch -source tl_cameralink_display_project.tcl  -tclargs tlz7xh-evm  xc7z045ffg900-2
進(jìn)入Vivado工程所在的runs路徑,雙擊.xpr文件打開(kāi)工程。
點(diǎn)擊"IP INTEGRATOR -> Open Block Design",打開(kāi)Vivado工程如下圖所示。
點(diǎn)擊Address Editor選項(xiàng),可以看到IP核分配的地址,在PS端可以通過(guò)配置這些地址(寄存器)來(lái)控制IP核。
5.IP核與模塊簡(jiǎn)介
lvds_n_x_1to7_sdr_rx模塊
源碼路徑:hw\src\hdl\lvds_n_x_1to7_sdr_rx.v
模塊實(shí)現(xiàn)了將差分輸入數(shù)據(jù)轉(zhuǎn)化成并行數(shù)據(jù),參考時(shí)鐘delay_refclk_in需接200MHz或者300MHz,本例程使用PS端的200MHz的FCLK1。雙擊打開(kāi)配置界面。參數(shù)N表示通道數(shù),X表示每個(gè)通道的數(shù)據(jù)差分對(duì)數(shù)量。
根據(jù)CameraLink V2.0標(biāo)準(zhǔn):
  • Lite/Base模式:?jiǎn)瓮ǖ,每通道?shù)據(jù)差分對(duì)為4對(duì),需要1個(gè)連接器。
  • Medium模式:雙通道,每通道數(shù)據(jù)差分對(duì)為4對(duì),需要2個(gè)連接器。
  • Full/80bit模式:三通道,每通道數(shù)據(jù)差分對(duì)為4對(duì),需要2個(gè)連接器。
配置N=1表示使用Base模式,N=2為Medium模式,N=3為Full模式。X固定為4。更詳細(xì)的說(shuō)明請(qǐng)查閱文檔xapp585-lvds-source-synch-serdes-clock-multiplication.pdf。
cameralink_bit_allocation_rx模塊
源碼路徑:hw\src\hdl\cameralink_bit_allocation_rx.v
功能:將lvds_n_x_1to7_sdr_rx模塊Serdes串并轉(zhuǎn)換出來(lái)的數(shù)據(jù)進(jìn)行重組,分離出行同步信號(hào)、場(chǎng)同步型號(hào)、數(shù)據(jù)有效信號(hào)和每個(gè)像素?cái)?shù)據(jù)。參數(shù)N表示通道數(shù)量和lvds_n_x_1to7_sdr_rx模塊功能一致。
  • N=1,Base模式,輸出端PortA、PortB、PortC有效。
  • N=2,Meduim模式,輸出端PortA、PortB、PortC、PortD、PortE、PortF有效。
  • N=3,F(xiàn)ull模式,輸出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。
關(guān)鍵代碼解釋:
  • data_in的數(shù)據(jù)排列格式(lvds_n_x_1to7_sdr_rx模塊串轉(zhuǎn)并后的數(shù)據(jù))。
lvds_n_x_1to7_sdr_rx模塊將每一對(duì)數(shù)據(jù)差分對(duì)轉(zhuǎn)換后的數(shù)據(jù)如下(XAPP585文檔):

CameraLink(LVDS視頻)協(xié)議標(biāo)準(zhǔn)如下圖所示。

結(jié)合CameraLink(LVDS視頻)協(xié)議標(biāo)準(zhǔn),得出4對(duì)數(shù)據(jù)通道轉(zhuǎn)換后的數(shù)據(jù)在data_in數(shù)據(jù)的排列順序如下。

2.分離出行場(chǎng)同步信號(hào)、數(shù)據(jù)有效信號(hào)和像素?cái)?shù)據(jù)。
根據(jù)CameraLink協(xié)議:
  • RX24對(duì)應(yīng)行有效信號(hào)LVAL(行同步信號(hào))。
  • RX25對(duì)應(yīng)幀有效信號(hào)FVAL(場(chǎng)同步信號(hào))。
  • RX26對(duì)應(yīng)數(shù)據(jù)有效信號(hào)DVAL。
其他對(duì)應(yīng)關(guān)系如下圖:
因此,根據(jù)上圖即可將各信號(hào)分離出來(lái)。
Video In to AXI4-Stream IP
Video In to AXI4-Stream IP核配置為Mono/Sensor視頻格式,Base模式2 pixels per clk,每個(gè)色彩數(shù)據(jù)位寬為8bits。關(guān)于IP核的詳細(xì)技術(shù)說(shuō)明可以查看《pg043_v_vid_in_axi4s.pdf》文檔。

VDMA(AXI Video Direct Memory Access) IP
VDMA IP核技術(shù)說(shuō)明文檔為《pg020_axi_vdma.pdf》。S2MM是將視頻流傳到DDR中,MM2S是從DDR中把圖像數(shù)據(jù)傳輸出去。配置如下圖所示。

配置VDMA為讀寫(xiě)跟隨模式。

AXI4-Stream Subset Converter IP
實(shí)現(xiàn)功能:Y轉(zhuǎn)RGB

AXI4-Stream Switch IP
實(shí)現(xiàn)功能:將圖像復(fù)分成兩路,一路用于邊緣檢測(cè)處理(Sobel算法),另一路直接回顯。
YCrCb to RGB Color-Space Converter IP
實(shí)現(xiàn)功能:RGB轉(zhuǎn)YCrCb444
Chrome Resampler IP
實(shí)現(xiàn)功能:YCbCr444轉(zhuǎn)YCbCr422,輸入24位YCbCr444數(shù)據(jù),輸出16位YCbCr422數(shù)據(jù)。
Image_filter IP
Image_filter IP核源碼是基于Xilinx的xapp1167的Sobel邊緣檢測(cè)算法例程,對(duì)應(yīng)的HLS源碼在FPGA-HLS-demos目錄下,技術(shù)說(shuō)明文檔為《ug925-zynq-zc702-base-trd.pdf》。


《ug925-zynq-zc702-base-trd.pdf》文檔附錄A:Register Description -> Sobel Filter Registers小節(jié)有相關(guān)寄存器說(shuō)明
  • 寄存器0x00:控制和狀態(tài)寄存器,可控制IP核的停止和啟動(dòng)
  • 寄存器0x14:設(shè)置圖像的行數(shù)(最大支持1920x1080)
  • 寄存器0x1c:設(shè)置圖像的列數(shù)
  • 寄存器0xb4:Sobel濾波的高閾值
  • 寄存器0xbc:Sobel濾波的低閾值
  • 寄存器0xc4:反轉(zhuǎn)Sobel濾波器的輸出(黑白反轉(zhuǎn))
寄存器的定義也可以可查看以下文件:ip_package/xilinx_com_hls_image_filter_1_0/drivers/image_filter_v1_0/src/ximage_filter_hw.h
Video Mixer IP
Video Mixer IP核可以對(duì)多路視頻進(jìn)行疊加輸出,為OSD IP的升級(jí)版,功能和OSD相似。本例程的作用為,將相機(jī)輸入的圖像,通過(guò)Mixer IP核疊加到1920*1080的視頻中,最終通過(guò)HDMI輸出顯示。需要通過(guò)PS端,配置寄存器使能Mixer。


AXI Uartlite IP
用于和CameraLink相機(jī)通信,PS端可通過(guò)該接口對(duì)CameraLink相機(jī)進(jìn)行配置(分辨率、Base/Full模式等功能)。具體說(shuō)明請(qǐng)參考pg142-axi-uartlite.pdf。
Video Timing Controller IP
Video Timing Controller IP核用于產(chǎn)生分辨率為1080P60的時(shí)序,用于HDMI輸出,關(guān)于IP核的詳細(xì)技術(shù)說(shuō)明可以查看《pg016_v_tc.pdf》文檔。雙擊Vivado工程v_tc IP核框圖。在彈出的界面,點(diǎn)擊"Default/Constant",可以看到已將Video Timing Controller IP核配置成1080P60的時(shí)序,如下圖所示。
AXI-Stream to video out IP
AXI-Stream to video out IP核配置視頻格式為RGB,1 pixels per clk,每個(gè)色彩數(shù)據(jù)位寬為8bits。關(guān)于IP核的詳細(xì)技術(shù)說(shuō)明可以查看《pg044_v_axis_vid_out.pdf》文檔。雙擊v_axi4s_vid_out IP核框圖,查看IP核具體配置如下圖。

Clocking Wizard IP
配置一路148.5MHz的時(shí)鐘,用于HDMI輸出。該時(shí)鐘對(duì)應(yīng)的是1080P60的像素時(shí)鐘。
若輸入其他分辨率的視頻,則需要修改VDMA IP核中圖像大小的配置、Video Timing Controller IP的時(shí)序和Clocking Wizard IP核輸出的像素時(shí)鐘。
6.案例演示
實(shí)驗(yàn)硬件說(shuō)明
CameraLink相機(jī)參考型號(hào):
  • 彩色RS-A5241-CC107-S00,支持Full/Base,分辨率2560*2048,幀率107Hz
  • 黑白R(shí)S-A5241-CM107-S00,支持Full/Base,分辨率2560*2048,幀率107Hz
參考下表和圖將相機(jī)接到評(píng)估板CameraLink接口,顯示器接到HDMI OUT接口。

模式
接口(相機(jī)-評(píng)估板)
Base
CL0-CON18
基于Linux系統(tǒng)測(cè)試
評(píng)估板上電啟動(dòng)進(jìn)入文件系統(tǒng),執(zhí)行如下指令新建一個(gè)"/lib/firmware"文件夾。將由Vivado工程編譯生成的xxx.bin文件傳送到評(píng)估板文件系統(tǒng)的"/lib/firmware/"目錄下,并重命名為system_wrapper.bin。
參考創(chuàng)龍TLZ7xH-EVM評(píng)估板(Z-7045/Z-7100)用戶手冊(cè)《生成PL設(shè)備樹(shù)及動(dòng)態(tài)加載PL程序和設(shè)備樹(shù)》文檔,生成設(shè)備樹(shù),然后將編譯好的dtbo文件拷貝到文件系統(tǒng)"lib/firmware"目錄下。
Target#       mkdir -p /lib/firmware/

HDMI OUT芯片接的是PS端的I2C,需要加載PS端設(shè)備樹(shù),加載成功后如下圖所示。
Target#          mkdir /configfs
Target# mount -t configfs configfs /configfs
Target# mkdir /configfs/device-tree/overlays/full
Target#        echo -n zynq-zc706-overlay.dtbo >  /configfs/device-tree/overlays/full/path
再加載PL端程序和設(shè)備樹(shù)?梢钥吹紸XI UART對(duì)應(yīng)的節(jié)點(diǎn)為/dev/ttyUL1。
Target# mkdir /configfs/device-tree/overlays/cameralink
Target#        echo -n "pl.dtbo" > /configfs/device-tree/overlays/cameralink/path
將例程image目錄下的腳本拷貝到文件系統(tǒng),執(zhí)行腳本進(jìn)行配置,即可在顯示器看到相機(jī)采集的視頻。
Target#        ./camera_init.sh base             //初始化CameraLink相機(jī)

腳本說(shuō)明:
Target#        ./sil9022_i2c_1080p.sh           //初始化HDMI OUT
Target#        ./axi_vdma_cameralink.sh                 //初始化VDMA
Target#        ./switch_video.sh 1          //配置AXI4-Stream Switch IP核,參數(shù)1為原始圖像
Target#        ./mixer_init.sh 1       //初始化Video Mixer IP核,參數(shù)1為原始圖像


Target#        ./sobel_filter_init.sh        //初始化Image_filter IP
Target#        ./mixer_init.sh 2 && ./switch_video.sh 2         //切換到算法處理后的圖像
對(duì)于RS-A5241的相機(jī),Base模式下,1280*1024的分辨率狀態(tài)下,圖像幀率有120+幀,所以圖像曝光短,圖像較暗,增大Image_filter IP的閾值可以獲得更好的效果。
Target#        devmem 0x43c000b4 w 0xff       //設(shè)置高閾值為0xff
Target#        devmem 0x43c000bc w 0xa0             //設(shè)置低閾值為0xa0
設(shè)置顏色反轉(zhuǎn):
Target#        devmem 0x43c000c4 w 1  //0xc4寄存器設(shè)置為1,邊緣為白色,若為0;邊緣為黑色


嵌入式DSP、ARM、FPGA多核技術(shù)開(kāi)發(fā),學(xué)習(xí)資料下載:http://site.tronlong.com/pfdownload

發(fā)表回復(fù)

本版積分規(guī)則


聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表