基于ZYNQ的CameraLink圖像采集與邊緣檢測(cè)開(kāi)發(fā)詳解
1.案例說(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)。
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工程如下圖所示。
Base模式
點(diǎn)擊Address Editor選項(xiàng),可以看到IP核分配的地址,在PS端可以通過(guò)配置這些地址(寄存器)來(lái)控制IP核。
5.案例演示
實(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
Base模式
基于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ù)。可以看到AXI 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ī)
Base模式
腳本說(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;邊緣為黑色
ARM 嵌入式 FPGA
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。