基于ZYNQ的CameraLink图像采集与边缘检测开发详解

举报
tronlong小分队 发表于 2020/09/17 10:02:12 2020/09/17
【摘要】 1.案例说明PL端接入CameraLink相机,通过Base模式采集图像(1280*1024),然后通过VDMA缓存到PS端DDR。使用AXI4-Stream Switch IP核将图像复分成两路,一路用于边缘检测处理(Sobel算法),另一路直接回显。利用Video Mixer IP核将图像叠加,通过HDMI输出原始图像或者算法处理后的图像。本案例支持CameraLink Base/Ful...

1.案例说明

  1. PL端接入CameraLink相机,通过Base模式采集图像(1280*1024),然后通过VDMA缓存到PS端DDR。

  2. 使用AXI4-Stream Switch IP核将图像复分成两路,一路用于边缘检测处理(Sobel算法),另一路直接回显。

  3. 利用Video Mixer IP核将图像叠加,通过HDMI输出原始图像或者算法处理后的图像。本案例支持CameraLink Base/Full模式、彩色/黑白相机。

此开发详解基于创龙ZYNQ Z-7045/Z-7100评估板TLZ7xH-EVM展开。


2.案例框图



3.申请IP核license

本开发案例使用的Video Mixer和Chroma Resampler IP核,需要到官网下载IP核免费license,否则将无法通过TcL脚本生成Vivado工程。

请参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)用户手册《Xilinx Vivado 2017.4及License安装教程》文档,导入IP核。


成功导入后,点击View License Status可以查看新添加的IP核license如下图。



4.Vivado工程说明

参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)《基于TcL脚本生成Vivado工程及编译》文档,使用TcL脚本生成Vivado工程。

(1)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z100的Vivado工程:

Vivado# vivado -mode batch -source tl_cameralink_edge_display_project.tcl  -tclargs tlz7xh-evm  xc7z100ffg900-2

(2)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z045的Vivado工程:

Vivado# vivado -mode batch -source tl_cameralink_display_project.tcl  -tclargs tlz7xh-evm  xc7z045ffg900-2

进入Vivado工程所在的runs路径,双击.xpr文件打开工程。


点击"IP INTEGRATOR -> Open Block Design",打开Vivado工程如下图所示。

Base模式


点击Address Editor选项,可以看到IP核分配的地址,在PS端可以通过配置这些地址(寄存器)来控制IP核。



5.案例演示

实验硬件说明

CameraLink相机参考型号:

  1. 彩色RS-A5241-CC107-S00,支持Full/Base,分辨率2560*2048,帧率107Hz

  2. 黑白RS-A5241-CM107-S00,支持Full/Base,分辨率2560*2048,帧率107Hz

参考下表和图将相机接到评估板CameraLink接口,显示器接到HDMI OUT接口。


模式

接口(相机-评估板)

Base

CL0-CON18


Base模式


基于Linux系统测试

评估板上电启动进入文件系统,执行如下指令新建一个"/lib/firmware"文件夹。将由Vivado工程编译生成的xxx.bin文件传送到评估板文件系统的"/lib/firmware/"目录下,并重命名为system_wrapper.bin。

参考创龙TLZ7xH-EVM评估板(Z-7045/Z-7100)用户手册《生成PL设备树及动态加载PL程序和设备树》文档,生成设备树,然后将编译好的dtbo文件拷贝到文件系统"lib/firmware"目录下。

Target# mkdir -p /lib/firmware/



HDMI OUT芯片接的是PS端的I2C,需要加载PS端设备树,加载成功后如下图所示。

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端程序和设备树。可以看到AXI UART对应的节点为/dev/ttyUL1。

Target# mkdir /configfs/device-tree/overlays/cameralink

Target# echo -n "pl.dtbo" > /configfs/device-tree/overlays/cameralink/path



将例程image目录下的脚本拷贝到文件系统,执行脚本进行配置,即可在显示器看到相机采集的视频。

Target# ./camera_init.sh base //初始化CameraLink相机

Base模式


脚本说明:


Target# ./sil9022_i2c_1080p.sh //初始化HDMI OUT

Target# ./axi_vdma_cameralink.sh //初始化VDMA

Target# ./switch_video.sh 1 //配置AXI4-Stream Switch IP核,参数1为原始图像

Target# ./mixer_init.sh 1 //初始化Video Mixer IP核,参数1为原始图像




Target# ./sobel_filter_init.sh //初始化Image_filter IP核

Target# ./mixer_init.sh 2 && ./switch_video.sh 2 //切换到算法处理后的图像



对于RS-A5241的相机,Base模式下,1280*1024的分辨率状态下,图像帧率有120+帧,所以图像曝光短,图像较暗,增大Image_filter IP的阈值可以获得更好的效果。

Target# devmem 0x43c000b4 w 0xff //设置高阈值为0xff

Target# devmem 0x43c000bc w 0xa0 //设置低阈值为0xa0



设置颜色反转:

Target# devmem 0x43c000c4 w 1  //0xc4寄存器设置为1,边缘为白色,若为0;边缘为黑色



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。