EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Tronlong123 于 2024-7-21 17:47 编辑
7 o6 \ R" v- v6 C' i Z$ N' n; |
2 p; T4 w8 O" c' N& n$ [
; h8 @* |5 h/ y) X f 1 cameralink_display案例 42 _1 h! ^/ j3 \, @/ t
1.1 案例功能 4
" ]) ^ o/ i1 t 1.2 操作说明 4
, D+ D# |: z X+ U/ J+ p3 v( W! @ 1.3 关键代码(MicroBlaze) 11 O+ F. Z& h1 c, \7 z: k
1.4 Vivado工程说明 16
g9 Q" n! x+ q 1.5 模块/IP核配置 20
* t) s' p& c, R: Y( z 前 言 本文主要介绍FPGA视频开发案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx SDK 2017.4。
; ^8 O1 l% t- V! c6 F5 d7 ^7 g 评估板简介 创龙科技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等接口,方便用户快速进行产品方案评估与技术预研。
/ _) f5 Y& K1 a' C
编辑 在进行本文如下操作前,请先按照调试工具安装文档安装Xilinx Vivado开发工具包。本文默认使用创龙科技的TL-DLC10下载器进行操作演示。# [: C! t" l/ q N
根据评估底板丝印将Artix-7的BOOT SET拨码开关(SW3)拨至01(1~2),此档位为SPI FLASH启动模式(此模式可进行程序在线加载、固化并离线启动),并将评估板通过下载器正常连接至PC机。* a' J% b( K/ d8 Q4 |: C" U, P% A
编辑 图 1 3 ?; B# c5 I) @2 T
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两个目录。+ S9 C3 n0 r, j a% g4 [& k; T
案例功能 案例功能:评估板通过FMC视频模块TLCameraLinkF的CameraLink接口采集分辨率为1280 x 1024的视频,并通过TLCameraLinkF模块的HDMI OUT接口输出采集到的视频。0 j/ u3 T4 q: O8 U; D: m2 j
编辑 图 2 程序功能框图 6 ?, r: N) P1 L$ S' c, r
本案例FPGA程序支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。
7 k2 l! R' m9 Y3 C R7 |9 m Full模式工程编译后生成的可执行文件为cameralink_display_full_xx.bit,Base模式工程编译后生成的可执行文件为cameralink_display_base_xx.bit。
! N' [ W' c/ V8 [7 b6 I 操作说明 本案例支持三款CameraLink相机,具体说明如下。
- E- s% r, T* J+ K3 \- q/ S6 k% J7 S0 n; {, ~! [/ q4 W) C8 ~0 ~
厂家 相机型号 支持模式 相机性能 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模式硬件连接方法
8 ?" F F2 B2 C( B& M 如采用Full模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。
9 b/ u: M& R8 O. | 请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将CameraLink相机的CL1通过数据线连接至TLCameraLinkF模块的CameraLink2接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。% [5 O) j6 N. W, X2 a
编辑 图 3
) ]* W" L7 i7 n+ ?# g) H- o- r Base模式硬件连接方法
; F y/ j2 T6 }, a0 L 如采用Base模式,请将创龙科技的TLCameraLinkF模块连接至评估板FMC接口,评估板J1跳线帽选择1.8V档位,以配置FMC IO的BANK电压为1.8V。
" ~( [8 c* T: Y2 k! \ c 请将CameraLink相机的CL0通过数据线连接至TLCameraLinkF模块的CameraLink1接口,将HDMI显示屏通过数据线连接至TLCameraLinkF模块的HDMI OUT接口。
" }/ A# W! g/ W c, F 编辑 图 4 % O. F+ s% ?! H
下面对三款不同型号的CameraLink相机在Full/Base模式下的操作步骤进行说明。) ?5 t: R8 o' y8 [4 c Y7 b
- 黑白CameraLink相机RS-A5241-CM107-S00,Full模式1 a% b/ i$ D$ ?1 n0 x2 g
请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出黑白图像。1 B5 i! w* A+ ~7 [3 P P' K+ n
编辑 图 5
8 T. H; {$ \6 d* b 编辑 图 6
/ O- d! W% ^& p0 \$ h3 d# z8 ? - 彩色CameraLink相机RS-A5241-CC107-S00,Full模式" q/ x7 ]0 u5 Q% N" D$ C5 M
请运行Full模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"1"选择为Full模式。配置完成后,即可看到HDMI显示屏输出彩色图像。
& Q; X" t# \! J 编辑 图 7 0 [" L( N( Y! y3 R) Y* F& l
编辑 图 8 ( f/ j9 E# F2 ]2 C3 d
备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。
# i& [1 O0 L+ q/ V' _ j6 Y* Y/ h - 黑白CameraLink相机RS-A5241-CM107-S00,Base模式( w8 F n3 ~" z
请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"1"选择相机型号为RS-A5241-CM107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出黑白图像。/ k( X2 K; a2 h9 S' ^! S* q, ^8 I* N: C
编辑 图 9
( C' H) J4 D9 ]2 O$ Y9 q l 编辑 图 10 - |" j# J+ q1 ~# _
- CameraLink相机RS-A5241-CC107-S00,Base模式: H# Q# I' p2 ?2 B2 C
请运行Base模式程序,即可看到串口调试终端打印如下信息。请先输入"2"选择相机型号为RS-A5241-CC107-S00,再输入"2"选择为Base模式。配置完成后,即可看到HDMI显示屏输出彩色图像。
& D4 H. d5 }) @# x* S: a 编辑 图 11 * @- C* I$ H) S: Q8 O
编辑 图 12
1 s: }6 r7 [; i6 r6 y. a& f% r 备注:由于彩色CameraLink相机RS-A5241-CC107-S00无白平衡功能,故图像颜色偏绿。% j5 d& g: ^7 r8 Y w3 h
- 黑白CameraLink相机MVC1381SAM-CL60-S00,Base模式
) |. q( X' p+ b' c& H* O& y: B 请运行Base模式程序,即可看到串口调试终端打印如下信息。请输入"3"选择相机型号为MVC1381SAM-CL60-S00。配置完成后,即可看到HDMI显示屏输出黑白图像。
6 s4 X: r3 A+ X; w) | 编辑 图 13 ' ?) b. l3 x" G4 Y
编辑 图 14
1 B1 U: w, N+ c+ d 关键代码(MicroBlaze) MicroBlaze裸机源码为"sw\baremetal_demo\project\cameralink_display\src\",关键代码说明如下。/ n" R) Y: Q; W$ v! J/ G$ u2 @
- main函数。' P! L1 C) L: O% N0 I- a
编辑 图 15
4 e1 ~1 v3 Y q2 h' p: F0 ~$ K 编辑 图 16
) g5 U5 \2 @5 v& H* c5 t 编辑 图 17 5 B E( F6 B3 R$ U. H7 N, e. z
- 初始化VDMA,将采集到的视频数据缓存至DDR,再进行HDMI视频输出。
2 E; ~: e% ?# m: l1 e 编辑 图 18 , T9 Y; @% Z8 J6 v4 w; A2 M q+ i
- 初始化Sil9022。5 o% h% m8 H$ {1 k5 I6 G
编辑 图 19 C' w) G9 C- u- s. K
- 初始化AXIS Switch IP核。
5 q& Q: `6 ]! n3 R6 F9 Y. ~ 编辑 图 20
5 o' ?5 H; ]- L# u& R) i2 e - 初始化Sensor Demosaic IP核,以将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。! H) C+ I+ b6 @+ m0 }" ?% T
编辑 图 21
; o) t9 l6 D* _, h - 初始化Video Mixer IP核。
. u% g% ~; U; k* j 编辑 图 22 ; l& \: a s U! \
Vivado工程说明 点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。
. T* s% S u9 y+ C! L% K 编辑 图 23
* V% [6 X5 F9 q% O/ {. U 本案例分别支持CameraLink Full模式(工程为cameralink_display_full_xx)与CameraLink Base模式(工程为cameralink_display_base_xx)。两者区别如下:: X1 G9 h% T3 F; O- \0 y( Q
- Full模式Vivado工程:Pixels Per Clock配置为8,即每个时钟8个像素。
- Base模式Vivado工程:Pixels Per Clock配置为2,即每个时钟2个像素。' a6 ?. ?# U# E
编辑 图 24 Full模式
. d, L2 c# t; t2 y6 u 编辑 图 25 Base模式 ( i( B" w7 Y! D
CameraLink Full模式Vivado工程顶层文件为"hw\project\cameralink_display_full_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_full.v"。
$ X/ v4 Z1 G* A, u* O6 N CameraLink Base模式Vivado工程顶层文件为"hw\project\cameralink_display_base_xx\cameralink_display.srcs\sources_1\imports\hdl\cameralink_display_base.v"。& }. O" l7 O3 Q! m* W8 t4 F. d
关键代码说明如下。- t& C; a2 P$ e6 v: A% r3 u
- 定义模块接口。( K! f7 _/ ^& D G6 S' t
编辑 图 26 m2 I3 @ Y8 Y! \+ X! ]% V
- 使用STARTUPE2原语输出复位信号。
; z& e/ f4 J3 O: _ 编辑 图 27
- k$ x5 H9 \8 Z4 _- \: K - 调用Block Design。
* d! k M! M" U( P5 n 编辑 图 28
# U8 M, k/ U4 D8 f0 R8 \/ I# g 模块/IP核配置 lvds_n_x_1to7_sdr_rx模块 本案例使用lvds_n_x_1to7_sdr_rx模块将CameraLink相机输入的差分视频数据转化成并行视频数据。/ J6 ~0 C% o$ t9 ^! m/ u
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",具体配置说明如下。
# n' u/ z2 l5 n - delay_refclk_in接入由Clocking Wizard输出的200MHz参考时钟。4 U: M( _+ R6 V+ T6 i
编辑 图 29 , }. F; Z; }6 f- a3 w6 b$ B8 x
- 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。配置X为4,表示“每个通道的数据差分对数量为4”。' d1 z5 }/ I7 m( z, P+ y9 M
- Base模式:单通道,每通道数据差分对为4组,需1个连接器。
- Medium模式:双通道,每通道数据差分对为4组,需2个连接器。
- Full模式:三通道,每通道数据差分对为4组,需2个连接器。- U3 \ ~1 f2 o8 ^* S
编辑 图 30
; \2 d6 v9 o/ |# E9 E cameralink_bit_allocation_rx模块 本案例使用cameralink_bit_allocation_rx模块将转化后的并行视频数据进行重组,分离出行同步信号、场同步型号、数据有效信号和像素数据。
/ z0 x! e% n1 @ g! V _! V; e+ E- m cameralink_bit_allocation_rx模块源码为Vivado工程"cameralink_display.srcs\sources_1\imports\hdl\cameralink_bit_allocation_rx.v",具体配置与关键代码说明如下。
( P4 ?7 [% j6 h- v1 a, K9 ^8 { - 配置N(通道数量)为3对应Full模式,配置N为1则对应Base模式。1 I' [4 \: O# v* s, v' z
- Base模式:单通道,输出端PortA、PortB、PortC有效。
- Medium模式:双通道,输出端PortA、PortB、PortC、PortD、PortE、PortF有效。
- Full模式:三通道,输出端PortA、PortB、PortC、PortD、PortE、PortF、PortG、PortH有效。
, y- @) {* _6 n$ u a, W9 B 编辑 图 31 : _' j: F) h& U& O3 V
- data_in的数据排列格式。& B! J! [ u! N
下图为Base模式单通道4组差分对图像数据排列,例如TxIN[7:6]对应D[0:1],TxIN[4:0]对应D[2:6]。) J5 a3 }" \! }- C- @
编辑 图 32
$ `/ R8 y" d1 n% w8 R2 w) n 将Base模式单通道4组差分对图像数据保存在data_in数组的排列顺序如下。% M3 D7 ^# S; M: Y: E* b
编辑 图 33
5 d5 l5 c& |2 I+ ~3 J4 C - 分离行同步信号、场同步信号、数据有效信号和像素数据。9 c2 C" S3 z2 M4 Y6 B5 X
根据CameraLink V2.0协议,RX24对应行有效信号LVAL(行同步信号),RX25对应帧有效信号FVAL(场同步信号),RX26对应数据有效信号DVAL,具体对应关系如下。
" o1 b( l' P4 {, w ?1 b 编辑 图 34 9 }0 [" w E3 G6 F4 a4 r! R; m k+ N
根据上图说明,即可将行同步信号、场同步型号、数据有效信号和像素数据进行分离。
h3 {3 {3 H5 y1 I \ 编辑 图 35 / i3 i( b4 W0 r0 f) H
VDMA IP核 本案例使用VDMA IP核进行视频数据缓存。' W; M d' h( ^3 C9 a/ ]+ _
VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg020_axi_vdma.pdf》。
0 b' m" r- i, l, H. R( b# E1 m VDMA IP核寄存器列表如下,其中S2MM_xx将视频数据缓存至DDR,MM2S_xx将视频数据从DDR中取出。
" O% Z' S1 J' w" S- h- ^3 h9 k 编辑 图 36 - I7 a) T/ p: f; w- @$ @
编辑 图 37
a6 d' A# H/ Z4 q6 [3 v VDMA IP核具体配置说明如下。
9 o; b2 k8 ], p# D$ C - Frame Buffers配置为4个。
- Write Burst Size、Read Burst Size均配置为128。
- 读通道的Stream Date Width配置为8。
- 读/写通道的Line Buffer Depth均配置为2048。# X8 N! f; E% {) ]7 i) E
编辑 图 38 ! b) M: q! b5 M$ k1 J0 ~
- 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。2 M/ X k, M% T! j( S6 L4 C w9 T* M
编辑 图 39
: ~9 S. ?2 M+ ]! u- t Video In to AXI4-Stream IP核 本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。' t! a0 F2 l+ \
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。
1 U4 [9 }% ~* t' f8 H - Full模式:Pixels Per Clock配置为8,即每个时钟8个像素。Base模式:Pixels Per Clock配置为2,即每个时钟2个像素。
- 视频格式配置为Mono/Sensor。
- 数据位宽配置为8bit。% \' T8 \2 y; E# r h+ @9 ^
编辑 图 40
# g! W- U; c5 r) K2 G AXI4-Stream to Video Out IP核 本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。6 @5 v8 H2 x$ T% c8 o4 {
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。- _: C P- p$ P" ~6 r: |$ n
- FIFO Depth配置为2048。
- Clock Mode配置为Independent(独立时钟)。
+ |/ }: @0 i2 [ 编辑 图 41 ; G& A+ G4 N% J( L: T4 ^
Video Mixer IP核 本案例使用Video Mixer IP核将视频数据叠加到1920 x 1080分辨率的视频中。
* \0 @* K+ J: ~: O n& G+ W+ n% ] Video Mixer IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg243-v-mix-v2.0.pdf》,具体配置说明如下。1 g8 M" r. p0 b% n; p# Y7 o
Mixer通过MicroBlaze配置寄存器进行使能。
- Y. b, ~: O. E 编辑 图 42 + e/ J/ t: e) C; y. ^9 M. b, 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。
9 g+ c) D" ?5 Z/ Z8 I 编辑 图 43
/ Q7 `; F4 `' g+ U( v VTC IP核 本案例使用VTC IP核产生用于视频输出的时序。
3 x9 C" }- F, }, R7 ?* c6 B VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。
! W% E" G2 k9 p/ O4 Y5 y+ V - 点击Detection/Generation,确保不勾选"Include AXI4-Lite InteRFace"及"Enable Detection"。4 s6 v& r( z. z& W
编辑 图 44 3 C5 }" H6 B- s7 S, p2 X6 T
- 点击Default/Constant,Video Mode配置为1080p,其余配置保持默认。
" w, e2 \: C8 g: Y 编辑 图 45 : \( L/ r# a9 W
Sensor Demosaic IP核 本案例使用Sensor Demosaic IP核将彩色CameraLink相机的Bayer格式视频数据转化为RGB格式。
$ Q8 g/ |7 E2 f5 J7 O* p Sensor Demosaic IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg286-v-demosaic.pdf》,具体配置说明如下。图像宽高以及Bayer的格式,通过MicroBlaze配置寄存器进行设置。
4 [' P1 h+ j) T. D P/ t& U0 G 编辑 图 46 4 t% X- H) O. s# [0 d: Z
由于Sensor Demosaic IP核视频数据输出格式为RBG,因此使用AXI4-Stream Subset Converter IP核将RBG转换成RGB,再进行视频输出。3 J9 V( @, f- r. Z
编辑 图 47
$ u7 H$ b- V- N' A; Q3 e: p, g 编辑 图 48 " H) |& r! e7 d- G1 p4 M8 g7 h
AXI4-Stream Switch IP核 本案例使用AXI4-Stream Switch IP核选择黑白或彩色CameraLink相机视频数据进行处理。
8 Z$ `1 D& `' u. _' S AXI4-Stream Switch IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg085-axi4stream-infrastructure.pdf》,具体配置说明如下。本案例通过MicroBlaze配置寄存器,选择将S00_AXIS(视频数据输入通道)路由到M00_AXIS(黑白CameraLink相机视频数据处理通道)或M01_AXIS(彩色CameraLink相机视频数据处理通道)。3 N9 ~) A6 D3 ~1 Z$ F
- Number of slave interfaces配置为1,即配置1个Slave接口。
- Number of master interfaces配置为2,即配置2个Master接口。
- Use control register routing配置为Yes,即使能AXI4-Lite接口。' w" K) R# l0 Y. g4 x. ?
编辑 图 49 4 p( A. N1 V* O" Z
Vivado工程编译 申请IP核License 如需重新编译工程或打开Video Mixer IP核,需在Xilinx官网申请Video Mixer IP核的免费License,并将其正确导入。License申请与导入方法,请查阅调试工具安装文档相关章节,其它IP核无需License。2 y" s" `, l; ^( a x* [1 ~2 k: B: z
成功导入后,可在View License Status窗口发现新添加的License。1 l7 g4 S1 K6 C' d1 t& Q6 c
编辑 图 50
: ~6 ^1 Q( \* m& [: M% R* i 工程编译异常解决 本案例包含HLS IP核,由于Vivado工程文件路径过长,可能导致工程编译过程中出现如下错误。# t* U) o& H2 M9 m
编辑 图 51 . `5 |# ~$ o7 i3 D& h8 _/ ]
可在Tcl Console窗口执行如下命令,重新生成HLS IP核相关文件,即可正常编译工程。9 S' E6 T& S# s2 @, b+ m+ ~
Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_demosaic_0_0]}
& [. V" H X( S' l 编辑 图 52
0 E9 Y; c4 W. G4 p( h Vivado# foreach ip_in_proj [get_ips] {compile_c [get_ips cameralink_display_bd_v_mix_0_0]} x0 K. R( y$ m' C3 x' U4 ]+ v* ?7 F
编辑 图 53 6 F6 [+ l y& w0 A0 v
" W2 p! h/ i, b I% Y3 ^* {( }
& j( E6 Q v% V3 s9 ^3 j |