EDA365电子论坛网

标题: 基于ZYNQ的CameraLink图像采集与边缘检测开发详解 [打印本页]

作者: Tronlong小分队    时间: 2020-9-17 09:40
标题: 基于ZYNQ的CameraLink图像采集与边缘检测开发详解
1.案例说明
  t9 e6 N+ P$ w- ]此开发详解基于创龙ZYNQ Z-7045/Z-7100评估板TLZ7xH-EVM展开。
3 `8 H) {4 V. H% o1 B
! R, P% h4 P8 s. Y8 g. _2.案例框图8 O0 ^; u: Y$ O$ m, L
5 ^' N: F2 B2 [

/ [3 s9 ^& J' {. f# z3.申请IP核license) U) n3 k7 O( Z2 G
本开发案例使用的Video Mixer和Chroma Resampler IP核,需要到官网下载IP核免费license,否则将无法通过TcL脚本生成Vivado工程。
2 w7 E' ]2 k  n, f; k请参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)用户手册《Xilinx Vivado 2017.4及License安装教程》文档,导入IP核。
) d' l( ]1 P* b& t" z, j7 T2 h$ n; x7 Z9 d- N& C

3 [* v; m" c0 A2 e; y成功导入后,点击View License Status可以查看新添加的IP核license如下图。/ K5 |; Z" p4 z4 O; S

6 Z' e3 {8 z: {5 B" K
- T( W0 Q+ T" S% A, P( U1 Y* L+ ?  w. d0 w# S
4.Vivado工程说明
; C3 r8 r+ |8 g8 B2 Y4 u/ x参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)《基于TcL脚本生成Vivado工程及编译》文档,使用TcL脚本生成Vivado工程。+ @3 w) F8 j3 Y
(1)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z100的Vivado工程:
9 y5 \+ ~! Q: K" N: z5 U' cVivado# vivado -mode batch -source tl_cameralink_edge_display_project.tcl  -tclargs tlz7xh-evm  xc7z100ffg900-2
, p# L- z! \; c: _8 A( h" C# @(2)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z045的Vivado工程:
+ A5 k8 u. @  f  q# q; z. GVivado# vivado -mode batch -source tl_cameralink_display_project.tcl  -tclargs tlz7xh-evm  xc7z045ffg900-2
# m" p- P  Y# M2 [" h2 _进入Vivado工程所在的runs路径,双击.xpr文件打开工程。
+ u" D7 k/ F5 z3 i  f5 ^3 D: `
  W! n+ s# s( e, i' w/ E
+ J# [% k* j; K! y# N) [2 c6 u$ O点击"IP INTEGRATOR -> Open Block Design",打开Vivado工程如下图所示。1 ~" k( I+ z: ~! [

' S. s* ]' @) d* K( Q$ [Base模式( M9 H. E' O& O) b0 h% x

3 F  Q( c, s! L6 v6 I9 Z点击Address Editor选项,可以看到IP核分配的地址,在PS端可以通过配置这些地址(寄存器)来控制IP核。
' u1 S2 m! B( [
. e$ x" Y: A& t; R# V$ C+ R1 h3 ^& z' _6 m9 r6 f+ ~3 y; Z" u
# O) F& ~1 P6 \
5.案例演示
  H+ P+ C. c4 ?) Z实验硬件说明
/ S" K. x; Y  d5 Y: N8 O) xCameraLink相机参考型号:3 A" N; ?6 m+ B- r2 m+ ^1 Q
参考下表和图将相机接到评估板CameraLink接口,显示器接到HDMI OUT接口。( X0 o+ V- ]- Z2 j2 s6 \
! i2 U# C4 c5 ?8 K8 N1 t
模式. A6 Q5 W* r1 }6 Q) A8 M, b. r
接口(相机-评估板)# {1 |6 O) J( Y0 y
Base+ a  _2 ?4 L' z7 h0 K$ @1 K/ [
CL0-CON18
% P) J$ g7 a. [2 U  j) \- |0 K

