EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Tronlong123 于 2024-7-21 17:47 编辑 {* w+ ^5 _7 L' \2 k* {/ J5 y& E
- |! o; I5 a. ?$ j) \7 X* s) X
0 [7 A' C4 T) X$ G3 L6 F- o 1 cameralink_display案例 41 n8 Z- c3 M7 m% T" }
1.1 案例功能 41 z6 p. e( K) U2 B2 g
1.2 操作说明 42 C7 F8 Y5 m8 Y
1.3 关键代码(MicroBlaze) 11$ t8 z# E$ s, l
1.4 Vivado工程说明 16+ x, W, ^2 ^3 \
1.5 模块/IP核配置 20* v# s* c [- y6 ~8 J
前 言 本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。( }( }$ g2 Q3 D6 X0 F: G+ `! p5 A
评估板简介 创龙科技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等接口,方便用户快速进行产品方案评估与技术预研。
' ?# s- A7 E$ Z. C
编辑 在进行本文如下操作前,请先按照调试工具安装文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。
$ H5 _8 S+ t7 } B6 t0 b 根据评估底板丝印将Artix-7的BOOT SET拨码开关(SW3)拨至01(1~2),此档位为SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正常连接至PC机。1 x4 U5 m7 V( O0 x
编辑 图 1
: A; [0 h" c5 i2 ^ 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 ^% w7 s6 j1 J( B( Q 案例功能 案例功能:评估板通过FMC视频模块TLCameraLinkF的CameraLink接口采集分辨率为1280 x 1024的视频,并通过TLCameraLinkF模块的HDMI OUT接口输出采集到的视频。3 }2 H' C: K) \. A4 c; R" i6 }
编辑 图 2 程序功能框图
% Q; d& f5 v' x( L5 f- r0 c! A 本案例FPGA程序支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。1 d; [. s0 o: n$ ?
Full模式工程编译后生成的可执行文件为cameralink_display_full_xx.bit,Base模式工程编译后生成的可执行文件为cameralink_display_base_xx.bit。
D( c5 a$ L5 I& i' A, G- M/ J2 W# f5 | 操作说明 本案例支持三款CameraLink相机,具体说明如下。) Q2 {1 X' r% X. W3 J9 X
" S( F7 a/ a: s 厂家 相机型号 支持模式 相机性能 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模式硬件连接方法
' C2 |9 ]) F8 i$ c+ K' R5 Z 如采用Full模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。
# t: M( L* {$ D, M( g: f" z0 d 请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将CameraLink相机的CL1通过数据线连接至TLCameraLinkF模块的CameraLink2接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。* F: I" t! \" M9 `/ n7 z
编辑 图 3 ' o3 L, l! R! v6 N+ ~% a Q* J# }- W
Base模式硬件连接方法
- [% n8 c. V( W. R 如采用Base模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。* b! l. R! n% F, v- p2 C
请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。
! l C/ r7 d$ U; y# B5 a 编辑 图 4
5 F h2 @3 M2 i. i1 {0 |6 P0 d 下面对三款不同型号的CameraLink相机在Full/Base模式下的操作步骤进行说明。
+ u# h5 M+ `! Z - 黑白CameraLink相机RS-A5241-CM107-S00,Full模式8 a: g8 L& d4 g) K7 D
请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出黑白图像。
6 T0 n* k6 K/ p: N; x) ]; ~" D 编辑 图 5
* H9 ~( x) w. J, h8 C, K: ?8 r 编辑 图 6 ( L5 l- e$ C5 A1 O# f5 }" b
- 彩色CameraLink相机RS-A5241-CC107-S00,Full模式, ~$ r9 ~ e- C) H
请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出彩色图像。$ W. H2 j8 ^' i( S' q5 F& l, {
编辑 图 7
" @7 F5 y% M5 x* S 编辑 图 8 : S: H9 r# U* | ~, E. J
备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
) Q0 [) V# Z" ^5 V - 黑白CameraLink相机RS-A5241-CM107-S00,Base模式
6 p! ]6 \6 j h b' x 请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出黑白图像。
! H9 c* `9 A2 Y! V9 W G 编辑 图 9
6 R8 X. [" d9 c( U 编辑 图 10
: ^/ O. D. e2 o. R' \( g# A8 B - CameraLink相机RS-A5241-CC107-S00,Base模式
( I4 V D8 f1 V5 Z0 e! K 请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出彩色图像。1 L" R/ D; |4 p' U
编辑 图 11 / i! w" C# Z$ ]& J
编辑 图 12
L- {6 |- {: \5 {+ |1 P 备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
) } \3 S) c" N$ P) [. e. u' Y - 黑白CameraLink相机MVC1381SAM-CL60-S00,Base模式
( b$ b; i- b( c* n 请运行Base模式程序,即可看到串口调试终端打印如下信息。请输入"3"选择相机型号为MVC1381SAM-CL60-S00。配置完成后,即可看到HDMI显示屏输出黑白图像。; A0 b7 b8 l8 l; \
编辑 图 13 9 K& `) |/ W4 A7 j
编辑 图 14 ; m7 H, i( X6 d+ W$ `5 ?
关键代码(MicroBlaze) MicroBlaze裸机源码为"sw\baremetal_demo\project\cameralink_display\src\",关键代码说明如下。 B2 } L* p9 F- Z3 A
- main函数。
3 }" {9 _, W. ]2 _: C2 y) ? 编辑 图 15
1 K' I' g; m5 |! h. I 编辑 图 16 * Z& I4 Q) w( z9 h/ {
编辑 图 17 * z& J k3 {( t$ H/ Q) ^
- 初始化VDMA,将采集到的视频数据缓存至DDR,再进行HDMI视频输出。
% A& Y( s% s' A: p! O4 d6 i0 E3 A 编辑 图 18 9 X) ?. S" _% |
- 初始化Sil9022。
9 o8 F- ?; t' {$ D 编辑 图 19 7 M7 E4 n( c' c/ [
- 初始化AXIS Switch IP核。 N' W7 T: z! V& f9 T1 w; {" ~3 E
编辑 图 20
; R8 ~ s% H! N: ^. F' g# h - 初始化Sensor Demosaic IP核,以将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。, u% L0 y) b; ^
编辑 图 21
2 V& ~. L$ R5 \. o+ z/ L- D1 q - 初始化Video Mixer IP核。 D' W/ q- f2 d4 O# L& i
编辑 图 22
3 Y+ _& D! R: `7 A; g& t% m Vivado工程说明 点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。; {+ E1 o3 i* D3 j- z
编辑 图 23 7 o- j0 ?$ P- Q0 u
本案例分别支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。两者区别如下:2 ~' C( L% k6 E( e( B: t
- Full模式Vivado工程:Pixels Per Clock配置为8,即每个时钟8个像素。
- Base模式Vivado工程:Pixels Per Clock配置为2,即每个时钟2个像素。
; Q* l9 a/ L4 q 编辑 图 24 Full模式 , e. l2 H/ D# s
编辑 图 25 Base模式 e* [6 t9 n( a9 `$ _
CameraLink Full模式Vivado工程顶层文件为"hw\project\cameralink_display_full_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_full.v"。. X% N8 V+ l6 S9 |
CameraLink Base模式Vivado工程顶层文件为"hw\project\cameralink_display_base_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_base.v"。
' n& e! Q/ T; m; X" { 关键代码说明如下。7 S I4 u! t) i' ]( v3 f7 u& E
- 定义模块接口。
1 i7 ^) ?' x" |. `; t: P& U6 P 编辑 图 26 6 \1 T; i, b- |4 e% n( _
- 使用STARTUPE2原语输出复位信号。
d$ v, A' E# e% N 编辑 图 270 F& ]% a! V% Q8 Q+ c2 P$ }
- 调用Block Design。
& \2 N" X; g" {% O8 k$ N' R& g 编辑 图 28 ! Y+ B0 e4 H2 s1 s
模块/IP核配置 lvds_n_x_1to7_sdr_rx模块 本案例使用lvds_n_x_1to7_sdr_rx模块将CameraLink相机输入的差分视频数据转化成并行视频数据。
+ h' O; t# H A3 P 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",具体配置说明如下。
3 ?$ v0 o1 q& [ - delay_refclk_in接入由Clocking Wizard输出的200MHz参考时钟。- Z- K1 g: r W; {
编辑 图 29
' U) Y* m1 j G; ^& ] - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。配置X为4,表示“每个通道的数据差分对数量为4”。
$ X$ \$ Y& w0 m8 C! p4 T - Base模式:单通道,每通道数据差分对为4组,需1个连接器。
- Medium模式:双通道,每通道数据差分对为4组,需2个连接器。
- Full模式:三通道,每通道数据差分对为4组,需2个连接器。# y, ~+ L- R8 Z; N- p" U
编辑 图 30
9 r# j& B9 T& u) K% ?( L cameralink_bit_allocation_rx模块 本案例使用cameralink_bit_allocation_rx模块将转化后的并行视频数据进行重组,分离出行同步信号、场同步型号、数据有效信号和像素数据。6 c! `/ l" {0 }( w" l% e# d
cameralink_bit_allocation_rx模块源码为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\cameralink_bit_allocation_rx.v",具体配置与关键代码说明如下。
6 T" M2 ]5 y" Y% o1 \ - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。7 }5 i( H& j9 C0 a: d
- Base模式:单通道,输出端PortA、PortB、PortC有效。
- Medium模式:双通道,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。
- Full模式:三通道,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。
( Y: k7 u7 ]* D- s 编辑 图 31
! d0 o) b7 k( ^- l& r/ F g- t - data_in的数据排列格式。
: Y. T/ w/ p. |! J% x& w2 v, Y 下图为Base模式单通道4组差分对图像数据排列,例如TxIN[7:6]对应D[0:1],TxIN[4:0]对应D[2:6]。
; i$ L+ P9 n: ?+ u 编辑 图 32
_3 V0 r3 H: V 将Base模式单通道4组差分对图像数据保存在data_in数组的排列顺序如下。
3 L: ]+ A! T; ^) n0 \ 编辑 图 33 2 w, S5 m! u) e( O7 p1 q
- 分离行同步信号、场同步信号、数据有效信号和像素数据。' p! I0 v8 s" B# d
根据CameraLink V2.0协议,RX24对应行有效信号LVAL(行同步信号),RX25对应帧有效信号FVAL(场同步信号),RX26对应数据有效信号DVAL,具体对应关系如下。
$ g! B! }, K' g: K8 C 编辑 图 34
. y- S8 B# I% k9 G 根据上图说明,即可将行同步信号、场同步型号、数据有效信号和像素数据进行分离。- g6 g; Q6 ~" u W
编辑 图 35 , B( I6 y6 z4 o; Z/ P
VDMA IP核 本案例使用VDMA IP核进行视频数据缓存。
5 w/ X% q7 S' M0 X+ V$ @ VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg020_axi_vdma.pdf》。
& ?) J5 _5 \5 X. ~3 O% h6 B VDMA IP核寄存器列表如下,其中S2MM_xx将视频数据缓存至DDR,MM2S_xx将视频数据从DDR中取出。 W i; j" n5 d/ l( m' N
编辑 图 36 2 ~; s" Z: o+ x8 v7 F. O
编辑 图 37
* m! [2 j7 X! i! v ]4 U VDMA IP核具体配置说明如下。# G+ \8 Z" w6 F6 ]9 i
- Frame Buffers配置为4个。
- Write Burst Size、Read Burst Size均配置为128。
- 读通道的Stream Date Width配置为8。
- 读/写通道的Line Buffer Depth均配置为2048。
8 O! M2 e3 ]8 o: o 编辑 图 38
( S H8 k) U2 l4 E" Z - 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。1 x- J+ L: `* A( r: P9 U
编辑 图 39
8 U4 C+ Y9 f6 T. S( n Video In to AXI4-Stream IP核 本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。! F$ e2 f4 d5 {+ A; z
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。, n8 ?3 d! d0 }) F" b
- Full模式:Pixels Per Clock配置为8,即每个时钟8个像素。Base模式:Pixels Per Clock配置为2,即每个时钟2个像素。
- 视频格式配置为Mono/Sensor。
- 数据位宽配置为8bit。" q; k5 a# U& e0 ]3 X4 s* d
编辑 图 40
, ]- ]4 W# B8 l AXI4-Stream to Video Out IP核 本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。% b5 `' n' n/ ^
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。
9 E( d% C8 e, D3 Y/ W @ - FIFO Depth配置为2048。
- Clock Mode配置为Independent(独立时钟)。, A9 H+ e M! ?! D2 h0 i! |- w& _
编辑 图 41
, K' l, y7 U8 `! N" e2 c" `: f Video Mixer IP核 本案例使用Video Mixer IP核将视频数据叠加到1920 x 1080分辨率的视频中。2 b: l) v( G# U& z# k9 K. b M
Video Mixer IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg243-v-mix-v2.0.pdf》,具体配置说明如下。- ]5 w- N% N: }* x
Mixer通过MicroBlaze配置寄存器进行使能。
( g% j! Z5 _ R9 I, s/ X 编辑 图 42 + h3 s: b, Q6 k+ F$ ^
- Number of Layers配置为3,其中Master Layer(s_axis_video)未使用,仅使用Layer1(s_axis_video1)与Layer2(s_axis_video2)。当采集黑白CameraLink相机的图像时,使用Layer1;当采集彩色CameraLink相机的图像时,使用Layer2。
- 配置可支持的最大分辨率为1920 x 1080。
2 i& F4 d' X- H" K$ q9 A6 h4 \* Z 编辑 图 43
2 v+ \ g1 F. M% q VTC IP核 本案例使用VTC IP核产生用于视频输出的时序。' S3 V* _+ c$ {( o+ `' \% a$ k7 ~
VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。
7 G3 v+ K% R7 N" X6 p! Y - 点击Detection/Generation,确保不勾选"Include AXI4-Lite InteRFace"及"Enable Detection"。
' }0 P& P9 j3 q: Z) C% Q8 d5 l) D; G 编辑 图 44
% N& x# ?/ M: [% Y - 点击Default/Constant,Video Mode配置为1080p,其余配置保持默认。9 h! ]5 J' [1 a# g) i3 K
编辑 图 45 . v7 `. ^% w, a& {$ q/ _
Sensor Demosaic IP核 本案例使用Sensor Demosaic IP核将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
L, v! w0 Z9 l, t& @' ~, Q1 T Sensor Demosaic IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg286-v-demosaic.pdf》,具体配置说明如下。图像宽高以及Bayer的格式,通过MicroBlaze配置寄存器进行设置。 R6 U- ]+ E% `8 k- D
编辑 图 46 " G$ E! _9 v( }) l
由于Sensor Demosaic IP核视频数据输出格式为RBG,因此使用AXI4-Stream Subset Converter IP核将RBG转换成RGB,再进行视频输出。
0 o& T: c/ Y' N# W0 ^ 编辑 图 47 0 u. n- r' `5 E# z; }6 {
编辑 图 48
5 ?: p9 Z, u# {* F+ M2 | AXI4-Stream Switch IP核 本案例使用AXI4-Stream Switch IP核选择黑白或彩色CameraLink相机视频数据进行处理。
4 P2 B- x# a5 X AXI4-Stream Switch IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg085-axi4stream-infrastructure.pdf》,具体配置说明如下。本案例通过MicroBlaze配置寄存器,选择将S00_AXIS(视频数据输入通道)路由到M00_AXIS(黑白CameraLink相机视频数据处理通道)或M01_AXIS(彩色CameraLink相机视频数据处理通道)。3 B, r' f9 W' V# q
- Number of slave interfaces配置为1,即配置1个Slave接口。
- Number of master interfaces配置为2,即配置2个Master接口。
- Use control register routing配置为Yes,即使能AXI4-Lite接口。
% ?% p$ t+ j5 t1 Q4 M* z; h$ E 编辑 图 49
/ }! S: I7 C9 h" E Vivado工程编译 申请IP核License 如需重新编译工程或打开Video Mixer IP核,需在Xilinx官网申请Video Mixer IP核的免费License,并将其正确导入。License申请与导入方法,请查阅调试工具安装文档相关章节,其它IP核无需License。- O& C* S: e. ~; y
成功导入后,可在View License Status窗口发现新添加的License。
* X i& C( I; h5 l1 } 编辑 图 50
9 M: L8 e0 R% O+ x: y2 `+ C 工程编译异常解决 本案例包含HLS IP核,由于Vivado工程文件路径过长,可能导致工程编译过程中出现如下错误。# x+ v& @1 X9 R0 O- Z7 |
编辑 图 51 7 m% a9 G& K5 K' \+ D
可在Tcl Console窗口执行如下命令,重新生成HLS IP核相关文件,即可正常编译工程。
1 G7 k3 E+ x0 V# f7 d7 J M( z& | Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_demosaic_0_0]}
- C: Y* I# H4 ~* k/ j) S4 ? 编辑 图 52
, ?# Z) B# k) q8 w/ b) g3 d7 O0 y Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_mix_0_0]}
. i; H7 n' w$ H8 a+ j 编辑 图 53 $ G. w8 r9 m' `; ~& e; S
) L6 Z- E1 d) S) I; n
; z# W( \6 R$ b
|