0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

YCqV_FPGA_EETre 来源:FPGA开发圈 2020-06-03 16:42 次阅读

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展开。

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.

IP核与模块简介

lvds_n_x_1to7_sdr_rx模块

源码路径:

hwsrchdllvds_n_x_1to7_sdr_rx.v

模块实现了将差分输入数据转化成并行数据,参考时钟delay_refclk_in需接200MHz或者300MHz,本例程使用PS端的200MHz的FCLK1。双击打开配置界面。参数N表示通道数,X表示每个通道的数据差分对数量。

根据CameraLink V2.0标准:

Lite/Base模式:单通道,每通道数据差分对为4对,需要1个连接器

Medium模式:双通道,每通道数据差分对为4对,需要2个连接器。

Full/80bit模式:三通道,每通道数据差分对为4对,需要2个连接器。

配置N=1表示使用Base模式,N=2为Medium模式,N=3为Full模式。X固定为4。更详细的说明请查阅文档xapp585-lvds-source-synch-serdes-clock-multiplication.pdf。

cameralink_bit_allocation_rx模块

源码路径:

hwsrchdlcameralink_bit_allocation_rx.v

功能:将lvds_n_x_1to7_sdr_rx模块Serdes串并转换出来的数据进行重组,分离出行同步信号、场同步型号、数据有效信号和每个像素数据。参数N表示通道数量和lvds_n_x_1to7_sdr_rx模块功能一致。

N=1,Base模式,输出端PortA、PortB、PortC有效。

N=2,Meduim模式,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。

N=3,Full模式,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。

关键代码解释:

(1) data_in的数据排列格式(lvds_n_x_1to7_sdr_rx模块串转并后的数据)。

lvds_n_x_1to7_sdr_rx模块将每一对数据差分对转换后的数据如下(XAPP585文档):

CameraLink(LVDS视频)协议标准如下图所示。

结合CameraLink(LVDS视频)协议标准,得出4对数据通道转换后的数据在data_in数据的排列顺序如下。

(2)分离出行场同步信号、数据有效信号和像素数据。

根据CameraLink协议:

RX24对应行有效信号LVAL(行同步信号)。

RX25对应帧有效信号FVAL(场同步信号)。

RX26对应数据有效信号DVAL。

其他对应关系如下图:

因此,根据上图即可将各信号分离出来。

Video In to AXI4-Stream IP核

Video In to AXI4-Stream IP核配置为Mono/Sensor视频格式,Base模式2 pixels per clk,每个色彩数据位宽为8bits。关于IP核的详细技术说明可以查看《pg043_v_vid_in_axi4s.pdf》文档。

VDMA(AXI Video Direct Memory Access) IP核

VDMA IP核技术说明文档为《pg020_axi_vdma.pdf》。S2MM是将视频流传到DDR中,MM2S是从DDR中把图像数据传输出去。配置如下图所示。

配置VDMA为读写跟随模式。

AXI4-StreamSubsetConverterIP核

实现功能:Y转RGB。

AXI4-Stream Switch IP核

实现功能:将图像复分成两路,一路用于边缘检测处理(Sobel算法),另一路直接回显。

YCrCbtoRGB Color-SpaceConverterIP核

实现功能:RGB转YCrCb444。

ChromeResamplerIP核

实现功能:YCbCr444转YCbCr422,输入24位YCbCr444数据,输出16位YCbCr422数据。

Image_filter IP核

Image_filter IP核源码是基于Xilinx的xapp1167的Sobel边缘检测算法例程,对应的HLS源码在FPGA-HLS-demos目录下,技术说明文档为《ug925-zynq-zc702-base-trd.pdf》。

《ug925-zynq-zc702-base-trd.pdf》文档附录A:Register Description -> Sobel Filter Registers小节有相关寄存器说明。

寄存器0x00:控制和状态寄存器,可控制IP核的停止和启动

寄存器0x14:设置图像的行数(最大支持1920x1080)

寄存器0x1c:设置图像的列数

寄存器0xb4:Sobel滤波的高阈值

寄存器0xbc:Sobel滤波的低阈值

寄存器0xc4:反转Sobel滤波器的输出(黑白反转)

寄存器的定义也可以可查看以下文件: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核可以对多路视频进行叠加输出,为OSD IP的升级版,功能和OSD相似。本例程的作用为,将相机输入的图像,通过Mixer IP核叠加到1920*1080的视频中,最终通过HDMI输出显示。需要通过PS端,配置寄存器使能Mixer。

AXI Uartlite IP核

用于和CameraLink相机通信,PS端可通过该接口对CameraLink相机进行配置(分辨率、Base/Full模式等功能)。具体说明请参考pg142-axi-uartlite.pdf。

Video Timing Controller IP核

Video Timing Controller IP核用于产生分辨率为1080P60的时序,用于HDMI输出,关于IP核的详细技术说明可以查看《pg016_v_tc.pdf》文档。双击Vivado工程v_tc IP核框图。在弹出的界面,点击"Default/Constant",可以看到已将Video Timing Controller IP核配置成1080P60的时序,如下图所示。

AXI-Streamto video out IP核

AXI-Stream to video out IP核配置视频格式为RGB,1 pixels per clk,每个色彩数据位宽为8bits。关于IP核的详细技术说明可以查看《pg044_v_axis_vid_out.pdf》文档。双击v_axi4s_vid_out IP核框图,查看IP核具体配置如下图。