4 d; H+ U" e' w
9 B3 M* T5 M+ MBase模式
! m* t8 ?# n' y
2 K# h& L: W+ h+ o" d8 u8 G. H基于Linux系统测试$ i/ p7 i5 |, d! }
评估板上电启动进入文件系统,执行如下指令新建一个"/lib/firmware"文件夹。将由Vivado工程编译生成的xxx.bin文件传送到评估板文件系统的"/lib/firmware/"目录下,并重命名为system_wrapper.bin。3 U! [: m. W8 }' P% K
参考创龙TLZ7xH-EVM评估板(Z-7045/Z-7100)用户手册《生成PL设备树及动态加载PL程序和设备树》文档,生成设备树,然后将编译好的dtbo文件拷贝到文件系统"lib/firmware"目录下。/ `4 l: ]$ s; |( M. ~
Target# mkdir -p /lib/firmware/* L% X/ q, X% B6 s2 }+ v7 N

  d2 J; P& n# p0 O! }3 I$ R- D; ?7 y7 O# E
$ \  z6 w. M+ t! m7 c0 ?
HDMI OUT芯片接的是PS端的I2C,需要加载PS端设备树,加载成功后如下图所示。
  X/ Q" o2 A/ e5 g$ VTarget#mkdir /configfs- \' ^% Y+ }5 Z/ _% u
Target#mount -t configfs configfs /configfs
- C* W& K; T0 W% z: @# k, kTarget#mkdir /configfs/device-tree/overlays/full
; ^2 H! t! ]" I4 ?Target#echo -n zynq-zc706-overlay.dtbo >  /configfs/device-tree/overlays/full/path* A& A9 a# I% K9 b9 R" u+ N
$ }5 P6 C1 f" b; M+ ]# u6 S
  V: ^+ k; n2 a8 V; k+ V
再加载PL端程序和设备树。可以看到AXI UART对应的节点为/dev/ttyUL1。
7 l$ L& y8 Z4 _Target#mkdir /configfs/device-tree/overlays/cameralink$ K6 k0 u+ y% e' h0 m( ]
Target#echo -n "pl.dtbo" > /configfs/device-tree/overlays/cameralink/path
2 a: F' N1 h. Q) d( t% O' w( `$ {6 x8 e5 x  f

& p/ E; n2 ~3 d# @* d4 k* G, z3 f% \; U5 y8 w/ h
将例程image目录下的脚本拷贝到文件系统,执行脚本进行配置,即可在显示器看到相机采集的视频。! b" s- ?0 H8 i' ~
Target#./camera_init.sh base //初始化CameraLink相机
& v+ _9 p5 p/ u) S9 @' T( o
% m+ b" v) Z7 X( GBase模式5 B: r1 D: Z& @
6 X! l0 d" G$ t7 {2 U" e+ V
脚本说明:
4 Q/ F- u. I* f
- a# m: h# |9 r9 a
4 E: D- {# _* v0 M) q6 m9 \5 OTarget#./sil9022_i2c_1080p.sh //初始化HDMI OUT
! t) {: a: R3 L5 ?8 g/ xTarget#./axi_vdma_cameralink.sh //初始化VDMA
! _5 o+ Y; y# z5 m& NTarget#./switch_video.sh 1 //配置AXI4-Stream Switch IP核,参数1为原始图像& x5 g% _% u' H. X5 j2 E
Target#./mixer_init.sh 1 //初始化Video Mixer IP核,参数1为原始图像) P) A# A6 j5 ?; N

: s5 K' v- U  e! p! ^" c* I# A  C+ M) o+ z( I+ O% Q

4 M4 z# d1 t3 L& |3 n7 H% @' b5 Z7 Q$ z8 {/ V0 _* E
2 l3 [. L" a4 d  m& K
Target#./sobel_filter_init.sh //初始化Image_filter IP核. K7 U, U3 U* s8 e
Target#./mixer_init.sh 2 && ./switch_video.sh 2 //切换到算法处理后的图像
' \/ k9 m7 i. R! Q! O: N
! F( {' K- s* f/ F$ x6 P0 W1 U# ~& s# r9 t/ M5 d+ c/ u$ o

( C" j3 H9 X3 a- \& y: O. T! S- g$ o6 \& C+ ]  _) y
对于RS-A5241的相机,Base模式下,1280*1024的分辨率状态下,图像帧率有120+帧,所以图像曝光短,图像较暗,增大Image_filter IP的阈值可以获得更好的效果。
0 h4 m( k9 v' p; W  l3 FTarget#devmem 0x43c000b4 w 0xff //设置高阈值为0xff
5 I2 H% q' }+ L0 U4 QTarget#devmem 0x43c000bc w 0xa0 //设置低阈值为0xa04 Q& x7 C* ~: _5 u  A

% I9 T: t+ T" L* [% X, J( n: V3 ^6 \

6 Q0 e; V! Y+ A* N4 s- a设置颜色反转:$ y1 |$ K& |! I; g/ ]
Target#devmem 0x43c000c4 w 1  //0xc4寄存器设置为1,边缘为白色,若为0;边缘为黑色7 \- l! a8 }5 Q0 I" E4 ]
1 }7 x3 W% O* i6 k" a

- {: E$ g5 E% j* s' F" J: C5 b! e* B0 e& V& l- B- I% O9 t( c# c

作者: silenced    时间: 2020-9-17 11:09
很详细   有没有文件格式的呢?
作者: lihongfei_sky    时间: 2020-10-4 17:19
请教一个问题,咱们这个板子相机与ZYNQ相连,即Cameralink相连,采用是直接连接的方式,还是通过芯片转换一下,看到你的那个框图,好像是应该是LVDS相连,我最近也在做FPGA接收Cameralink数据程序,但是LVDS接收哪里,没有成功,请问硬件哪里有什么需要注意的地方吗




欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/) Powered by Discuz! X3.2