TA的每日心情 | 奋斗 2020-3-25 15:17 |
|---|
签到天数: 1 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
1.案例说明( }% w4 b/ ]" o: Z+ \+ z% M' n
- PL端接入CameraLink相机,通过Base模式采集图像(1280*1024),然后通过VDMA缓存到PS端DDR。
- 使用AXI4-Stream Switch IP核将图像复分成两路,一路用于边缘检测处理(Sobel算法),另一路直接回显。
- 利用Video Mixer IP核将图像叠加,通过HDMI输出原始图像或者算法处理后的图像。本案例支持CameraLink Base/Full模式、彩色/黑白相机。
: b7 I f- @& c- |4 u1 ~" x2 g' u 此开发详解基于创龙ZYNQ Z-7045/Z-7100评估板TLZ7xH-EVM展开。) o3 t$ z; o# K! O. [
: B1 s! q, O I6 d
2.案例框图
5 f' n4 J5 B$ n5 s4 n4 _ ( x# `4 }: U' F. G, k3 W. E- M' Z
. O# R4 j* c. }. f$ m; V# U
3.申请IP核license/ p5 o( c( F+ d
本开发案例使用的Video Mixer和Chroma Resampler IP核,需要到官网下载IP核免费license,否则将无法通过TcL脚本生成Vivado工程。
% G5 H b& T- Y+ T5 r* M请参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)用户手册《Xilinx Vivado 2017.4及License安装教程》文档,导入IP核。* X1 g- M9 U0 K0 V1 @7 o
3 A. e6 W+ y8 M![]()
& ~. i3 f% z- ] q( M6 M成功导入后,点击View License Status可以查看新添加的IP核license如下图。4 V8 |7 {8 C9 F
7 [* d1 i) f) w$ |0 x7 V
8 T6 a. S9 x5 T6 H; l' S+ _ L
- H4 ~$ l7 }# t2 a/ y, b4.Vivado工程说明, U5 }& A" O; j' O# b; W% k
参照创龙TLZ7xH-EVM评估板(ZYNQ Z-7045/Z-7100)《基于TcL脚本生成Vivado工程及编译》文档,使用TcL脚本生成Vivado工程。
$ a+ B6 Q& p2 r# Q( g. P! {(1)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z100的Vivado工程:
! K6 b6 v- R" Z5 ?# L$ X u3 `Vivado# vivado -mode batch -source tl_cameralink_edge_display_project.tcl -tclargs tlz7xh-evm xc7z100ffg900-2
) S5 Y+ M, T; B7 `& n(2)生成评估板TLZ7xH-EVM、ZYNQ型号为xc7z045的Vivado工程:; w! A* `8 m$ }" E; ^2 l0 f2 ]4 y" o
Vivado# vivado -mode batch -source tl_cameralink_display_project.tcl -tclargs tlz7xh-evm xc7z045ffg900-2# A; {1 x4 z$ A+ F) x+ [& {
进入Vivado工程所在的runs路径,双击.xpr文件打开工程。- S* ]% n- B% A
/ E) G- y3 F4 a
6 {' K% R3 \$ u& b1 \2 C1 {" D3 b
点击"IP INTEGRATOR -> Open Block Design",打开Vivado工程如下图所示。
- e2 c; Y8 m: J6 t. o" w; y! M 8 ?! |6 g! N; @. h
Base模式" y( `) q+ H$ r E& d! O5 d- O6 L
+ S- s" w! L" D点击Address Editor选项,可以看到IP核分配的地址,在PS端可以通过配置这些地址(寄存器)来控制IP核。
$ ?4 t4 ~: B$ w
* t$ p5 o3 w+ X& D 4 n& h8 O2 m1 \6 K" ]
2 }7 ~6 E/ i. z5 P5 [5.案例演示
9 p' K: M8 E1 Y: X4 }实验硬件说明
. t$ L7 K& n! L5 E* C, M( ]5 o! OCameraLink相机参考型号:, l* N5 P- b/ z( D. ^4 F: d
- 彩色RS-A5241-CC107-S00,支持Full/Base,分辨率2560*2048,帧率107Hz
- 黑白RS-A5241-CM107-S00,支持Full/Base,分辨率2560*2048,帧率107Hz7 H6 Y( h# C+ A t
参考下表和图将相机接到评估板CameraLink接口,显示器接到HDMI OUT接口。
0 S2 o8 Y' c$ ^6 `+ a
9 a Q- L1 i1 j( P) p& |: @6 d模式
0 e- r* N! c4 T. O | 接口(相机-评估板)7 y9 |1 M& U/ }- T* n2 |
| Base
5 Z; r( R' K0 u; I/ w | CL0-CON18
' W$ D5 f; V/ I1 q# j |
8 }0 u& W* {" |
! G) i& E+ M7 I0 n& e; j- Z- rBase模式
, G. D8 G8 Q& m* F% U) o* M$ z1 d; g7 ?
基于Linux系统测试
# b/ ]( x9 }. b# q, J( F+ V评估板上电启动进入文件系统,执行如下指令新建一个"/lib/firmware"文件夹。将由Vivado工程编译生成的xxx.bin文件传送到评估板文件系统的"/lib/firmware/"目录下,并重命名为system_wrapper.bin。
/ p1 M# r. _) M; d. }参考创龙TLZ7xH-EVM评估板(Z-7045/Z-7100)用户手册《生成PL设备树及动态加载PL程序和设备树》文档,生成设备树,然后将编译好的dtbo文件拷贝到文件系统"lib/firmware"目录下。
2 v, G0 o; o6 Y3 J. f+ p# ]8 ATarget# mkdir -p /lib/firmware/7 |2 }6 H- v0 D! }0 [
' K& U/ f+ {; L6 W( A8 S
- N1 T5 T1 S& F) |
/ R. Q) g5 ^( z$ j2 u3 g+ i3 OHDMI OUT芯片接的是PS端的I2C,需要加载PS端设备树,加载成功后如下图所示。 t# W6 o" h: S7 k0 o N4 T' @
Target#mkdir /configfs
6 g! d; }& i+ p0 r ]9 BTarget#mount -t configfs configfs /configfs
$ U2 V) M5 ?, _* B4 e& t JTarget#mkdir /configfs/device-tree/overlays/full: p/ P8 o; U( O; d
Target#echo -n zynq-zc706-overlay.dtbo > /configfs/device-tree/overlays/full/path
2 i+ _6 e2 ?& A* q9 |2 a9 f' o& Y( F- c
& E* p+ H# ?8 s1 j! q6 E' F
再加载PL端程序和设备树。可以看到AXI UART对应的节点为/dev/ttyUL1。; |4 u# g& [4 E
Target#mkdir /configfs/device-tree/overlays/cameralink
. Q: Y+ Q2 q( G) ` g6 ETarget#echo -n "pl.dtbo" > /configfs/device-tree/overlays/cameralink/path v0 x+ U- |% x5 ]: m
. U& A9 O( M% I; f) D
2 S ~6 x- b. y l' F* {; ~
$ n, m+ v3 r' o9 f; q6 }
将例程image目录下的脚本拷贝到文件系统,执行脚本进行配置,即可在显示器看到相机采集的视频。
: v# }$ `" |" HTarget#./camera_init.sh base //初始化CameraLink相机1 e& {; u. K3 r6 H+ y+ z) W; I
![]()
2 `7 x! z% {7 j, A: qBase模式
* r2 E" s: j+ `
" P6 s" y, \1 @2 D脚本说明:! \. k6 U2 a/ u: I' r' \+ }8 h
8 I; {5 |4 }/ D. U# g . ~, ~2 B2 U+ Y, }) X5 w3 _- L
Target#./sil9022_i2c_1080p.sh //初始化HDMI OUT6 W0 S; z8 }2 \. v6 ~
Target#./axi_vdma_cameralink.sh //初始化VDMA
3 @2 A" d2 h+ O5 i v1 cTarget#./switch_video.sh 1 //配置AXI4-Stream Switch IP核,参数1为原始图像9 G6 w1 Z, b z2 |+ G2 S
Target#./mixer_init.sh 1 //初始化Video Mixer IP核,参数1为原始图像
% c8 X8 U1 c8 h* _% A
$ N& R* w- f9 s* B4 _ : P: Y: n8 n4 y6 Z- s- P
: C# ^5 r& u' a' ?4 W $ v( L' @) c. D4 U3 R$ x" M( Q
9 Q1 O+ C' f p0 v0 C2 ]/ ]2 E
Target#./sobel_filter_init.sh //初始化Image_filter IP核8 _9 E7 s" K7 B% Y+ P% V
Target#./mixer_init.sh 2 && ./switch_video.sh 2 //切换到算法处理后的图像# T- U2 R) o& a8 U; n0 V$ l8 ^
0 @2 X0 o; B, r. W6 q
5 E9 N. [+ @) z1 ~( V7 O
2 C3 W0 h% T# p/ D( I5 ]# m/ x![]()
3 ?& S3 A0 l3 w2 k/ ]7 Z! X/ _( y对于RS-A5241的相机,Base模式下,1280*1024的分辨率状态下,图像帧率有120+帧,所以图像曝光短,图像较暗,增大Image_filter IP的阈值可以获得更好的效果。1 x# {$ o ?& f5 t# ]
Target#devmem 0x43c000b4 w 0xff //设置高阈值为0xff
& Z, ?+ c4 s8 a8 w& H) dTarget#devmem 0x43c000bc w 0xa0 //设置低阈值为0xa0& D: _3 w: T. u6 f3 `
5 c# C* J& A# c6 V# M- e5 O% i. b
, S) }" Z' d' ^/ q- b3 E7 U, B
$ i A5 w- ^/ M3 a1 k9 l6 a设置颜色反转:8 a/ \$ ?7 E( D" n7 ~. I
Target#devmem 0x43c000c4 w 1 //0xc4寄存器设置为1,边缘为白色,若为0;边缘为黑色
. J+ r% z) M0 J* s( `
( G+ z0 H2 ?1 a, B7 w + b1 K+ W/ C) t- e! K
5 V" E, E& J8 s$ b. ]
|
|