Clocking Wizard IP核

配置一路148.5MHz的时钟,用于HDMI输出。该时钟对应的是1080P60的像素时钟。

若输入其他分辨率的视频,则需要修改VDMA IP核中图像大小的配置、Video Timing Controller IP的时序和Clocking Wizard IP核输出的像素时钟。

6.

案例演示

实验硬件说明

CameraLink相机参考型号:

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

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

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

基于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;边缘为黑色

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 图像
    +关注

    关注

    2

    文章

    1086

    浏览量

    40496
  • 边缘检测
    +关注

    关注

    0

    文章

    92

    浏览量

    18223
  • Zynq
    +关注

    关注

    10

    文章

    610

    浏览量

    47207

原文标题:基于ZYNQ的CameraLink图像采集与边缘检测开发详解

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用图像采集

    在现代数字技术的不断发展中,图像采集卡作为一种重要的硬件设备,越来越普遍地应用于各类领域,包括视频监控、医疗影像、影视制作及游戏直播等。图像采集卡通过将模拟信号转换为数字信号,使得计算
    的头像 发表于 12-13 15:03 161次阅读
    如何使用<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡

    ZYNQ 7035/7045开发板原理图

    ZYNQ 7035/7045开发板原理图
    发表于 12-05 13:46 0次下载

    采集采集视频数据通过cameralink传输到显示屏上,图像却分块,各位大佬们遇到过吗?谢谢!

    模拟的视频数据通过adc (4路)送到FPGA,直接将数据通过cameralink线送到显示屏幕上显示,图像却分块。我用摄像头的datavalid信号的上升沿作为视频帧的起始位置,可能数据经过adc
    发表于 11-04 21:59

    基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图

    以下是基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件设计方案: 一、总体架构 图像采集:使用合适的
    发表于 09-25 15:25

    图像采集卡:增强视觉数据采集

    图像采集卡介绍:在视觉数据采集领域,图像采集卡在捕获和处理来自各种来源的图像或视频方面发挥着关键
    的头像 发表于 09-24 11:06 320次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡:增强视觉数据<b class='flag-5'>采集</b>

    基于VDMA的远程图像采集系统参考设计

    本文参考设计基于 AMD ZYNQ 7000 Device, 使用 VDMA 做原始图像采集系统,在 Petalinux 下做服务器,通过 Socket 发送图像至 Windows 或
    的头像 发表于 09-18 10:11 465次阅读
    基于VDMA的远程<b class='flag-5'>图像</b><b class='flag-5'>采集</b>系统参考设计

    工业相机该选择哪种图像采集卡?

    在选择与工业相机匹配的图像采集卡时,需要考虑多个因素,包括相机的分辨率、接口类型、传输速度以及采集卡的兼容性、稳定性、性能等,具体选择需要根据实际的应用场景和需求来确定。1.了解工业相机的特点分辨率
    的头像 发表于 08-20 15:49 385次阅读
    工业相机该选择哪种<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡?

    DSP国产教学实验箱_实验案例_操作教程:5-11 边缘检测

    一、实验目的 学习Canny边缘检测的原理,掌握图像的读取方法,并实现边缘检测。 二、实验原理 边缘
    发表于 07-19 10:38

    图像边缘检测系统的设计流程

    图像边缘检测系统的设计流程是一个涉及多个步骤的复杂过程,它旨在从图像中提取出重要的结构信息,如边界、轮廓等。这些边缘信息对于
    的头像 发表于 07-17 16:39 368次阅读

    图像识别算法都有哪些方法

    传统方法和基于深度学习的方法。 传统图像识别算法 1.1 边缘检测 边缘检测图像识别的基础,它
    的头像 发表于 07-16 11:14 5678次阅读

    opencv图像识别有什么算法

    图像识别算法: 边缘检测边缘检测图像识别中的基本步骤之一,用于识别
    的头像 发表于 07-16 10:40 1090次阅读

    图像采集卡的选择技巧

    在当今科技发达的时代,图像采集卡在各行各业中被广泛使用,从医疗领域到工业领域,从娱乐领域到安防领域。选择一款适合自己需求的图像采集卡显得尤为重要。本文将介绍一些选择合适
    的头像 发表于 05-28 18:09 468次阅读
    <b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的选择技巧

    基于FPGA的实时边缘检测系统设计,Sobel图像边缘检测,FPGA图像处理

    摘要 :本文设计了一种 基于 FPGA 的实时边缘检测系统 ,使用OV5640 摄像头模块获取实时的视频图像数据,提取图像边缘信息并通过 V
    发表于 05-24 07:45

    机器视觉中图像采集卡的功能与应用

    机器视觉技术广泛应用于工业生产检测、医疗、交通等领域助力实现自动化、智能化。整个机器视觉系统可分为图像采集图像处理两大模块。而图像
    的头像 发表于 04-04 08:33 976次阅读
    机器视觉中<b class='flag-5'>图像</b><b class='flag-5'>采集</b>卡的功能与应用

    算法系列:基于 FPGA 的图像边缘检测系统设计(sobel算法)

    今天给大侠带来基于 FPGA 的图像边缘检测设计,话不多说,上货。 设计流程如下:mif文件的制作→ 调用 ip 核生成rom以及仿真注意问题→ 灰度处理→ 均值滤波:重点是3*3 像素阵列
    发表于 03-26 16:40