EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Tronlong123 于 2024-7-21 17:47 编辑 ; Y! h, J5 N4 i: z- F' a5 s
, @$ X/ r8 Y9 m: p- Q
) n6 l' k+ U6 } M- U2 w9 f3 y# N- x9 J; ^ 1 cameralink_display案例 49 M. @. J0 H' }0 ^& S
1.1 案例功能 4& [/ }7 A2 Z; q& `7 I
1.2 操作说明 4
! H; n2 B" t$ F2 `3 n; p5 g 1.3 关键代码(MicroBlaze) 11" G9 Z6 ~1 e9 O: u
1.4 Vivado工程说明 16# b; f/ N0 q; A" _1 F6 P' M$ |/ j: \$ ?
1.5 模块/IP核配置 20
" O2 @9 j; W) j: A 前 言 本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。
( T- I6 G4 V8 O: R9 v1 t2 I* @: q% ^; t 评估板简介 创龙科技TL5728F-EVM是一款基于TI Sitara系列AM5728(双核ARM Cortex-A15 +浮点双核DSP C66x) + Xilinx Artix-7 FPGA处理器设计的高端异构多核评估板,由核心板与评估底板组成。AM5728与Artix-7在核心板内部通过GPMC、I2C通信总线连接,在评估底板通过PCIe通信总线连接。核心板经过专业的PCB Layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。评估板接口资源丰富,引出双路千兆网口、双路SFP光口、USB 3.0、CAN、RS485、SATA、HDMI、GPMC、FMC等接口,方便用户快速进行产品方案评估与技术预研。
/ e5 e, l0 b7 v0 E4 J
编辑 在进行本文如下操作前,请先按照调试工具安装文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。0 {% u3 D$ Q4 B2 K7 M
根据评估底板丝印将Artix-7的BOOT SET拨码开关(SW3)拨至01(1~2),此档位为SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正常连接至PC机。
1 z% e+ v+ |+ j( U: m5 Y/ r 编辑 图 1
" T3 W& S1 ~6 v, A cameralink_display案例 cameralink_display案例分为FPGA程序与MicroBlaze裸机程序两部分。FPGA程序位于产品资料“4-软件资料\Demo\FPGA_Demo\All-Programmable-FPGA-demos\cameralink_display\hw\”目录下,包含project和bin两个目录。基于MicroBlaze软核的裸机程序位于产品资料“4-软件资料\Demo\All-Programmable-FPGA-demos\cameralink_display\sw\baremetal_demo”目录下,包含project和bin两个目录。
4 O7 P- Y4 Y! p+ S) r0 \ 案例功能 案例功能:评估板通过FMC视频模块TLCameraLinkF的CameraLink接口采集分辨率为1280 x 1024的视频,并通过TLCameraLinkF模块的HDMI OUT接口输出采集到的视频。$ g. e1 L& p: y
编辑 图 2 程序功能框图
( [' R/ g: `: E4 M2 W6 q f$ Q- S 本案例FPGA程序支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。
F( Q4 P& D; E Full模式工程编译后生成的可执行文件为cameralink_display_full_xx.bit,Base模式工程编译后生成的可执行文件为cameralink_display_base_xx.bit。' C- W7 F0 p6 l1 n- s3 U! e( E
操作说明 本案例支持三款CameraLink相机,具体说明如下。
& h: f* S' b) Y% l
& n/ v1 B }3 i 厂家 相机型号 支持模式 相机性能 Microview (北京微视) RS-A5241-CM107-S00 (黑白CameraLink相机) Full 全幅面2560*2048下,帧率可达107fps Base RS-A5241-CC107-S00 (彩色CameraLink相机) Full 全幅面2560*2048下,帧率可达107fps Base MVC1381SAM-CL60-S00 (黑白CameraLink相机) Base 全幅面1280*1024下,帧率可达60fps Full模式硬件连接方法
2 Y; N9 O. S2 Z6 P F; l- d0 x9 b2 u- T 如采用Full模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。+ }$ |: Y, N7 [. Y) I+ Q3 \, [+ }
请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将CameraLink相机的CL1通过数据线连接至TLCameraLinkF模块的CameraLink2接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。
% x g, e( K0 Z4 ^1 d2 b 编辑 图 3
1 o9 q" M8 D/ _% U0 ` Base模式硬件连接方法7 f' q$ X( {0 z( o9 H
如采用Base模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。, F* |4 `& y: N; t. q( {
请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。* \( v' l' j% l: Z
编辑 图 4 : | b% z6 {9 Y. g3 ?3 t
下面对三款不同型号的CameraLink相机在Full/Base模式下的操作步骤进行说明。
7 o6 b6 L: [$ {# G( t# { - 黑白CameraLink相机RS-A5241-CM107-S00,Full模式
0 [. Y* Z- a, \+ P p 请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出黑白图像。) U- M2 g( y3 i; \
编辑 图 5
: p1 Y* H+ t5 B) t8 r, @- X l2 u 编辑 图 6 6 ]3 \* \: F9 q7 c" \
- 彩色CameraLink相机RS-A5241-CC107-S00,Full模式
' }: o* |% g: \2 x& x 请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出彩色图像。
5 w/ T' E7 i \% W 编辑 图 7
0 `' k& l3 g) V) _8 P+ g; h. o 编辑 图 8 / w7 {+ r: {& W& Y
备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。1 C8 O9 k/ J. d) k1 |% u/ G
- 黑白CameraLink相机RS-A5241-CM107-S00,Base模式! I+ L% v& a& E2 w; d
请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出黑白图像。
. Q/ Q y9 ~. d3 _1 }6 D- [. B 编辑 图 9
* X# z; L9 I; Z* m% x 编辑 图 10 % x' V% z1 b9 d& ?: u
- CameraLink相机RS-A5241-CC107-S00,Base模式
: A+ k' x1 s- u# j 请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出彩色图像。; l6 q% z9 f; a& C! H) A; l
编辑 图 11 3 Z' D: M" y3 v# |/ ?, O% Z
编辑 图 12
9 v9 {, @7 b0 @ P2 b* L" _3 T 备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
6 u3 k1 ?9 _! `# q - 黑白CameraLink相机MVC1381SAM-CL60-S00,Base模式
$ d: \1 w' j/ V; |( n 请运行Base模式程序,即可看到串口调试终端打印如下信息。请输入"3"选择相机型号为MVC1381SAM-CL60-S00。配置完成后,即可看到HDMI显示屏输出黑白图像。" I+ L$ f, O9 u1 p5 E
编辑 图 13
9 V4 m$ D. ~$ ^8 V" p, l 编辑 图 14
# ?$ K! x8 Z# s) w. l 关键代码(MicroBlaze) MicroBlaze裸机源码为"sw\baremetal_demo\project\cameralink_display\src\",关键代码说明如下。
S4 u T$ g- R6 r& |6 x; \ - main函数。( j1 \& V4 j4 `$ K7 x+ S
编辑 图 15 2 y. T1 g7 t* w5 j
编辑 图 16 8 @. v, M% `7 x/ S% Y
编辑 图 17
8 _3 L% {7 ^( z+ p2 q3 N o+ x - 初始化VDMA,将采集到的视频数据缓存至DDR,再进行HDMI视频输出。
" A+ b: S5 ~! s$ o 编辑 图 18
1 V+ p3 D1 f* ^' h8 o7 V - 初始化Sil9022。
4 D' @' b9 P8 o, h 编辑 图 19
4 M; T5 U5 [" h$ H0 V - 初始化AXIS Switch IP核。- {1 q. ~) O9 l+ o3 R
编辑 图 20
# M3 ^( l) L/ u( i - 初始化Sensor Demosaic IP核,以将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
$ t! z9 s& t$ N( i. c 编辑 图 21
% w; }4 L0 q! w: z0 @" g+ i - 初始化Video Mixer IP核。$ ^* D; s: x. x+ N6 B/ Z+ Y9 m
编辑 图 22 ; m6 C0 i2 b P) K. `" p
Vivado工程说明 点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。% H4 D1 F a4 @" |
编辑 图 23
8 n) [5 }' g/ E' i3 _ g5 w 本案例分别支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。两者区别如下:
1 ?% b6 I- D5 ] l; C - Full模式Vivado工程:Pixels Per Clock配置为8,即每个时钟8个像素。
- Base模式Vivado工程:Pixels Per Clock配置为2,即每个时钟2个像素。
* c$ r6 n' c4 ?# K7 c; O b. ^ 编辑 图 24 Full模式 , a6 y+ i5 s2 @7 v! [% }; r
编辑 图 25 Base模式
( L' W% c8 r K b CameraLink Full模式Vivado工程顶层文件为"hw\project\cameralink_display_full_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_full.v"。# T9 \7 P8 Y5 P1 o. _! M. z: s, P
CameraLink Base模式Vivado工程顶层文件为"hw\project\cameralink_display_base_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_base.v"。! I- ^; j/ @; P1 ?6 p7 g
关键代码说明如下。9 b/ Y1 o! [ U8 C. c
- 定义模块接口。
- g1 O3 r, M/ w$ X5 D6 T1 i& | 编辑 图 26 " _; v+ h. t. |) `* c, ?
- 使用STARTUPE2原语输出复位信号。8 R. ~1 Z2 a( b* I$ [3 y
编辑 图 27: s3 z" i6 @9 Q( x3 u2 b! Z' N
- 调用Block Design。 T6 O5 L" F E, E; l+ F; x
编辑 图 28
7 x+ Z. f( ?' L( q* z. }# X 模块/IP核配置 lvds_n_x_1to7_sdr_rx模块 本案例使用lvds_n_x_1to7_sdr_rx模块将CameraLink相机输入的差分视频数据转化成并行视频数据。
: n( U% G; j1 u/ R7 Z& p9 F lvds_n_x_1to7_sdr_rx模块开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《xapp585-lvds-source-synch-serdes-clock-multiplication.pdf》。lvds_n_x_1to7_sdr_rx模块源码文件为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\lvds_n_x_1to7_sdr_rx.v",具体配置说明如下。
) L$ a* D8 Y( V8 h - delay_refclk_in接入由Clocking Wizard输出的200MHz参考时钟。/ v& \! _8 q p1 ^) E' ~+ ?
编辑 图 29
y a5 ]! n: Q. q1 U0 M! \ - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。配置X为4,表示“每个通道的数据差分对数量为4”。3 ]* E' ~. ?4 F- M# @) O4 q
- Base模式:单通道,每通道数据差分对为4组,需1个连接器。
- Medium模式:双通道,每通道数据差分对为4组,需2个连接器。
- Full模式:三通道,每通道数据差分对为4组,需2个连接器。- O: U6 W1 v. E% X8 c8 A2 n' {
编辑 图 30 4 \( L: d" K0 S7 s5 ?& ^
cameralink_bit_allocation_rx模块 本案例使用cameralink_bit_allocation_rx模块将转化后的并行视频数据进行重组,分离出行同步信号、场同步型号、数据有效信号和像素数据。) v$ ? Z3 U- D- `) H* ~
cameralink_bit_allocation_rx模块源码为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\cameralink_bit_allocation_rx.v",具体配置与关键代码说明如下。
7 V3 J! l4 M1 D4 } - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。9 \2 G% F2 w2 v+ _0 V8 \! p
- Base模式:单通道,输出端PortA、PortB、PortC有效。
- Medium模式:双通道,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。
- Full模式:三通道,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。
* P' O( M7 c& Q# t7 S 编辑 图 31 ' C3 g( p( F: L& G* M! v9 |
- data_in的数据排列格式。
9 {6 L" q' F2 c( ~3 s: Q9 E 下图为Base模式单通道4组差分对图像数据排列,例如TxIN[7:6]对应D[0:1],TxIN[4:0]对应D[2:6]。2 |" C7 B2 _: n0 V
编辑 图 32 8 r$ b% M1 }5 e/ c3 j+ ^$ O
将Base模式单通道4组差分对图像数据保存在data_in数组的排列顺序如下。
# S% B- F. H- R9 t 编辑 图 33 ; R" `7 I; u! F7 f( X
- 分离行同步信号、场同步信号、数据有效信号和像素数据。) Y5 H C' ]/ Y! V
根据CameraLink V2.0协议,RX24对应行有效信号LVAL(行同步信号),RX25对应帧有效信号FVAL(场同步信号),RX26对应数据有效信号DVAL,具体对应关系如下。
2 ]4 j; D) B/ N# X 编辑 图 34 7 F8 B4 V! |2 x* f) P
根据上图说明,即可将行同步信号、场同步型号、数据有效信号和像素数据进行分离。6 d# y6 O7 d, L+ ?% G1 a1 G
编辑 图 35
8 P) [( h" ?8 M: X/ n; T VDMA IP核 本案例使用VDMA IP核进行视频数据缓存。' z5 M/ M+ o7 g, N5 S% r
VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg020_axi_vdma.pdf》。
- H" S N7 l2 e( C$ m0 ~* [' o4 Y VDMA IP核寄存器列表如下,其中S2MM_xx将视频数据缓存至DDR,MM2S_xx将视频数据从DDR中取出。
& f& M5 D- B5 ~% V# | 编辑 图 36 , L& P# _; T( ]3 O6 l
编辑 图 37
) D9 \3 k) ]/ Q- L VDMA IP核具体配置说明如下。 r. N, H+ F1 A8 E, a7 O& x! C6 X
- Frame Buffers配置为4个。
- Write Burst Size、Read Burst Size均配置为128。
- 读通道的Stream Date Width配置为8。
- 读/写通道的Line Buffer Depth均配置为2048。
9 {; X) c( ?4 |: O( e2 t 编辑 图 38 8 E7 Z8 Z, ]( ~, ~$ g
- 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。% ~/ y( u& |% R! g. A
编辑 图 39
# o1 _: H- G8 }' t+ Z; H Video In to AXI4-Stream IP核 本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。+ A. v+ n Q; W7 d0 ~ R4 j* ~
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。
2 o" ]7 i0 S6 `* m' D/ T) W* l% F& [ - Full模式:Pixels Per Clock配置为8,即每个时钟8个像素。Base模式:Pixels Per Clock配置为2,即每个时钟2个像素。
- 视频格式配置为Mono/Sensor。
- 数据位宽配置为8bit。9 o+ V i# p7 i; P
编辑 图 40 , d. ?4 T. H8 d) j
AXI4-Stream to Video Out IP核 本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。 ?3 A) b |8 A2 v3 S1 V# F
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。
d1 a( w; P; B0 A. u, B. R - FIFO Depth配置为2048。
- Clock Mode配置为Independent(独立时钟)。
/ U4 p$ p0 f9 L8 | 编辑 图 41
6 i# _/ i( ^6 i2 y Video Mixer IP核 本案例使用Video Mixer IP核将视频数据叠加到1920 x 1080分辨率的视频中。
+ O: @& D4 k* L" k- v Video Mixer IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg243-v-mix-v2.0.pdf》,具体配置说明如下。" ]9 `3 i; O2 B
Mixer通过MicroBlaze配置寄存器进行使能。
; F7 n' W$ \8 _% |" @" x1 p 编辑 图 42
. u; _. G# [* W4 H - Number of Layers配置为3,其中Master Layer(s_axis_video)未使用,仅使用Layer1(s_axis_video1)与Layer2(s_axis_video2)。当采集黑白CameraLink相机的图像时,使用Layer1;当采集彩色CameraLink相机的图像时,使用Layer2。
- 配置可支持的最大分辨率为1920 x 1080。3 C' o% V" S; B: W
编辑 图 43
) S( Y( J2 {& \6 ^ VTC IP核 本案例使用VTC IP核产生用于视频输出的时序。
1 Z9 y' T+ V c+ a1 L' @ Z5 q0 X VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。% R, i; g4 w' J$ g6 }* t
- 点击Detection/Generation,确保不勾选"Include AXI4-Lite InteRFace"及"Enable Detection"。
; _* u8 y$ e# {0 z5 y7 B( G 编辑 图 44 $ S1 J' Z$ e) b: v4 ~/ w8 V. I6 P
- 点击Default/Constant,Video Mode配置为1080p,其余配置保持默认。! u2 D% ~7 }# P6 Q# {
编辑 图 45 ) y- d A8 g1 e6 T5 R) L
Sensor Demosaic IP核 本案例使用Sensor Demosaic IP核将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
- D& j1 i. y7 @! y( K4 l Sensor Demosaic IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg286-v-demosaic.pdf》,具体配置说明如下。图像宽高以及Bayer的格式,通过MicroBlaze配置寄存器进行设置。
& z- L6 J! j1 m, \ 编辑 图 46 8 T1 M# x' I$ D6 a8 ^8 W
由于Sensor Demosaic IP核视频数据输出格式为RBG,因此使用AXI4-Stream Subset Converter IP核将RBG转换成RGB,再进行视频输出。
+ ^/ f" k1 }/ A- S) p 编辑 图 47
& M8 K; Y5 I/ @* H2 W 编辑 图 48 ( x1 a* L! {9 f# K+ g
AXI4-Stream Switch IP核 本案例使用AXI4-Stream Switch IP核选择黑白或彩色CameraLink相机视频数据进行处理。
8 f7 a5 y$ Y/ p8 g4 N# H AXI4-Stream Switch IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg085-axi4stream-infrastructure.pdf》,具体配置说明如下。本案例通过MicroBlaze配置寄存器,选择将S00_AXIS(视频数据输入通道)路由到M00_AXIS(黑白CameraLink相机视频数据处理通道)或M01_AXIS(彩色CameraLink相机视频数据处理通道)。
0 @ a& L. e( y5 N2 K6 c - Number of slave interfaces配置为1,即配置1个Slave接口。
- Number of master interfaces配置为2,即配置2个Master接口。
- Use control register routing配置为Yes,即使能AXI4-Lite接口。$ J5 A: K$ I! n
编辑 图 49 & z# I$ E& E x6 [' E8 w
Vivado工程编译 申请IP核License 如需重新编译工程或打开Video Mixer IP核,需在Xilinx官网申请Video Mixer IP核的免费License,并将其正确导入。License申请与导入方法,请查阅调试工具安装文档相关章节,其它IP核无需License。3 z8 p% |4 f8 _7 b3 O
成功导入后,可在View License Status窗口发现新添加的License。) G3 W( z- q/ \; p" d
编辑 图 50 * [0 Y/ I$ i" @5 s: t5 a N* o. Z
工程编译异常解决 本案例包含HLS IP核,由于Vivado工程文件路径过长,可能导致工程编译过程中出现如下错误。0 Y* @# V5 C( w2 j- l
编辑 图 51 7 K* J) C+ d) F k" l
可在Tcl Console窗口执行如下命令,重新生成HLS IP核相关文件,即可正常编译工程。
. x' K! M" b( G Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_demosaic_0_0]}
* ?6 f. A! S3 r0 s- N; K( m0 X 编辑 图 52
" J, l! o! X; d, @& P# b6 n Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_mix_0_0]}( W7 f% ?" m* G( K/ K. [' f; b
编辑 图 53 ' F9 ?' i, n( l( C* r0 b
8 ^" J' J! u+ ?9 e. E% @9 a4 j7 t
, C) x! W9 D* c; X8 c |