|
前言
/ d4 X6 H0 F/ \- \; A$ f/ t4 U% {
$ g& d; b* w. U% o5 l! p' k0 E; E2 [% }" h. `8 v% |3 W5 ?
SDI接口,全称是“数字分量串行接口(Serial Digital Interface)”。按速率可分为标准清新度SD-SDI、高清标准HD-SDI和3G-SDI,其对应速率分别是270Mb/s、1.485Gb/s和2.97Gb/s。目前在航空航天、军事、医疗、交通等领域,SDI的应用广泛度仅次于CameraLink接口。
% c: N' n; E% W. M% y( r. E: `- d0 o4 P- R7 s6 _/ J6 Y0 `4 \
​* s/ F1 C9 {6 W( J {. E+ `" a, s5 x
" j5 `1 d/ C8 E& \) {; M
0 t ^ x+ ?" T# Q5 W; i( |( B1 l0 H
; i. D: C3 [6 oSDI接口优势:
8 p! v" E+ d' G. @8 v2 R(1) 消耗GTX更少,消耗IO更少 t3 i0 |# ^5 d2 N( g& W
如果使用GTX总线,仅需1对GTX,而HDMI则需要3对GTX。CameraLink接口由于走LVDS信号,Base模式下需要11对LVDS信号,Full模式下需要22对LVDS信号,消耗IO数量比GTX SDI多了很多。9 A3 p7 t. V+ n! u& B. ?) O
(2) 传输更稳定
$ p& b$ {) K! i4 g4 p7 t9 f# l. T相较于HDMI接口,SDI接口的自锁扣设计更加稳定可靠,不易脱落,不会因人为因素造成信号中断。
% _% V8 S# ~" b(3) 传输距离更长0 B, V6 F: {8 c) |; V6 E
串行接口是指逐位数据的顺序传输。它的特点是通讯线简单。只要一对传输线可以实现双向通信,特别适合于长距离通信。从理论上讲,SDI的传输距离可以达到100m。
& }( c- H3 g/ I2 r& k(4) 成本更低8 `; C5 a' ^( L) H- k; s* b% R
SDI接口平均每米价格约为4元,相较于HDMI接口的平均每米价格约为10元,SDI接口成本更低。
. x P( l, c9 q; I8 Q9 C5 H
& v$ H3 W; C' M, f6 ?2 a; D- E. \% R: k
创龙科技(Tronlong)的Kintex-7、Zynq-7045/7100等FPGA板卡通过FMC视频模块已实现两种SDI视频输入/视频输出方案:GTX +外接芯片。本文将为您分享基于Kintex-7 FPGA评估板、TL2971A/2972F视频模块的3G-SDI视频输入/输出开发案例,使用外接芯片方式。TL2971A/2972F视频模块模块亦可支持GTX方式。
; y6 C( v# s8 Y" `+ M) h7 ^# k2 X D) h" W
7 Z1 U* j. K3 i8 L; o
' z5 x0 z3 O, n$ y
6 U4 T; }% Z5 `' D) P: Y
●硬件平台
1 o5 l- o( @/ k, L
# j% w* q' E+ z, W
, i% |/ D7 p8 ^7 y: Y" E9 w; d
1 i) f3 h+ l+ D1 i7 }* K# j1 TLK7-EVM评估板8 ^; b0 H H1 Z1 S5 q: [- `6 ^
9 y' p- U$ k7 x
本文基于创龙科技TLK7-EVM评估板、TL2971A/2972F视频模块进行演示。
% p- P* T2 P, n, x# qTLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。4 z: E# ?+ N6 f6 C9 G
评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
9 d+ B n. y4 Z6 Y5 R3 U4 K3 \可申请TLK7-EVM评估板进行快速评估,点tronlong.com/Product/show/93.html,免费哦!9 a1 p" H/ D* s- P# G4 Q1 I4 R
​
5 z5 W M" E2 Z, N7 m: [5 T# \9 d
- J9 C: x4 e0 y) G
2 [* p* ~1 \- b7 ?8 d; D P; _% x. ] TLK7-EVM评估板2 |5 E+ A9 A& |6 ^) s/ G3 Q
4 L, _4 P% S( k- C7 X; `- \
' L+ `" I4 c( P, s
9 [3 d& o+ s/ \2 TL2971A/2972F视频模块
- n8 G9 X7 p; t8 b! L
& ]! ?. P9 y( ]2 LTL2971A/2972F是一款基于FMC LPC标准设计的3G-SDI视频输入/输出模块,与创龙科技Zynq-7000/Kintex-7/Artix-7等评估板配套使用。以下为此模块特点:
" }; o3 t- S* H l; C/ M(1)通过GTX高速串行总线引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。
- K4 q4 L7 E2 N0 b( X(2)通过GTX高速串行总线引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。
6 I. y9 A+ d T% P(3)通过GS2971A芯片引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。" y4 d, C1 v5 @! E% N. S
(4)通过GS2972芯片引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。/ ~9 w) J9 H. L3 |- \/ |
(5)采用标准BNC连接器,支持视频设备热插拔。5 W1 F9 h" ~. Q2 o8 j
​
4 E% Z5 Z7 D2 d7 f$ }+ }1 V
' `! m' q" V1 T- d* @$ {" K# S/ G8 j* O0 ]* u% a9 N
TL2971A/2972F视频模块/ o& K: \) J% s7 R5 K Y: O2 e
. F" d! Q3 v y* {, m# D/ @8 ^( g8 c8 f" @
. v' F: H2 d1 J! u
n& _/ p8 L2 u/ S( U
?" d( C+ ?; O" e# G! l* U9 Z; W3 H
●案例功能, ~5 v: R- F# x q
5 E: ^/ p2 x% B0 u6 W
8 g! G% W$ W' J1 G, }
0 o1 J9 C; |+ T" P本案例为通过GS2971A、GS2972芯片引出SDI视频输入、输出案例。通过GTX高速串行总线引出的SDI视频输入、输出案例即将发布,敬请期待。6 B2 b3 s7 r6 b
案例功能:评估板通过FMC视频模块TL2971A/2972F的SDI IN接口进行1080P60视频采集,并通过TL2971A/2972F模块的SDI OUT接口将采集到的视频进行输出。案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点:site.tronlong.com/pfdownload获取。# P) a, G! g ]- ~7 O( ]3 d# m
+ j$ _$ t0 y8 M0 t" V$ |3 [' T- Q# d6 a; R
开发案例主要包括:
3 m! a( N1 n" N1 d$ |l CameraLink、SDI、HDMI、PAL视频输入/输出案例8 r7 \6 P- `( C' E4 A1 A0 N1 U
l 高速AD(AD9613)采集+高速DA(AD9706)输出案例0 e/ P: D( \. \- O
l AD9361软件无线电案例2 ?) B; C% V! s) [3 G8 w. v' c
l UDP(10G)光口通信案例
. e/ h1 m! n1 x" ol UDP(1G)光口通信案例
/ e# Y @& p3 Rl Aurora光口通信案例8 t4 h- t8 M( c9 l, Z3 k+ F
l PCIe通信案例
! d+ H8 n2 i0 j
! b8 V- Y/ |4 m
! f. X3 @; k/ i% z1 c; I
# G4 i5 q4 P0 i8 [7 Z2 {2 m●案例演示
4 `" l, m" m1 z! y6 \
2 Y+ O2 {% p! R4 l9 V0 m将创龙科技的TL2971A/2972F模块连接至评估板FMC1接口,评估板J1跳线帽选择3.3V档位,以配置FMC IO的BANK电压为3.3V。
0 @# a: p! f' v/ h. u9 i5 H8 Z准备一台拥有HDMI OUT接口的PC机(例如笔记本),通过HDMI数据线将PC机HDMI OUT接口连接至HDMI转SDI模块(厂家:玩视,型号:3G HDMI TO SDI Audio)INPUT接口,PC机HDMI OUT接口用作图像输出。通过SDI数据线将TL2971A/2972F模块的SDI IN接口连接至HDMI转SDI模块的OUTPUT接口。7 A% k2 q$ |7 H; v4 O
T+ W* p; T2 }' ^# m
! J8 x9 b! m8 k9 D, L) P通过SDI数据线将TL2971A/2972F模块的SDI OUT接口连接至SDI转HDMI模块(厂家:玩视,型号:3G SDI TO HDMI Audio)的INPUT接口,再通过HDMI数据线将一台HDMI显示屏连接至SDI转HDMI模块的OUTPUT接口,HDMI显示屏用作图像显示。# d9 z/ B E' k, |( S; y
" }( X, u* w. s, v. B9 { e' p! w) U* ]
( K0 L/ |! v% J3 E) `9 B
, g/ p5 B; N8 e, Q. T' ^7 |, S​: W P8 \ r0 @& K
v3 [4 J/ y3 }. ]/ y8 T
4 `+ [/ T" I# ?" V K$ I​
) i; o: d H' _0 C; _3 k2 r
; _7 O1 E. S' k# w
( w4 H2 m' Q% `' q
4 {( Z; Z$ f; e) X
* O, U/ y+ F0 C, o4 k运行程序,即可看到串口调试终端打印如下信息,然后在PC机的显卡设置(或图形属性)中,按照下图设置HDMI分辨率为1920x1080、刷新率为60pHz。
( F5 r- H1 t6 C1 z! t: m$ v& o/ }6 W# v' W+ l3 [
( v" U8 B9 ^3 b9 T+ h! L& `# `
​
% ~' d0 K* |# I& r. \- V( R9 l" _- p4 `- N( b% \ V
: l( o+ ?2 v9 N& v S% d2 W& @( Z5 C; j+ D6 V9 a
1 G* [; T% [" S
​
% O; m; Y$ x ~. Y4 Y/ |
" z4 U# T9 Q% n, h$ M" ^& Y6 W g8 _6 p% {9 ^
0 I9 _, B# t$ K9 v此时,HDMI显示屏将显示PC机HDMI OUT接口输出的图像。
) P1 |+ m" S4 y, H( E​1 i g& C; |$ m$ W
+ m& c+ a- \" N* Q: r; T" F# A F& B, B1 y. `
​: }: s# }2 h- g ?% H, @5 c; g# n" r
3 [6 {% P$ D F0 N. U+ l" m
" q! o `: L* r7 u7 M/ P* v●关键代码(MicroBlaze)
1 I* k: ^/ \( U8 h) d2 x3 G* @% u. E* t' Z+ [9 Q G
MicroBlaze裸机源码为"sw\baremetal_demo\project\sdi_capture_display\src\",关键代码说明如下。% j" W# i/ O6 z7 \
+ p" A+ e% Q1 J$ u, g, A5 i7 E `- Q2 h) E& F, ]
(1) 初始化VDMA,将采集到的视频数据缓存至DDR,并将视频数据搬运至AXI4-Stream to Video Out IP核,再进行SDI视频输出。
& \* z' r9 m3 ]+ U4 |" s. S) J0 R​7 O4 A4 X& E. G" C+ D
● IP核配置
( L V0 c1 Q. I. I( M1 f( ]: F( J% l4 Z
1 VDMA IP核0 _, [' r8 H4 f) [" a6 _1 S# O0 \
5 S7 [4 a- `& n) I4 I
本案例使用VDMA IP核进行视频数据缓存。
9 Y+ s6 M6 }; ~ v: Q5 tVDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的pg020_axi_vdma.pdf,具体配置说明如下。
$ P v0 n% b4 L4 C, }: |( ~2 Y/ x(1) Frame Buffer配置为3个。
( J3 d- g- y0 s" S$ {4 J4 Y(2) Write Burst Size、Read Burst Size均配置为16。) W- X9 u; L w6 [# }$ _2 j7 S, I
(3) 读通道的Stream Date Width配置为24。
# r9 a* X3 {& T: m( @' o: U; d(4) 读/写通道的Line Buffer Depth均配置为1024。
4 o( L& s* g+ a8 U% X2 ^4 c I- Y​
: I6 j: Z6 r( @- }+ H# S
- a" f( n2 P0 `" i$ |$ G. F
7 `" n' a5 r; l0 X(5) 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。
& |5 v5 ? D+ j. f6 G" p) N: F2 G9 Y$ N8 B* z+ Y
# \/ ^& S4 R* [0 u4 ]
​* s1 m7 S/ r% ~; X3 C
1 W! |7 s: z6 Y# C
" s4 z( Z n# U1 a0 k2 Video In to AXI4-Stream IP核7 m7 `8 i! q& u: B! w
A3 r) A, U6 S, y8 [0 _5 W本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。! z. V2 H9 y" p; M2 j
6 n& @* c) D4 K( [) v
9 T. e/ y% S! ^
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。% v3 B; N: F2 D7 H2 p
1 x p8 I7 T+ k( {
$ a5 c% u5 Z6 T' p# `# W(1) 视频格式配置为YUV 4:2:2。; w; p3 P5 L- v$ K
(2) 数据位宽配置为10bit。7 P' z- i5 }# _3 r( E6 R8 k( C6 A
(3) Clock Mode配置为Independent(独立时钟)。
" ^! B" U e+ H​
8 A. B& E% j Z
6 H8 Q; Z0 [. d, k% L
$ w" O& f. Y) A& e' C; B" B$ H( q: Q2 `# |
, H0 b2 u; ?6 E8 @7 E; J
3 AXI4-Stream to Video Out IP核& j2 M5 ]) r$ Y, C1 @
) U, C/ G7 i* ]
本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。, i M) A) D' R
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。8 M2 V6 b& u% D
(1) 视频格式配置为YUV 4:2:2。/ Z: I4 g2 v1 K" j( K
(2) 数据位宽配置为10bit。
* W9 Q! c& U+ m7 `$ Z3 q) _: K" x(3) Clock Mode配置为Independent(独立时钟)。0 f' W2 O5 c! [+ C) j5 |- \% [6 k
​7 N- o. Q- n5 [6 k
* f- l, v, g; b. `" P! H/ R' I6 u) b* D/ i& `2 n
4 VTC IP核4 c3 x/ b. u( t( G1 H2 U& G3 w
8 \' K: [1 }1 y. L2 q, v9 C% A- b7 M
本案例使用VTC IP核产生用于视频输出的时序。
`6 A& v: e% |0 R8 w4 CVTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。
, Y8 b: j. g6 ]/ e0 Y(1) 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。
8 Q4 Q ` [: K# X* p
2 k* `* g" j n0 S, I, _" _
8 Y, L8 r* o$ h* J3 K4 g* [​1 s) o7 r. a4 S5 W* v- G9 O3 U9 \
+ E; a0 h4 _3 e$ y1 m
/ R# ]6 ]. l# i5 w) C(2) 点击Default/Constant,Video Mode设为1080p,其余配置保持默认。8 M/ E6 z/ w$ m1 e; [" Q
​4 o& O7 Z5 R8 D h& _* }1 M+ `% n0 ?
# F0 K! T1 B6 ]/ F0 x8 v
' V1 I3 z, [7 C9 c5 Clocking Wizard IP核
5 O- t+ z0 h% f# B! o
, @, E5 R# w# y* ]本案例使用Clocking Wizard IP核产生用于视频输出的像素时钟(148.5MHz,对应1080P60)。7 w& ^, G5 Q# k, M, X" b! T
Clocking Wizard IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg065-clk-wiz.pdf》,具体配置如下。
& N, d y4 a. D​
. B+ x0 k) j1 u- @( o! ^3 w8 S; U; A+ s( G0 @4 s
V, A1 a/ e. G% |; c
; I6 O [5 m3 D. U7 C
# h0 y! a' n7 ^6 I3 M5 P, a
●Vivado工程说明. B5 _3 i" R/ d* D( r; L
/ U% }6 K, C& i6 ?# H
点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。
0 r0 p+ n1 }- P* e​
. F1 c0 U/ _, N- Z" Q$ o
! F4 H/ `3 E$ X& m7 h$ y* L% d6 }7 z5 a: H
Vivado工程顶层文件为"hw\project\sdi_capture_display.srcs\sources_1\imports\hdl\sdi_capture_display.v",关键代码说明如下。
/ d4 x# c# M3 x
$ U' o1 O" k$ ?" b6 q. I0 R; @9 z: m% `
(1) 定义模块接口。) o! n: ?, Z* O0 U6 ~& F' ` {
​
* v- L/ ^$ @# a- _% y6 ~) A
$ u, H; D9 B5 i& [: ~7 s7 L+ H. L! M) J. J8 ?
(2) 使用STARTUPE2原语输出复位信号。7 u! l" n, p$ C# g3 Y
​
4 e% O! C) [) w1 a8 x# t$ L- [" J/ ]4 U( p
) d& b: Q; U# D* t+ a
9 e- L9 x" |. ^* C
* V& x% E) S! A! T4 d0 \, g: g(3) 调用Block Design。
, @$ X. c3 r4 ?, g3 r. E2 s​
n% V8 ^$ d& E a. D6 K7 f w) A
, C% `9 a9 C6 R8 c U- o2 g$ u$ Y​( _$ X7 l1 w9 @" c/ V3 F0 @, a1 r
$ s$ f3 ~7 a) S$ s( N+ A9 m
. m4 L& p# R X" p8 o& `. n |
|