|
前言
7 E' F( E7 ~/ N2 R' F* m9 Z" C* z$ ~" ]% \6 H6 l
4 ?6 D e4 l+ z4 R3 V
7 R* d. E2 b& Z1 [
SDI接口,全称是“数字分量串行接口(Serial Digital Interface)”。按速率可分为标准清新度SD-SDI、高清标准HD-SDI和3G-SDI,其对应速率分别是270Mb/s、1.485Gb/s和2.97Gb/s。目前在航空航天、军事、医疗、交通等领域,SDI的应用广泛度仅次于CameraLink接口。: }. |! D+ c/ v( x3 i. [
+ G$ n3 g$ I" b" d/ S
​8 G0 H1 h" B' v/ y. `
" [- P6 E7 W, n2 B: o/ Z, j6 I) g- C# X& L
- s7 p6 i8 `9 N$ M& x$ j8 R8 n" n1 w
! @* O5 F" s% O5 C" I |SDI接口优势:
; c8 A* g& }* y. a+ y3 K(1) 消耗GTX更少,消耗IO更少
" v5 m# ?$ ]; r; ^9 M0 ^: f如果使用GTX总线,仅需1对GTX,而HDMI则需要3对GTX。CameraLink接口由于走LVDS信号,Base模式下需要11对LVDS信号,Full模式下需要22对LVDS信号,消耗IO数量比GTX SDI多了很多。( ~% e+ I' L3 h d
(2) 传输更稳定+ }6 j7 R0 r& a4 i u
相较于HDMI接口,SDI接口的自锁扣设计更加稳定可靠,不易脱落,不会因人为因素造成信号中断。8 b2 ^( _) x! w: B9 W
(3) 传输距离更长
; o r7 Z i6 I& ?串行接口是指逐位数据的顺序传输。它的特点是通讯线简单。只要一对传输线可以实现双向通信,特别适合于长距离通信。从理论上讲,SDI的传输距离可以达到100m。2 M3 j. G9 G) {1 ^
(4) 成本更低1 k/ }& W1 s# t% p6 v
SDI接口平均每米价格约为4元,相较于HDMI接口的平均每米价格约为10元,SDI接口成本更低。
+ ~. v4 C( Z. v. Y7 t1 s4 ~0 ?9 t7 }7 y
" |, o- k/ D0 F: k
创龙科技(Tronlong)的Kintex-7、Zynq-7045/7100等FPGA板卡通过FMC视频模块已实现两种SDI视频输入/视频输出方案:GTX +外接芯片。本文将为您分享基于Kintex-7 FPGA评估板、TL2971A/2972F视频模块的3G-SDI视频输入/输出开发案例,使用外接芯片方式。TL2971A/2972F视频模块模块亦可支持GTX方式。5 e& t0 g6 M( [! ?: Z: u9 T, `5 _
* b' p: F m4 Z' w( r
, r6 j" q6 p. W+ N1 ~7 Y8 x: n) c; O1 A+ F* h) p K. p! w( L0 l
! y J# m- h- J8 j" K" ^●硬件平台$ k- i. ~5 x' o6 q
& h8 B& b9 e0 k) [. E5 ]7 a0 O/ T- ~- ^
* q; H5 W6 S% u9 \: a
1 TLK7-EVM评估板
. e0 J, o$ Q; N" R; O/ r1 x4 o/ t% k' }' k8 G% G( ?' T, j
本文基于创龙科技TLK7-EVM评估板、TL2971A/2972F视频模块进行演示。" B7 G- P4 D4 R1 y: o( a# ~/ K
TLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 o" V/ X$ g* a# X6 H% H
评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
8 z; i5 h( e; L* j6 V可申请TLK7-EVM评估板进行快速评估,点tronlong.com/Product/show/93.html,免费哦!5 _! L Q- e3 m
​- B' ]' {2 s. z
1 A4 W* Y0 g/ U% k& w/ w& Y
+ m/ k- y8 S4 V8 @% l TLK7-EVM评估板
$ T- B( x6 C* E$ B. x9 c! S
! m6 C5 I8 Y2 O) A8 y* [! n ~
, B4 C: C2 f8 `% @# k0 P. E8 o- Z2 y
Q' C, [ a: H) x0 ]2 TL2971A/2972F视频模块
3 u6 j8 S9 e4 e1 g: T! m9 {8 @7 f& t' c0 S! s) ~; r
TL2971A/2972F是一款基于FMC LPC标准设计的3G-SDI视频输入/输出模块,与创龙科技Zynq-7000/Kintex-7/Artix-7等评估板配套使用。以下为此模块特点:
5 O; K* Y Y1 U5 a/ w: H) S* M(1)通过GTX高速串行总线引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。7 j3 S3 J) u# |
(2)通过GTX高速串行总线引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。2 s2 b4 V3 F$ l7 b
(3)通过GS2971A芯片引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。" L7 ]8 n! g8 J, ^2 F' S
(4)通过GS2972芯片引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。
2 h( B: i" b4 Q" o(5)采用标准BNC连接器,支持视频设备热插拔。
- G* W- e& B( q& n​( M8 H$ d2 ?& L6 F) a
0 K4 E3 N% {/ W6 g% f8 H; d6 N+ |) A ]5 t0 F
TL2971A/2972F视频模块
9 _2 n/ _. Y) H1 M- S2 S4 s8 O* z0 H
- X A' r% L8 Y/ f5 L, x' S- z* ~ c% B# Q
" P, }7 b. |' S5 p. w1 ]
, H! y" S4 G7 m
& w9 @& f6 l2 Q$ N9 i●案例功能! z! [" N- v8 P) s0 K. [) M
* |+ R* y/ l8 n! y3 I1 g0 w
0 o; g# G9 N! _- h5 i& ~
' @+ ?6 ?4 E" P, ?1 Q J5 o
本案例为通过GS2971A、GS2972芯片引出SDI视频输入、输出案例。通过GTX高速串行总线引出的SDI视频输入、输出案例即将发布,敬请期待。: k" M/ |4 H0 P0 g& U' Q; t R
案例功能:评估板通过FMC视频模块TL2971A/2972F的SDI IN接口进行1080P60视频采集,并通过TL2971A/2972F模块的SDI OUT接口将采集到的视频进行输出。案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点:site.tronlong.com/pfdownload获取。
8 T2 ~: K- i* r% u7 g6 I1 ?( w8 c# Z- h; J C( t
/ @2 }; d- W5 l开发案例主要包括:
* ?2 f. i! b j4 y% S" e( ?; f8 Zl CameraLink、SDI、HDMI、PAL视频输入/输出案例5 T5 f, A/ m4 {& a( p: F4 Z
l 高速AD(AD9613)采集+高速DA(AD9706)输出案例+ a% G/ Y8 l$ j0 h1 Z# J% k
l AD9361软件无线电案例
2 K) O! h; p4 J* Pl UDP(10G)光口通信案例& B' C3 ]6 v: F- n: P
l UDP(1G)光口通信案例" b& F8 ^" V& |/ \' y0 p
l Aurora光口通信案例# B' w; R+ w5 ~( ^
l PCIe通信案例
' b; U( G+ P( y; n" v) y4 A+ ~+ a; G1 `4 Z3 `4 k3 W4 g
0 X" X" W5 C; V5 x. p5 Q' ^; I
6 P6 J. A2 c7 u●案例演示% o5 Y4 P4 ^$ Y
6 {$ K4 ]1 e0 e1 a/ p
将创龙科技的TL2971A/2972F模块连接至评估板FMC1接口,评估板J1跳线帽选择3.3V档位,以配置FMC IO的BANK电压为3.3V。
- {2 d, Q) h) F# h$ ] |准备一台拥有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接口。 n) w) T9 w) h0 Y+ A
# ~0 G3 Q' R3 F" P6 I1 ]0 Y! m# G
9 Z- I$ s0 N% u, z" \通过SDI数据线将TL2971A/2972F模块的SDI OUT接口连接至SDI转HDMI模块(厂家:玩视,型号:3G SDI TO HDMI Audio)的INPUT接口,再通过HDMI数据线将一台HDMI显示屏连接至SDI转HDMI模块的OUTPUT接口,HDMI显示屏用作图像显示。
7 H* h2 j9 n* h, H; D" J# e2 \5 M6 @2 Y$ r: a6 ^
& ^% M6 w- `4 K6 S4 _
7 T. j; Q7 G+ d9 ]- U& z) X
" ^$ u& `6 \4 c% E/ C- k+ `. K​' L/ p ^+ U" t7 y: D/ S
- Q5 A: |. b1 N! o/ l
( H! p) U8 V( m, I​
, t4 R- j8 d% D+ F2 E8 z% ]
1 F+ S1 l. b: c) {1 N) f' ` ]4 T
7 m: \& q' ^; E5 ]% c- I! E
. [! z1 r# L% g2 K( O3 F" m运行程序,即可看到串口调试终端打印如下信息,然后在PC机的显卡设置(或图形属性)中,按照下图设置HDMI分辨率为1920x1080、刷新率为60pHz。
. j6 B7 z2 U: f7 h7 e. `" [6 Z {3 b8 K) }5 @% O( E" `
" D8 G( p+ }* D c​
* J* T, d2 a2 `; e. r, K& R) ^) {5 q r) x; W5 c4 ]
+ X5 ]# v) m$ s& n4 m) k U/ \5 x* W: V& L6 a' n7 T! m/ M; u2 J
+ V) v7 p' \ ~9 ~& _​2 w: m: |* ~3 \5 }! m2 w* y, O
/ v. h( `; l+ V4 t/ c! K
7 t' b$ e! ?, _5 j$ Z! l2 W0 E4 J
此时,HDMI显示屏将显示PC机HDMI OUT接口输出的图像。1 r! K; p- I9 o. k% N8 |# q' e' F
​0 w1 M9 E0 j# @4 P! S
7 G) R! X) X& s: }; P+ I' a# U
3 G0 D& j1 G# `( V: V( @0 _5 K​" ^! b: _% H; F( L* `
+ I! W& L+ m0 h% _* F/ g, V
3 I2 U9 B& x' h# \●关键代码(MicroBlaze)
# ^% E, q! x2 g- b; c: I' P! f
; C0 z- c1 W/ O( p8 w7 r3 CMicroBlaze裸机源码为"sw\baremetal_demo\project\sdi_capture_display\src\",关键代码说明如下。
E# m+ y: g1 a S: v
7 G5 K( i3 {/ t4 g7 a k* I1 K7 Z. D/ d
(1) 初始化VDMA,将采集到的视频数据缓存至DDR,并将视频数据搬运至AXI4-Stream to Video Out IP核,再进行SDI视频输出。( o. F% G' f% M1 u
​
( Y0 H# v/ a* g' U5 n● IP核配置/ `: y% S% y5 B! H) L# K7 j
6 J2 h# J$ N* I8 z/ K8 \1 VDMA IP核+ S% w2 R: b7 Q& ^0 b" f ?
/ g# R+ z) c: x) A8 ^+ m3 a1 Z本案例使用VDMA IP核进行视频数据缓存。- R/ D* p8 Y9 B) R
VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的pg020_axi_vdma.pdf,具体配置说明如下。3 j0 a' ?6 ^: y' L) W2 k/ a6 G
(1) Frame Buffer配置为3个。% o7 o0 R; k8 r0 z8 y3 s. r
(2) Write Burst Size、Read Burst Size均配置为16。
/ x# O( {7 K- U) A! g; s, E" S$ q! h9 n(3) 读通道的Stream Date Width配置为24。
1 M: {5 D3 I6 e' `(4) 读/写通道的Line Buffer Depth均配置为1024。
/ h* Y% c$ Y9 o+ X- i1 O0 Q​% d( z1 w. s- w5 O c; q; G- y/ L
, a5 Q& @$ {, r* t9 d* v# }7 _2 i+ j5 K4 g: r2 H. L3 M$ @# q
(5) 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。! ~. E, U/ x+ W# E$ G6 d5 @- h) A
: f$ [% ]6 a$ T g$ \ y: s4 ~# ]# `& U+ M
​
7 l; }7 ]2 Y* b$ K& \1 t2 N) ~% Z4 ?1 s" ~; e
& x% Y1 b" g N4 W: f- S+ V3 x3 X
2 Video In to AXI4-Stream IP核% Z$ s0 F- V8 ]! N$ ]3 N& m! j
- u7 f$ P' v. T0 z& A本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。# w$ `" h" {* @& s9 O* ]8 T
" K9 ~% {0 `- [7 @& Q7 f4 [, ]" m3 ?5 Z8 O# B/ u5 C2 w( N3 _
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。
3 K9 d- d" i7 ^- }; A) Y
6 K2 ?, t+ Z# j
M2 G7 }! c8 P% g( |7 P(1) 视频格式配置为YUV 4:2:2。1 W$ [) j! i; ^
(2) 数据位宽配置为10bit。1 p0 `0 C4 R+ ^. J( D+ ^1 ^2 Y
(3) Clock Mode配置为Independent(独立时钟)。
% e! D9 E8 \; Z​
/ B1 I/ ]$ K" C8 w: X1 T6 P# S0 D9 a+ b
1 i$ H, I# L9 D2 ?2 J3 X5 o- A% m0 j! F2 h) ~: J8 {. H% @
) f$ @4 l& m( j, d: i3 AXI4-Stream to Video Out IP核1 J: V7 e- q2 I. `$ N
5 n% I2 Q+ \* h* X本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。; l0 B' t# r3 s
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。
' D3 J: R; s9 \& P$ t a& A3 |(1) 视频格式配置为YUV 4:2:2。3 Y3 ?8 W0 ~* U% F1 B2 a; b: }
(2) 数据位宽配置为10bit。5 p' H" Z4 j6 i3 p; {
(3) Clock Mode配置为Independent(独立时钟)。! @8 s& q1 H8 c6 z/ C8 s. g9 A
​. X4 C' E' j0 F, Z. m# C4 y0 e% w- M3 P
- O5 h8 f4 \" C4 y5 Y7 v
- h0 p3 r* ]4 Z/ _) w4 VTC IP核8 z# S9 W" o9 `- d
# H+ J1 G: ]+ l" ]; `6 x本案例使用VTC IP核产生用于视频输出的时序。
2 U: {6 I7 u! c4 s5 u* |VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。$ U1 d2 ^0 u. a) G# u
(1) 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。7 Q. S- o# M0 K9 W1 l; Z
7 m1 H6 H* M' g+ H/ [
" N7 i; ^' |! V1 y! c$ @
​
% L) D; t) C, m& M0 b3 ]; {
3 b' B- M; H! H9 h
6 q5 }( {4 L2 ^8 i$ u1 z5 ^# \9 O(2) 点击Default/Constant,Video Mode设为1080p,其余配置保持默认。
: b. a9 I% S5 M/ M​
/ i. E* J7 \" n/ a) R$ g8 x# {% p3 d4 ?& ?( ]
" N: m; u, V" O# w6 f- h& O) T) R
5 Clocking Wizard IP核
2 z( ^! K n/ ]3 H& N {3 Y2 Y: E# b0 \1 [6 O6 T
本案例使用Clocking Wizard IP核产生用于视频输出的像素时钟(148.5MHz,对应1080P60)。
9 Q4 m% H- E* J w! ~5 HClocking Wizard IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg065-clk-wiz.pdf》,具体配置如下。
; c' u x+ V6 W" V7 ^3 Z​
2 Q v2 J8 X5 v2 }+ v$ t% J/ E- V& P3 s u2 ]
% v0 o" v7 R' j: V0 j" G5 V
6 V' w9 s) W8 t" w; T. g& G' m8 {9 J
* ]- @7 S( Q l& _
●Vivado工程说明
! M! Z9 h5 c/ c
q+ s# N2 F) _! V- _6 G$ N点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。
( T. e, P& ?$ I3 M$ U* o9 m- I9 ]​
' j d7 R: \% Y3 E) j) G; q' e
9 s% T& J; R7 m g" }3 G o/ `# Z2 ^* W+ b4 c- c
Vivado工程顶层文件为"hw\project\sdi_capture_display.srcs\sources_1\imports\hdl\sdi_capture_display.v",关键代码说明如下。' Q( k1 p, ^* g" k& m/ o1 {
+ k# O6 ?6 |: m3 K+ m, ]2 y; s
$ g5 j8 |+ Z T8 g(1) 定义模块接口。
- ?0 ?& n( E3 Q; H​
- t: C& ?7 v) h2 T9 U9 H+ A
. p4 R* p* E3 c" C/ t9 v( B) w1 R" w% b) r2 h9 V
(2) 使用STARTUPE2原语输出复位信号。! D3 W# t3 p0 @: [: B( A% G! Z7 a
​8 N, j. B- U9 D* ?
' }! ]+ ^; x: k5 C4 s
$ m3 ?1 h5 W& p$ L+ q1 k' \6 v3 c# T) G/ u8 g$ K1 o$ G
8 I) B2 h( I) ~' u7 C' x* s(3) 调用Block Design。$ ]# Q( Y8 e8 C
​
$ ]. ]- _! F9 ~6 Z* n7 y" h" p% \) P M( f6 a
6 `) U6 _% A& S7 u) x1 I​
. @- y: w( t* e
/ o( J$ q9 t. f3 A
' A# H# v" w$ r: |/ ^; R* P9 Z |
|