EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Tronlong123 于 2024-7-21 17:47 编辑 ) y; T, k4 }1 R- {$ ~' b" q. ~9 e
& ?/ w+ k$ w/ k9 M8 L% O0 o
% \+ G) d( {5 _- F1 V4 v 1 cameralink_display案例 4/ Y7 z4 p Y0 r# }; y
1.1 案例功能 4! u. t9 y" C- I, ^ w+ Z
1.2 操作说明 4
4 }: |/ L2 q4 g9 e4 h 1.3 关键代码(MicroBlaze) 11& M {* h1 K# a2 Q1 l0 v$ y
1.4 Vivado工程说明 16
; j* g3 [: q6 O4 R% a! x" @8 Q 1.5 模块/IP核配置 20
3 k/ r1 T [- T0 ? 前 言 本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。: l' g1 \* V. T$ B2 B+ z" y
评估板简介 创龙科技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等接口,方便用户快速进行产品方案评估与技术预研。
: a0 O* z% ^+ x( r# ?
编辑 在进行本文如下操作前,请先按照调试工具安装文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。4 g4 D# P% r/ B* p& G
根据评估底板丝印将Artix-7的BOOT SET拨码开关(SW3)拨至01(1~2),此档位为SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正常连接至PC机。/ m3 J, Q/ D i/ b$ b
编辑 图 1 6 N. h, W1 o, ^+ W) p
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两个目录。3 F6 C* D" I0 V8 G0 _/ T
案例功能 案例功能:评估板通过FMC视频模块TLCameraLinkF的CameraLink接口采集分辨率为1280 x 1024的视频,并通过TLCameraLinkF模块的HDMI OUT接口输出采集到的视频。
7 Z( b ^6 e2 W, }: C, D0 | 编辑 图 2 程序功能框图
( N+ E1 g K- N' N+ W 本案例FPGA程序支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。
! K% m6 _9 ?! |6 D c$ { Full模式工程编译后生成的可执行文件为cameralink_display_full_xx.bit,Base模式工程编译后生成的可执行文件为cameralink_display_base_xx.bit。8 \3 l' k% i/ e6 ^
操作说明 本案例支持三款CameraLink相机,具体说明如下。- T' o- J' A/ @" T) I
+ c5 i" ^' ?5 J 厂家 相机型号 支持模式 相机性能 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模式硬件连接方法( y6 J0 x/ }# {$ Z: Q
如采用Full模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。
9 O4 Q4 B1 a" \7 k4 y 请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将CameraLink相机的CL1通过数据线连接至TLCameraLinkF模块的CameraLink2接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。
! t( d% p+ H; M7 o5 [ 编辑 图 3
0 W9 m# i! U% r/ K2 c Base模式硬件连接方法
& K+ w) [, c% h- O. M) | 如采用Base模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。8 p. c, ~& K6 o7 w
请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。3 d% c% J6 A/ V( w- C4 @
编辑 图 4
. O3 R2 [; ^/ S4 f0 B5 L+ M 下面对三款不同型号的CameraLink相机在Full/Base模式下的操作步骤进行说明。! C0 n, B; ?) e7 U7 r$ d* U, t% j
- 黑白CameraLink相机RS-A5241-CM107-S00,Full模式# B. }# C, B& P9 @" I8 o) Z
请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出黑白图像。4 T3 @6 _' R4 D# w1 D5 e6 w
编辑 图 5
3 |) X. ` L# H! {# F 编辑 图 6
" l& N5 W8 k$ N$ G6 P1 Z - 彩色CameraLink相机RS-A5241-CC107-S00,Full模式
! F/ R: |5 O( \8 F2 w$ C 请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出彩色图像。
2 S U1 @, W( }8 I3 r& L( R 编辑 图 7 - A( Z1 d$ `- @
编辑 图 8 9 m: W2 Y& A$ E
备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
+ {: ^% |5 t8 E7 |' E" y8 L8 B - 黑白CameraLink相机RS-A5241-CM107-S00,Base模式
* k3 `0 T7 ~5 T 请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出黑白图像。) U, P; `7 v. {8 F+ A: `7 O
编辑 图 9
3 {! Y% _. {( M1 W 编辑 图 10
! o$ Y$ m0 h! t9 e5 K - CameraLink相机RS-A5241-CC107-S00,Base模式
& U8 D" x# f) N2 x9 n 请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出彩色图像。
& w6 }5 W8 Y6 {4 h: [! z" x9 ? 编辑 图 11 : o4 Y: [" c; t7 q+ P( u
编辑 图 12 X* w9 }0 c3 L* y/ h1 D
备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
+ }$ L) o3 H2 [3 W# v6 ^ - 黑白CameraLink相机MVC1381SAM-CL60-S00,Base模式
1 Z. j. D c' L 请运行Base模式程序,即可看到串口调试终端打印如下信息。请输入"3"选择相机型号为MVC1381SAM-CL60-S00。配置完成后,即可看到HDMI显示屏输出黑白图像。& F' C6 X' B2 J( j5 I, C
编辑 图 13
) V1 \' o: T5 c. d, a4 ^6 \) ` 编辑 图 14 5 J/ o0 p7 j- ^0 j" U
关键代码(MicroBlaze) MicroBlaze裸机源码为"sw\baremetal_demo\project\cameralink_display\src\",关键代码说明如下。. A' J2 h+ M% a6 H4 E9 a
编辑 图 15 ' [; ]$ L$ ], _2 ~- s4 ~
编辑 图 16
" K9 _8 t( S8 v. X# [ }" R! U4 ] 编辑 图 17
2 A6 d; q4 h* J5 @' C0 ^' G5 w* L& L - 初始化VDMA,将采集到的视频数据缓存至DDR,再进行HDMI视频输出。
: R* f% r P$ e, V. ~- L 编辑 图 18
$ s! K( h3 d) a - 初始化Sil9022。
2 J3 y8 Z4 s* v3 D 编辑 图 19
/ B% u- c2 m' G( x# D* U - 初始化AXIS Switch IP核。
* s+ c% E, Q5 _$ _* J& z6 s 编辑 图 20 0 ]+ m* v5 ^2 u
- 初始化Sensor Demosaic IP核,以将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
! P3 e6 G( `/ t5 V4 I& D 编辑 图 21
: k. j0 j7 n( ^& l - 初始化Video Mixer IP核。! \* z; A$ D5 Z/ o5 F9 M% m2 L$ \
编辑 图 22
3 e$ h& X5 \: d2 M Vivado工程说明 点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。
2 T2 k' }2 B& @: C4 ]) B 编辑 图 23
6 ]& D: k8 A1 ?1 \8 @0 R+ n 本案例分别支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。两者区别如下:
0 x* q1 `# L0 e - Full模式Vivado工程:Pixels Per Clock配置为8,即每个时钟8个像素。
- Base模式Vivado工程:Pixels Per Clock配置为2,即每个时钟2个像素。
3 I6 F8 i) Q+ }9 e. r0 u 编辑 图 24 Full模式
* A) S+ r8 y! p5 ] 编辑 图 25 Base模式 ( x( ~: ]# G. d# D3 K
CameraLink Full模式Vivado工程顶层文件为"hw\project\cameralink_display_full_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_full.v"。9 B! k( Y* e0 c5 U
CameraLink Base模式Vivado工程顶层文件为"hw\project\cameralink_display_base_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_base.v"。
; ^0 x5 i/ B0 C6 J9 U 关键代码说明如下。
% R; p; c. A6 u8 t5 t8 ?8 ?/ l - 定义模块接口。# a4 i& h9 h/ o4 E
编辑 图 26
2 H& F7 u% x" T - 使用STARTUPE2原语输出复位信号。1 s8 `; Q/ J7 e) z+ V
编辑 图 27) ?% g+ p `0 G) b' ?* j% D1 M
- 调用Block Design。
' S, G" e# I' j) p 编辑 图 28 4 G/ h6 D# ^* B& F5 @
模块/IP核配置 lvds_n_x_1to7_sdr_rx模块 本案例使用lvds_n_x_1to7_sdr_rx模块将CameraLink相机输入的差分视频数据转化成并行视频数据。
" {( C) [. X* B: s4 ` 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",具体配置说明如下。; a* k* y! }9 K$ B
- delay_refclk_in接入由Clocking Wizard输出的200MHz参考时钟。
' a( Z3 X0 w9 S. p+ M 编辑 图 29
8 I7 g* q7 }& |- a$ ? - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。配置X为4,表示“每个通道的数据差分对数量为4”。
& l1 l) D- e# L, u! B) k: O - Base模式:单通道,每通道数据差分对为4组,需1个连接器。
- Medium模式:双通道,每通道数据差分对为4组,需2个连接器。
- Full模式:三通道,每通道数据差分对为4组,需2个连接器。* w7 b% {. m9 g3 P+ }" W
编辑 图 30
$ L0 a0 \- ^4 G: p2 R, d cameralink_bit_allocation_rx模块 本案例使用cameralink_bit_allocation_rx模块将转化后的并行视频数据进行重组,分离出行同步信号、场同步型号、数据有效信号和像素数据。
R* n7 }" R+ n) u5 R$ O: E' v) C cameralink_bit_allocation_rx模块源码为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\cameralink_bit_allocation_rx.v",具体配置与关键代码说明如下。" K4 {( J* g3 d( N$ l! o$ a8 ]+ ~
- 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。' f1 _; H/ ?4 I( _9 i
- Base模式:单通道,输出端PortA、PortB、PortC有效。
- Medium模式:双通道,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。
- Full模式:三通道,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。/ N8 ?% u$ |" W) [( c5 O* g
编辑 图 31 : C4 A5 S8 [0 I8 ] M
- data_in的数据排列格式。
( Z* ~. ~3 j! w# M) z 下图为Base模式单通道4组差分对图像数据排列,例如TxIN[7:6]对应D[0:1],TxIN[4:0]对应D[2:6]。
5 n+ `' N# S* }$ G( Z0 Q3 F. {: Q 编辑 图 32
& h# C5 ]) A3 r 将Base模式单通道4组差分对图像数据保存在data_in数组的排列顺序如下。
* _" B. M; y& L& [- B5 F 编辑 图 33 / @* B4 x5 M. C; u0 V
- 分离行同步信号、场同步信号、数据有效信号和像素数据。
e; j+ c2 q e1 _ Q: T 根据CameraLink V2.0协议,RX24对应行有效信号LVAL(行同步信号),RX25对应帧有效信号FVAL(场同步信号),RX26对应数据有效信号DVAL,具体对应关系如下。
% h. P% W, x0 g/ \ R 编辑 图 34 & O: T4 `$ U' P S; \% R
根据上图说明,即可将行同步信号、场同步型号、数据有效信号和像素数据进行分离。. k* e6 P3 K; R
编辑 图 35 " ~3 d! v' |8 m) |, o3 s! _1 ]
VDMA IP核 本案例使用VDMA IP核进行视频数据缓存。
( |% W- s: F' [& L u8 z VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg020_axi_vdma.pdf》。
) z" V5 P7 {$ P* N6 [4 Z VDMA IP核寄存器列表如下,其中S2MM_xx将视频数据缓存至DDR,MM2S_xx将视频数据从DDR中取出。
" V! D& w) |) x0 X/ ^: T2 H# p 编辑 图 36 O& E5 `/ k) `) K( T0 `5 l
编辑 图 37 7 j' k1 f! X7 Y c5 J, F
VDMA IP核具体配置说明如下。; M- ~' N h; V8 t
- Frame Buffers配置为4个。
- Write Burst Size、Read Burst Size均配置为128。
- 读通道的Stream Date Width配置为8。
- 读/写通道的Line Buffer Depth均配置为2048。
* \( v; A5 Z1 q% G: e! H 编辑 图 38 ! P }9 o; l( P* u
- 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。1 t/ r1 G" [& a% y: i3 O7 l) y
编辑 图 39 2 h+ R% L% i0 M9 k5 m
Video In to AXI4-Stream IP核 本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。
1 l( n3 j! b1 c' m) p Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。
) T+ ~# _) b( N - Full模式:Pixels Per Clock配置为8,即每个时钟8个像素。Base模式:Pixels Per Clock配置为2,即每个时钟2个像素。
- 视频格式配置为Mono/Sensor。
- 数据位宽配置为8bit。6 k/ ~) F' Z) S1 ^
编辑 图 40 + {# h( Z$ }$ @* k0 L5 N
AXI4-Stream to Video Out IP核 本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。, h' U$ z$ A, ] i2 _7 W
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。- x# _' F1 ~/ h+ J, p
- FIFO Depth配置为2048。
- Clock Mode配置为Independent(独立时钟)。 B) W, ^* O/ a
编辑 图 41
' Y/ g9 R( y# n) _2 l. v- v% Y9 m( a Video Mixer IP核 本案例使用Video Mixer IP核将视频数据叠加到1920 x 1080分辨率的视频中。
( b$ Z8 {0 _! Q, j: V1 a Video Mixer IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg243-v-mix-v2.0.pdf》,具体配置说明如下。
( _) J3 O, G" P V8 x% F7 z Mixer通过MicroBlaze配置寄存器进行使能。
! d q% g$ }* {- m* F1 G' V6 f 编辑 图 42
" ?, C) M4 ?, n/ X; A - Number of Layers配置为3,其中Master Layer(s_axis_video)未使用,仅使用Layer1(s_axis_video1)与Layer2(s_axis_video2)。当采集黑白CameraLink相机的图像时,使用Layer1;当采集彩色CameraLink相机的图像时,使用Layer2。
- 配置可支持的最大分辨率为1920 x 1080。4 C$ m7 \. G( C. |
编辑 图 43
' s6 T3 q: `( u9 H0 Q6 B2 c VTC IP核 本案例使用VTC IP核产生用于视频输出的时序。
: c+ k3 U6 E- l' K! g VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。
: t7 m5 s% S: c - 点击Detection/Generation,确保不勾选"Include AXI4-Lite InteRFace"及"Enable Detection"。+ y* @, X+ f$ T9 U8 V0 b+ q) M- P
编辑 图 44
$ s5 q+ G5 s' T6 Y - 点击Default/Constant,Video Mode配置为1080p,其余配置保持默认。- D! g ~: k* S4 @6 l# X' j
编辑 图 45
9 F, @* Y) e4 L8 b! }1 c Sensor Demosaic IP核 本案例使用Sensor Demosaic IP核将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
$ k$ W, a1 W L ^: R. f+ j9 s ? Sensor Demosaic IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg286-v-demosaic.pdf》,具体配置说明如下。图像宽高以及Bayer的格式,通过MicroBlaze配置寄存器进行设置。
" J |+ A' ~0 G: B1 { 编辑 图 46 % X5 N0 i$ Y% g D
由于Sensor Demosaic IP核视频数据输出格式为RBG,因此使用AXI4-Stream Subset Converter IP核将RBG转换成RGB,再进行视频输出。
0 s5 ~5 N* [# ?9 W1 j5 J: Q 编辑 图 47
+ v# L; t8 j3 j+ p, k: U7 r 编辑 图 48 ; R6 o1 M$ P6 t( q" V5 ~# z
AXI4-Stream Switch IP核 本案例使用AXI4-Stream Switch IP核选择黑白或彩色CameraLink相机视频数据进行处理。
. w) x4 A, q8 a) _ |$ _5 y AXI4-Stream Switch IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg085-axi4stream-infrastructure.pdf》,具体配置说明如下。本案例通过MicroBlaze配置寄存器,选择将S00_AXIS(视频数据输入通道)路由到M00_AXIS(黑白CameraLink相机视频数据处理通道)或M01_AXIS(彩色CameraLink相机视频数据处理通道)。5 v& R4 q" U: u
- Number of slave interfaces配置为1,即配置1个Slave接口。
- Number of master interfaces配置为2,即配置2个Master接口。
- Use control register routing配置为Yes,即使能AXI4-Lite接口。0 e: J3 X: K2 L% Z4 I
编辑 图 49
% y* L1 F9 D6 W6 z Vivado工程编译 申请IP核License 如需重新编译工程或打开Video Mixer IP核,需在Xilinx官网申请Video Mixer IP核的免费License,并将其正确导入。License申请与导入方法,请查阅调试工具安装文档相关章节,其它IP核无需License。
' v. B* p0 e8 k$ `* M 成功导入后,可在View License Status窗口发现新添加的License。. J- _4 C2 d4 j- k4 f/ @
编辑 图 50 , f2 }* r# J+ ?/ l: f
工程编译异常解决 本案例包含HLS IP核,由于Vivado工程文件路径过长,可能导致工程编译过程中出现如下错误。 T8 b3 G' ^+ {
编辑 图 51 ; g& s! l# k. [( E! ~; `( T* W' e
可在Tcl Console窗口执行如下命令,重新生成HLS IP核相关文件,即可正常编译工程。- |% p/ q# o2 ^3 G4 t" c1 D2 m* n; ]
Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_demosaic_0_0]}
9 f# Y* f7 q& R" V' t; l 编辑 图 52 1 ]6 D% Y" b( i, Z( D
Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_mix_0_0]}# q ~ ]. B# @5 I) O
编辑 图 53 ' g, e3 g. T9 s3 [5 }0 J
* J5 d; Q1 n" b q3 C8 ~ C! O9 U8 W3 w
|