|
前言% R0 [' C" K k7 q9 H
2 `& ^/ Z+ ?- d7 p- G9 x
$ x: w' S! l! `, W" ?! ]5 O9 F
& Y" V5 Y V: F% z! QSDI接口,全称是“数字分量串行接口(Serial Digital Interface)”。按速率可分为标准清新度SD-SDI、高清标准HD-SDI和3G-SDI,其对应速率分别是270Mb/s、1.485Gb/s和2.97Gb/s。目前在航空航天、军事、医疗、交通等领域,SDI的应用广泛度仅次于CameraLink接口。' @( X1 \% i. l0 j0 {
% o! X" T# l8 k
​8 u$ x! r. e6 A% U/ B' {" @
! |, k5 l( m/ Y
' e0 v4 q2 V3 m& T( n
! F0 o) ]! H' @# S3 [5 j& |2 A/ U" m1 e- k4 o
SDI接口优势:) f$ g" l) p. V' N* O
(1) 消耗GTX更少,消耗IO更少
4 }+ {4 a: b+ r2 N; b/ ~8 r如果使用GTX总线,仅需1对GTX,而HDMI则需要3对GTX。CameraLink接口由于走LVDS信号,Base模式下需要11对LVDS信号,Full模式下需要22对LVDS信号,消耗IO数量比GTX SDI多了很多。( D5 a( o$ ]9 \; G
(2) 传输更稳定
$ _; k* C( q( o8 V' ?0 `5 t相较于HDMI接口,SDI接口的自锁扣设计更加稳定可靠,不易脱落,不会因人为因素造成信号中断。
- }) e- L, S4 Q$ F; F(3) 传输距离更长
& Y- @# ]* b6 m6 u) Z) h串行接口是指逐位数据的顺序传输。它的特点是通讯线简单。只要一对传输线可以实现双向通信,特别适合于长距离通信。从理论上讲,SDI的传输距离可以达到100m。
, \: h J1 d* E6 e(4) 成本更低* i: e+ F/ c0 M9 C
SDI接口平均每米价格约为4元,相较于HDMI接口的平均每米价格约为10元,SDI接口成本更低。
* Y+ P$ l/ e4 D, v, x' m* I
; L! W1 Z* v% p( R" d4 W! A) g
# m( \% B; j% i# |创龙科技(Tronlong)的Kintex-7、Zynq-7045/7100等FPGA板卡通过FMC视频模块已实现两种SDI视频输入/视频输出方案:GTX +外接芯片。本文将为您分享基于Kintex-7 FPGA评估板、TL2971A/2972F视频模块的3G-SDI视频输入/输出开发案例,使用外接芯片方式。TL2971A/2972F视频模块模块亦可支持GTX方式。
# U7 A5 q9 L: W- j' U2 ]
* v4 y; g2 w8 M. ]) @4 I- ~6 @' I; G i6 }& X+ E# A
g- I7 d' Y$ l) g0 N% c% o: i
. n4 f: K7 ~; M●硬件平台( X! l# W0 ?2 ^- _+ X' T" `. w
( X8 o: q, M: e
5 C6 T4 w# \+ q5 s& h7 t
: J& \& f/ d; x. t$ }
1 TLK7-EVM评估板6 Q; M$ c4 l I3 A6 _6 E8 j1 b( Y
: M! U, Y. _$ K% E* h8 q本文基于创龙科技TLK7-EVM评估板、TL2971A/2972F视频模块进行演示。# b( Y$ a' q) l7 P% q
TLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
. Z7 D, Q6 [- Y' i+ {5 [+ I评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
5 c8 N0 s3 e8 T. d# A可申请TLK7-EVM评估板进行快速评估,点tronlong.com/Product/show/93.html,免费哦!
+ P7 N0 o. ~5 @7 D' _- B​' w. K. ]6 J$ N) H# K5 C
3 f: Z- {, v7 J9 V$ {$ C6 V
( U/ v0 V, F3 {3 u) B! j% i TLK7-EVM评估板
1 n0 l* r j) l, F6 J* _9 P. U$ e" ]3 d4 E% U
6 b8 p) v- L( ^, M0 ?
6 O& W. X' c: k- }! E2 TL2971A/2972F视频模块8 X: w, r6 F. x9 _7 v- l) f' @
+ C% T" }+ v; N, V; f4 D9 V( M6 K
TL2971A/2972F是一款基于FMC LPC标准设计的3G-SDI视频输入/输出模块,与创龙科技Zynq-7000/Kintex-7/Artix-7等评估板配套使用。以下为此模块特点:- d$ e, `. ]* p; G5 ?$ g/ r0 J
(1)通过GTX高速串行总线引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。5 N( t( c5 k3 a, o# H
(2)通过GTX高速串行总线引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。
! n; G8 Q; D8 W: M0 Q7 I* }, ?3 T(3)通过GS2971A芯片引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。
1 z3 {5 A% `5 R9 H5 I' k9 C(4)通过GS2972芯片引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。
: Y: l$ L8 g# r) f(5)采用标准BNC连接器,支持视频设备热插拔。$ N1 _) e* m4 u0 @# t3 X) i
​# O' _' D" ]/ \; v* b# W s4 h
( P4 D* a0 r+ L) Z0 ~# `( y
) I$ N9 ]" j0 _, a7 l7 |TL2971A/2972F视频模块9 Y) k) H& V; l. ~5 R' ]
! r/ j3 e% |/ f/ u6 B* J3 o; w0 a1 @1 U
) w# J( T: {& d& U+ A
1 q" v% N- Z/ O$ i! ]6 Y' H* G+ i
" s/ S2 y# i0 ^3 Q% g- S7 I! v
& `# s8 v) F* O- I+ M, B- j; Q7 _2 W3 Q7 G6 \+ s8 M, r
●案例功能
/ \2 S. i% ]1 {; D5 x
) J# v' U- E: Q- |: Q4 A
( q" o) X& q* G) R* Q& e! x- S
本案例为通过GS2971A、GS2972芯片引出SDI视频输入、输出案例。通过GTX高速串行总线引出的SDI视频输入、输出案例即将发布,敬请期待。/ F0 l( j9 D* o6 ^1 A
案例功能:评估板通过FMC视频模块TL2971A/2972F的SDI IN接口进行1080P60视频采集,并通过TL2971A/2972F模块的SDI OUT接口将采集到的视频进行输出。案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点:site.tronlong.com/pfdownload获取。
J) i4 c2 Y9 ?, T1 O
: U; I* N" [" W. P$ M8 M4 A* g1 Y1 y7 ]& b9 v" u
开发案例主要包括:
# b3 B% ~! t8 e2 `! G6 ] J9 N V1 cl CameraLink、SDI、HDMI、PAL视频输入/输出案例
$ n) ]) W' y+ U/ j$ ol 高速AD(AD9613)采集+高速DA(AD9706)输出案例
- k% n2 e' K# `) l" j- }l AD9361软件无线电案例: x; b# h( {0 @& r7 I) i( [
l UDP(10G)光口通信案例
$ L9 E* I4 L6 Y6 H* v4 P5 |l UDP(1G)光口通信案例/ w" `6 a8 [' I1 B
l Aurora光口通信案例* n' _* k& H& V2 ]
l PCIe通信案例
6 T- v' ^$ F2 Z: z, B X4 s* \1 S# p$ i) ]7 r) o4 S
5 b$ t+ ^5 s9 m2 l- `. Y h
9 ~. A" y+ b& z/ ?& T1 w* k; D0 N●案例演示! a {) \$ b# S9 p: |) u: D0 u" B1 y
* y$ j k, H1 e7 c6 u @+ x
将创龙科技的TL2971A/2972F模块连接至评估板FMC1接口,评估板J1跳线帽选择3.3V档位,以配置FMC IO的BANK电压为3.3V。
! ^! w* G- ?0 G" d/ T3 m# ~) s/ r7 q准备一台拥有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接口。
3 @: d) Y+ }; j3 R `9 o4 E# C" R! b$ Q7 s" j/ ^
; [$ M& u- j0 q6 q6 V3 _2 d% p8 l通过SDI数据线将TL2971A/2972F模块的SDI OUT接口连接至SDI转HDMI模块(厂家:玩视,型号:3G SDI TO HDMI Audio)的INPUT接口,再通过HDMI数据线将一台HDMI显示屏连接至SDI转HDMI模块的OUTPUT接口,HDMI显示屏用作图像显示。
Q8 P: f; e9 n/ Y i- f, O3 g% E1 Z* S. h O/ H4 }
. t) J$ k2 f) E- P4 I; [- H; i2 K, v5 m7 m- o2 W' b
! m# z" c) V" ^) Y/ G9 \6 \​, a/ \4 x u1 G2 M+ r3 |1 l
8 [ ?. N) C/ H# B& K: M
1 E3 l6 B$ `8 d( o3 p​
: \, J" Y3 R$ A! F" j
/ @- k, R7 E: |/ N" d
0 \) I5 q) U# E+ {
9 Q' }& y6 N- r }1 g5 V
8 o8 p5 o1 ]: v5 S运行程序,即可看到串口调试终端打印如下信息,然后在PC机的显卡设置(或图形属性)中,按照下图设置HDMI分辨率为1920x1080、刷新率为60pHz。 L' B! s. G0 m+ b" ^
/ z' o" u: z$ n" H* {
+ \0 i; I8 S- e/ R- C7 ]​9 H; D# q+ ]/ [/ e
+ e+ O* @$ w" {' [# {( X F0 r' |: b" N# v3 m( Y& ?* p" U
9 t$ {: i7 e: [( R8 j3 K( _) l1 ]# A/ k4 N5 `5 w0 c
​- @( I& N N3 w
% \3 j& G; W7 q3 A" M
1 X( |' i& }' W& r此时,HDMI显示屏将显示PC机HDMI OUT接口输出的图像。! F6 G- N% d M8 Q9 h
​
* j; U1 ^4 ~( B" E* V& U0 ?6 ?) V5 k
' B! @- g- \5 x1 R/ m0 m​
* r" F% j" r+ L8 p) C6 r
2 ~$ j- l u, k+ f- a
6 h. H/ x: ?2 \1 c●关键代码(MicroBlaze)
) y0 _! k5 t' Y' }* c( W# ?, i/ x$ a1 i I2 ]( T3 f" P
MicroBlaze裸机源码为"sw\baremetal_demo\project\sdi_capture_display\src\",关键代码说明如下。
( a* g+ W/ v9 K+ y' ^0 l% {8 J, W' ?1 B
. ^% h* g9 @4 X1 M(1) 初始化VDMA,将采集到的视频数据缓存至DDR,并将视频数据搬运至AXI4-Stream to Video Out IP核,再进行SDI视频输出。
1 p1 e* m( L$ C, R​1 [" W t/ j9 Q& V T( u
● IP核配置
7 }1 P( g Q2 d! @+ C
, G7 i2 I3 Z0 T! S& l. @! E1 VDMA IP核
$ Y% |4 f0 ]* e8 p8 o+ q" J& u
+ g+ K% R l& S6 K/ ^* T$ B6 T本案例使用VDMA IP核进行视频数据缓存。
! s1 ?9 S5 C* {5 f/ O$ U- NVDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的pg020_axi_vdma.pdf,具体配置说明如下。# l* b! U l3 j" B+ T" q
(1) Frame Buffer配置为3个。
( X) z4 U) l Y8 ?2 m% Z(2) Write Burst Size、Read Burst Size均配置为16。' A( n2 a9 q6 S5 y2 _5 w6 Y
(3) 读通道的Stream Date Width配置为24。
' a( L1 o! P+ W E(4) 读/写通道的Line Buffer Depth均配置为1024。
h6 j+ }% ~! W1 r- c9 Y3 V, D​
$ G: M; g0 B5 x* ]6 }- L, c1 f7 R. q( x/ A8 }2 E
Z" f/ y' y, D
(5) 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。
8 M: O* a4 E+ D+ D" X0 Q1 F! i
& X8 ~1 o1 B5 C U
2 e5 G; d$ p% O( j( y' u& `& j8 F​
% Q# r+ P+ {( {3 u$ E* H
y1 e' d9 D5 r# r, p3 ]3 X9 D0 H' F: T; E/ H. H3 R
2 Video In to AXI4-Stream IP核, k9 z5 J4 F6 x# G) h0 p- Y
. E! |; ~, b2 L# A本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。( q2 C W: S2 G' p: ^8 U' l5 _
' S3 G, p# j1 _4 D0 G! ?& ?3 M' F
, o4 B; g1 @4 n1 `1 N* AVideo In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。
* e9 j/ o3 Y7 p/ t9 O
4 |/ A0 t0 _2 Q+ g+ w! _
9 i s7 m6 q4 U(1) 视频格式配置为YUV 4:2:2。
5 z# A b& O- o7 j5 |(2) 数据位宽配置为10bit。
- N+ k$ I* R$ T4 s$ b(3) Clock Mode配置为Independent(独立时钟)。9 b0 ]. C5 E5 b; z& w
​# p+ ~1 U" Q4 q' t4 v0 l4 j9 O( x; K
+ K9 s% Z5 Y( J( A4 i# [3 Q; z0 B8 @8 Z2 c# q) K; u
0 g; b! {5 D) O8 `5 x0 w
# \* b7 Y/ D3 M1 z
3 AXI4-Stream to Video Out IP核
6 @7 M3 T& b( `1 V: Z
4 k5 R9 R4 m6 |本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。
# l$ O8 c9 S& ~' EAXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。9 ]) r5 X; Y/ L k. W! v' K% }
(1) 视频格式配置为YUV 4:2:2。( R+ @/ f, }- ?6 f
(2) 数据位宽配置为10bit。/ S ? b- f' K' O
(3) Clock Mode配置为Independent(独立时钟)。, p4 }1 X! P# ~# o0 k( I: P0 r
​
5 ]6 [$ i' V2 _+ c3 Z B! S' T$ b3 u' n8 _. A4 s
3 ^+ ~' a# B' x3 j' s
4 VTC IP核
" L' L3 m% e8 V4 r( [: R5 x. Q! Q" o4 g {$ g1 Z P
本案例使用VTC IP核产生用于视频输出的时序。
: R+ r3 M% c! j( N i4 f# p/ dVTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。: B" f2 l9 ^$ K: k% y8 t
(1) 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。) i5 y! z7 d: }" t d& D D
1 o @1 b- O* l
/ i- g" O# Q8 F+ x4 }2 G
​' {3 F" X O( o0 f% b- X( k W1 ~
* o. e% E6 x6 b% k( s# _( B6 c
: |6 _! `1 ?$ a(2) 点击Default/Constant,Video Mode设为1080p,其余配置保持默认。$ f3 q# Y" n' M% x
​& E3 J8 j) q6 {# l' W0 M
, U% f* o% U |, ^9 L
2 j/ M2 f) j7 r5 Clocking Wizard IP核7 Q) j: k+ k" M/ r
^( i# p9 T& I/ ~
本案例使用Clocking Wizard IP核产生用于视频输出的像素时钟(148.5MHz,对应1080P60)。3 ^* Z6 G, l3 z% _+ ` Q
Clocking Wizard IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg065-clk-wiz.pdf》,具体配置如下。
6 ?+ o( g0 Y" N​* j% q* h5 {* ?* ~- x5 D
9 Z- _1 T! Z0 h" v# K# h* x; `% n( D0 O: G- L2 ^4 a
8 k# G/ `8 s& S4 b/ F) ~* t
& l6 |9 B* L9 d$ H4 ~+ m0 e% z
●Vivado工程说明6 ]! ]: `+ R1 \7 U; o: K/ ]
5 s6 g" ^* ~4 W' U6 B! r6 G. s点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。5 U: W7 v9 U' v& B
​
2 l) D/ `# B. o/ n5 k& `) w. {0 I$ g* \ q5 w$ x
: p3 o+ N5 J0 q3 [3 v" H& t& wVivado工程顶层文件为"hw\project\sdi_capture_display.srcs\sources_1\imports\hdl\sdi_capture_display.v",关键代码说明如下。
/ L7 @2 H$ ^( b/ P4 G+ E8 N% a- c6 Y b6 E" Z' W" u1 A
* u E$ A. [% X+ i; J
(1) 定义模块接口。' O# Q% p7 H7 U# X* z
​
+ n: J. u! G9 A2 M( O2 a
; @& ]9 t( R. _) C4 ~0 ~$ Z6 `9 s6 `. u8 S6 q
(2) 使用STARTUPE2原语输出复位信号。3 g8 P: h) m2 t. ^. n$ A* L9 K
​1 p" E- P6 O T1 [5 P
6 j6 Q) ]: ^1 B0 J0 M' Z; w
. Y) E9 ?7 E7 B7 ]7 P. J; N
; f$ H0 F3 ?4 e. _" Z$ X' j1 Q9 Y
3 U4 @" t5 E( w0 { Q- G(3) 调用Block Design。, b4 q1 r9 g' l
​
- c- a: E# _* H! O3 w1 @, y9 g9 Y
( K4 e; Y' R: s1 x ^8 k3 L
​
7 z, w p+ K& c7 v
$ a7 f2 W5 @1 F
( l1 i7 ]+ t3 i0 K( ~5 U1 B |
|