|
前言0 E6 v9 Y" a) s! c7 p
' @2 X J% s, u m, p9 a* E- M/ s. Y. f0 }, n
* o" x! b7 i. E ]5 |
SDI接口,全称是“数字分量串行接口(Serial Digital Interface)”。按速率可分为标准清新度SD-SDI、高清标准HD-SDI和3G-SDI,其对应速率分别是270Mb/s、1.485Gb/s和2.97Gb/s。目前在航空航天、军事、医疗、交通等领域,SDI的应用广泛度仅次于CameraLink接口。
6 k3 Y9 Z& x3 z% }+ z; n: s: w5 y* Y0 r! X: D
​
0 l; S! u0 t) x! R' l4 C" i
, j, P& ^* D5 p' r) O1 u. ]
/ p4 ]3 B1 U, C- I/ u: K. z- D3 f H# e: \ D/ J5 H
$ R* K/ S6 T4 O9 d8 Q; |
SDI接口优势:6 U2 J3 O4 u, c1 v: z: B# {
(1) 消耗GTX更少,消耗IO更少: D8 j3 F, G2 r: Q5 ~4 G
如果使用GTX总线,仅需1对GTX,而HDMI则需要3对GTX。CameraLink接口由于走LVDS信号,Base模式下需要11对LVDS信号,Full模式下需要22对LVDS信号,消耗IO数量比GTX SDI多了很多。( R" {- w) Y& v& G) |
(2) 传输更稳定9 c8 [0 V$ G+ d2 W$ o# s/ G
相较于HDMI接口,SDI接口的自锁扣设计更加稳定可靠,不易脱落,不会因人为因素造成信号中断。" Q, m! X$ p( S6 w5 k
(3) 传输距离更长
' F$ @1 a1 s; T& v% r串行接口是指逐位数据的顺序传输。它的特点是通讯线简单。只要一对传输线可以实现双向通信,特别适合于长距离通信。从理论上讲,SDI的传输距离可以达到100m。0 v9 _- Q6 v1 c$ I4 q1 @
(4) 成本更低
5 P, d7 \9 b' X" B+ o2 lSDI接口平均每米价格约为4元,相较于HDMI接口的平均每米价格约为10元,SDI接口成本更低。
1 d7 x4 s; _( u2 Q0 b+ K" \
) a& R% A B. j6 K" n) ~; j- A' g
% y. a5 B9 Q- J4 I创龙科技(Tronlong)的Kintex-7、Zynq-7045/7100等FPGA板卡通过FMC视频模块已实现两种SDI视频输入/视频输出方案:GTX +外接芯片。本文将为您分享基于Kintex-7 FPGA评估板、TL2971A/2972F视频模块的3G-SDI视频输入/输出开发案例,使用外接芯片方式。TL2971A/2972F视频模块模块亦可支持GTX方式。$ S, N ~# H. I9 @8 m/ e
8 c# B+ M. g- T" S* W* ?& J
$ e# Y9 P# S, A* x! [9 x3 d$ I2 |: {9 W: E9 l0 x! e/ e1 p0 t
* F q' i2 N9 Y& E$ U! M8 h
●硬件平台
( @ z+ X) ^% E6 D2 v6 [: E( x2 \4 Q) b4 J+ [) p& k7 H
+ d: ^, u( S# ~% ^& i {
2 J3 a/ k2 P4 u/ H
1 TLK7-EVM评估板
2 v: b" K4 `# }' O$ a M: [# @0 Q# O' I# l8 h6 _, f' v5 [1 ^1 B
本文基于创龙科技TLK7-EVM评估板、TL2971A/2972F视频模块进行演示。
& n* B, O2 H" DTLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
8 m( {' P4 B0 e/ |评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
, m! g& ^5 d" C7 u( z! d$ i- k( M% s8 Z可申请TLK7-EVM评估板进行快速评估,点tronlong.com/Product/show/93.html,免费哦! P7 T! _( `! }
​' g1 [! }/ A( R6 V4 c
7 o' ?* a6 _7 {
f. S' g8 D! }; ]5 z: m
TLK7-EVM评估板$ P5 x: B; U/ k) j: m9 {2 C, b
$ e B1 H Z3 a5 a- p5 t% _$ x. O5 \" w) R( F# }5 y" ], L
% @9 R5 {( s2 j/ G
2 TL2971A/2972F视频模块9 k+ E% ^, b4 b
$ y+ ^1 w. B# V1 i/ D8 Y$ L# _TL2971A/2972F是一款基于FMC LPC标准设计的3G-SDI视频输入/输出模块,与创龙科技Zynq-7000/Kintex-7/Artix-7等评估板配套使用。以下为此模块特点:2 j7 o2 v8 Z( u+ I2 T7 R
(1)通过GTX高速串行总线引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。2 ?5 B/ y: S2 Q. d: I
(2)通过GTX高速串行总线引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。$ X+ i, Z! y3 G
(3)通过GS2971A芯片引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。8 h9 e- h y E2 O) u; [3 @
(4)通过GS2972芯片引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。/ e3 Y' P% y4 z+ q9 ~
(5)采用标准BNC连接器,支持视频设备热插拔。0 I5 D2 o! C- [* D2 ^' v; V
​
0 i. z. \5 M6 V6 K3 I0 y
% b1 w! ?9 n3 x, G# f" K6 s, b2 q
5 t. [% m' i" X8 _* U5 cTL2971A/2972F视频模块/ U7 r0 n+ H: n e+ v
, y2 g) d% \7 E# U, A q
- o- E% Z( u, O' z4 g- n; @% n, k# c
* v; l) |0 d: g$ u n6 G" V% S& L/ T# |0 @( R/ F* g
4 j! w- i0 {2 \
●案例功能
0 A8 m5 |, k; r: A1 }4 z% J6 b" W8 y/ i F8 m( z
7 G% X$ |* H5 ^ o: h6 s* k& z; S' I2 u; U7 d* _4 w
本案例为通过GS2971A、GS2972芯片引出SDI视频输入、输出案例。通过GTX高速串行总线引出的SDI视频输入、输出案例即将发布,敬请期待。
5 k9 S c9 Z. v: ~案例功能:评估板通过FMC视频模块TL2971A/2972F的SDI IN接口进行1080P60视频采集,并通过TL2971A/2972F模块的SDI OUT接口将采集到的视频进行输出。案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点:site.tronlong.com/pfdownload获取。$ {- J5 l+ p" G3 ~0 u* {7 E$ {9 M
2 d; }9 c# a! m. ]
8 u" g: y) S) g4 x& P1 s1 y9 j
开发案例主要包括:! h2 K' J/ v* u9 O
l CameraLink、SDI、HDMI、PAL视频输入/输出案例
; ?7 B" `; C9 Y+ z$ G6 Dl 高速AD(AD9613)采集+高速DA(AD9706)输出案例- ]5 O. C& i E& V* H
l AD9361软件无线电案例( j* }, Z+ C+ m2 x8 @
l UDP(10G)光口通信案例9 O! d) t) m6 o& u6 U1 _4 l
l UDP(1G)光口通信案例- G3 x6 J4 ~! x7 E R) b+ ]
l Aurora光口通信案例
6 l L- e5 E k2 ]) g0 F$ ~l PCIe通信案例
" B3 D7 P6 ?# L: o, ?' U+ P9 \9 a1 d/ h. l$ g. I1 U, V8 g
& ~% {* z2 Z0 K, C. ?2 c( y9 a4 f6 }- }, l" v V
●案例演示$ p" \. S. c. b# U' g Q+ Y- t. ^
1 r H0 f; P+ {4 o y将创龙科技的TL2971A/2972F模块连接至评估板FMC1接口,评估板J1跳线帽选择3.3V档位,以配置FMC IO的BANK电压为3.3V。
0 X6 v2 w B0 R& z0 f准备一台拥有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接口。 i0 M6 L# M0 q) }2 f
7 k7 ^0 o1 E/ t3 Z; f1 j# E; h
% g$ F6 d( A- j* G K4 p
通过SDI数据线将TL2971A/2972F模块的SDI OUT接口连接至SDI转HDMI模块(厂家:玩视,型号:3G SDI TO HDMI Audio)的INPUT接口,再通过HDMI数据线将一台HDMI显示屏连接至SDI转HDMI模块的OUTPUT接口,HDMI显示屏用作图像显示。
. u* Q `$ D* ^9 _
1 I8 B1 w( j# Y" s4 Q
& q- Z$ o2 M" D4 ^8 Z2 N0 w7 A
6 q: |3 Q$ g3 m: h {2 p; b! ]; b) p4 H- @& o& v/ M
​
* ?+ @: b# x' J+ Z" n8 a/ |" l/ n) J q; V, j
! q, s/ E& [6 W* ~6 W. d​( w( K7 c# _9 b" c5 a3 w
* H; A7 q5 _$ d0 i
4 F' \+ y3 w$ U
' n- P' G- ?% ~+ I( t5 y. r+ K V) _
1 @6 h. j Z: V: r运行程序,即可看到串口调试终端打印如下信息,然后在PC机的显卡设置(或图形属性)中,按照下图设置HDMI分辨率为1920x1080、刷新率为60pHz。
* k$ I( x' ]# Q( f, D$ a% B' ?$ U& |* E! `1 J# t* e0 M+ r
; n9 H6 E. ^1 h d( O1 @' H
​$ D8 h1 n* r1 s2 c5 s: _; l% o
, q8 d K7 J/ e8 M) h/ z
6 ~$ o& o: W/ Z
; B' Q: F( L: ^ F. G4 y6 {
" I0 H4 K H. q​
1 z t% v3 D4 [: Z: ?0 e3 k1 x0 d: ~; G6 X9 X. i; Q# W5 J
5 a& q/ ?% U, L0 m2 E7 e
此时,HDMI显示屏将显示PC机HDMI OUT接口输出的图像。. I' e6 _1 H I6 q
​% ~" P4 e3 M; C: f
1 k4 v- _; n5 T t
, a; k4 @/ L2 i x( B​4 J; j. x% p. [# \% T7 v
) L1 @, s; z$ R9 N' S% |$ s+ D( j8 h( _2 {: f* E
●关键代码(MicroBlaze)/ }3 p, P( O! i
# a) N- N) ^) u+ e1 y5 x' Q$ t. FMicroBlaze裸机源码为"sw\baremetal_demo\project\sdi_capture_display\src\",关键代码说明如下。 f% W$ U/ u; m" ?9 [
2 ?9 P: Z4 G- \# A6 T
8 M @# Y5 E7 g# X# K; A# f. ?(1) 初始化VDMA,将采集到的视频数据缓存至DDR,并将视频数据搬运至AXI4-Stream to Video Out IP核,再进行SDI视频输出。
4 F4 S8 n6 U! ^& G& b# ]/ a​
9 f! i+ d; W3 D5 m● IP核配置
, o% Z5 ] ^/ [: }) ^6 q+ S1 J& ^4 v1 K7 ^1 E
1 VDMA IP核, r9 |! f5 ~: r2 t* G
+ T' x/ R# Z/ u! \# N本案例使用VDMA IP核进行视频数据缓存。
6 q" \/ l9 A- b' `VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的pg020_axi_vdma.pdf,具体配置说明如下。
K/ c3 i! N Y7 n(1) Frame Buffer配置为3个。
: Q& c. @6 X$ v }2 j) D(2) Write Burst Size、Read Burst Size均配置为16。9 A- e# M! E# n9 s h& F
(3) 读通道的Stream Date Width配置为24。
4 {! Q' `2 I g1 ~* j) A9 m3 [(4) 读/写通道的Line Buffer Depth均配置为1024。
+ n0 n" E& |/ J- M& _" z% f r​( Z+ g4 R# ]5 f6 ]5 {$ M+ k0 P
! Q' M# \5 I$ D" K. h, d! s0 C
; X' Z; a: E% C! o+ h(5) 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。0 [4 n( Q" H" V/ p* |
' a" w9 U# @7 k
* J8 r! y: o" `0 s* h​9 r2 k0 Y$ I0 a/ K
$ e; T( [/ A! {# |% `/ u0 v
1 P5 v! X( R9 W2 Video In to AXI4-Stream IP核
# P |0 c7 C$ Y y) u3 H/ e4 v( w. f/ a
本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。+ v9 k' a3 D/ A- @( a5 t
^( h! u# f0 R
5 q) [! Q# f% O1 \8 F/ o z. v2 d; W
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。1 ?; z$ {( {) E9 a
- D: V* }7 d+ v1 N
9 r+ F; }. D, M8 i! k. F(1) 视频格式配置为YUV 4:2:2。' @ }, D/ W" L: j. ?
(2) 数据位宽配置为10bit。5 v3 D3 j" b0 b9 W! Z: u7 O
(3) Clock Mode配置为Independent(独立时钟)。! _6 z0 o* W6 a" z+ F2 M' K
​
! ^3 _0 Y3 C( R3 ]' W3 y' _: \# Q, q; Z' A* F3 Z4 w% i7 }9 M
: P1 ?7 T+ D& t/ b( y; }# H
. g+ G6 E( D: Q0 a, l% O6 ]6 b
) r; q: N- y, j+ \6 E% G$ O3 AXI4-Stream to Video Out IP核
+ N3 }' E+ _7 N# w7 G, }! v C- Y4 S- G3 x
本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。
c7 l# `4 X; R6 p3 F( I) B& v( S' sAXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。- o" ~" }4 T- s f# I/ | }% Z
(1) 视频格式配置为YUV 4:2:2。
+ L$ k5 u" w1 n. j( {(2) 数据位宽配置为10bit。
% y$ R0 | m- [- n9 l5 s% j(3) Clock Mode配置为Independent(独立时钟)。$ G4 c3 z; x% R& `
​8 B) x8 I9 t- q' I2 c8 A ^+ H1 |! G
) \; x, l. m9 m; F" _
/ B2 Q6 Y8 c$ c
4 VTC IP核
) ^8 z8 g- X( u! D' |" w
# K$ k1 X7 h+ I" `8 G本案例使用VTC IP核产生用于视频输出的时序。( n% k9 f3 j/ F. V
VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。3 V4 _: Q' U# x6 _. Y: A
(1) 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。
) f* n/ }/ l, U: @/ f q0 h6 Y
p& T- S: N7 t7 @) `+ ?2 _% Q6 Q7 J3 \6 W# G' ?. I7 R. P
​
0 ~. R/ L: @8 f; O! S' I4 ?2 `7 u o/ }
B) l+ z4 H: {0 G: _(2) 点击Default/Constant,Video Mode设为1080p,其余配置保持默认。. c ?! P4 J3 g
​( S: B8 N @5 w+ m# z
4 Z" D! D6 g m# B4 i" q* h. w0 @) @* Z3 L. e4 [
5 Clocking Wizard IP核
' J2 |; a1 t2 |0 {9 ^( E8 G, _+ ]: g4 X) A1 }$ ~
本案例使用Clocking Wizard IP核产生用于视频输出的像素时钟(148.5MHz,对应1080P60)。8 r! t" ]. _5 E: m
Clocking Wizard IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg065-clk-wiz.pdf》,具体配置如下。
( N4 M( r7 z6 T5 e​
2 Y! F) H, `+ e3 Y0 W) S6 e
) [* U: j8 m8 d( E+ O, U) L H4 c; e. K
1 N6 C$ i) O6 y( E! |2 N! L
, v7 c3 B) G. C( Z" G●Vivado工程说明3 k3 S) O" O/ P( O6 T; t5 S
5 P3 O, @4 J1 _; k- K+ y点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。
6 Z p& Q5 P& s​3 ]6 H4 Z, L- X8 b8 v
1 e$ z, G8 e5 Q J8 L% o3 Y
( ~1 I% ?' N5 [& b @Vivado工程顶层文件为"hw\project\sdi_capture_display.srcs\sources_1\imports\hdl\sdi_capture_display.v",关键代码说明如下。
7 Q" q) f: ?5 Y% p6 k: R/ B0 W0 H; Q+ w$ r" Z# u0 W
& s: r; r, E+ S- Z. J
(1) 定义模块接口。2 k6 u+ O8 ^9 ^ J; C- W" n( s
​
6 g) E' N$ g0 X: O8 P, w7 e- U/ Z6 s% C4 D5 V* L
4 I( V, X& @: x7 R( ^/ T(2) 使用STARTUPE2原语输出复位信号。# I, V. w' g% @" _% N- r. d4 E
​5 p f' B2 Z' u- f2 v# ] Z
, b3 B) E$ g: D% [# W1 j
6 B& q' V8 e. K- J: ~3 `
; w, `. e& r5 e" H( k* F. |( R( G( m1 [0 k* _2 S
(3) 调用Block Design。: P; r% {; O |) A; u/ s+ `
​8 S# @; w* @; F' q3 v- l# @: _
f9 w0 Y5 `8 H" K V+ s& w8 {6 R" ?0 u4 f& }; z2 o
​
! W$ n' c6 |, s+ i
+ _, `/ P2 K; ?$ {% v0 p# a& k+ l2 l
|
|