电子产业一站式赋能平台

PCB联盟网

搜索
查看: 3986|回复: 0
收起左侧

Kintex-7、Zynq-7045/7100评估板如何实现FPGA的两种SDI视频方案(GTX+外接芯片)

[复制链接]

678

主题

902

帖子

8293

积分

高级会员

Rank: 5Rank: 5

积分
8293
发表于 2021-2-4 20:56:52 | 显示全部楼层 |阅读模式
前言
+ @! d8 Q( Q8 k- Z/ Q

9 Q3 m% F8 L9 c% v/ d4 Z) e+ x' ~6 y7 x; }

! Y* W' u# N- f: WSDI接口,全称是“数字分量串行接口(Serial Digital Interface)”。按速率可分为标准清新度SD-SDI、高清标准HD-SDI和3G-SDI,其对应速率分别是270Mb/s、1.485Gb/s和2.97Gb/s。目前在航空航天、军事、医疗、交通等领域,SDI的应用广泛度仅次于CameraLink接口。
+ ]; D  z# r7 G9 K& X0 c& L, i+ R/ [) u
​# A3 ~4 P- ~8 Z/ s4 a/ j" D# I. T

7 C( l  i* D! y8 Q: |

4 D6 I7 M: ^, n- }6 Q: o& G- z
" @0 g( Q" C, L# @% |
: |- }- r* \6 b
SDI接口优势:. M% P6 I& y8 z2 E# J
(1) 消耗GTX更少,消耗IO更少2 D1 o1 X# Q+ _7 {( h; |
如果使用GTX总线,仅需1对GTX,而HDMI则需要3对GTX。CameraLink接口由于走LVDS信号,Base模式下需要11对LVDS信号,Full模式下需要22对LVDS信号,消耗IO数量比GTX SDI多了很多。# I; S4 S! v9 y
(2) 传输更稳定
" u& [$ N% h* l相较于HDMI接口,SDI接口的自锁扣设计更加稳定可靠,不易脱落,不会因人为因素造成信号中断。
5 _* M! K6 T0 X, O2 F2 S0 I5 {! ?(3) 传输距离更长
+ y% l0 }1 o4 M8 @串行接口是指逐位数据的顺序传输。它的特点是通讯线简单。只要一对传输线可以实现双向通信,特别适合于长距离通信。从理论上讲,SDI的传输距离可以达到100m。* N& i; k3 G) W5 O3 u; |# S5 n
(4) 成本更低9 u. e$ t2 h; n# @2 L
SDI接口平均每米价格约为4元,相较于HDMI接口的平均每米价格约为10元,SDI接口成本更低。# u  t# [0 S& ~1 m& X
7 C; J6 t  u+ [- Y
4 j' d( C! p6 g9 c6 m" ~
创龙科技(Tronlong)的Kintex-7、Zynq-7045/7100等FPGA板卡通过FMC视频模块已实现两种SDI视频输入/视频输出方案:GTX +外接芯片。本文将为您分享基于Kintex-7 FPGA评估板、TL2971A/2972F视频模块的3G-SDI视频输入/输出开发案例,使用外接芯片方式。TL2971A/2972F视频模块模块亦可支持GTX方式。
6 @, y3 g, ^! [' q3 H. b1 w* [& q5 m* r
4 _, L5 Y* Q. H' u6 p6 ?+ ~

+ w* D, ?: D& C4 B/ ?

: p" Z8 _4 t/ r7 `. c" V, ?●硬件平台
1 |8 I! H" i3 I6 M0 U. `. d

9 e/ I" {: Z) K3 c. _- G5 u) J* \. z+ B. f. S  J. R) O
- F' \- @* R, N6 v$ K
1 TLK7-EVM评估板
) [% B* P; r" K/ s( q. B+ X; c

5 t! m5 L+ N6 k0 u本文基于创龙科技TLK7-EVM评估板、TL2971A/2972F视频模块进行演示。
+ h6 o3 p6 @6 u0 M0 K/ XTLK7-EVM是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。1 n$ t% A$ \9 G" f& W
评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
6 c6 [: D2 x/ m. C$ Z; T可申请TLK7-EVM评估板进行快速评估,点tronlong.com/Product/show/93.html,免费哦!
/ S: W* `: S% w: e# N! d: a+ h​
* k( [" C. I# F; \& x( w9 {; ]! p2 U

, K+ N: F2 c% ^4 p) g4 Z" j TLK7-EVM评估板
7 b6 l& s5 Q) H" ^: q, Y8 O, o8 P. U
0 C  I6 H- O! W# g* {2 R& r- ]
& Q4 m) R  Y, a% t. c9 ~

6 b2 x2 H- o2 b  H( Q! R) @' j2 TL2971A/2972F视频模块
+ S/ x; n& W3 a' J( v
5 V- P- y" x. o( U9 B1 k2 u9 O  d
TL2971A/2972F是一款基于FMC LPC标准设计的3G-SDI视频输入/输出模块,与创龙科技Zynq-7000/Kintex-7/Artix-7等评估板配套使用。以下为此模块特点:
/ w, I: C% G! _(1)通过GTX高速串行总线引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。
0 o* M. T. Y1 _+ E$ S3 d$ E3 X# g(2)通过GTX高速串行总线引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。  ?$ Q9 \% K+ D/ v. t
(3)通过GS2971A芯片引出1路SDI视频输入接口,最高支持2.97Gb/s(1080P60)。- w4 H% ]% d! g4 @$ T
(4)通过GS2972芯片引出1路SDI视频输出接口,最高支持2.97Gb/s(1080P60)。# J2 E) n$ p, p( u# w6 _
(5)采用标准BNC连接器,支持视频设备热插拔。& X8 [- ?' |: B( K
​0 J+ o" }, q8 z+ d% R
. p+ ~& j# g" l; |! {; U5 C7 ^
- ~6 s: O: i) z4 m. K
TL2971A/2972F视频模块
* _/ B. }( t  D  T( S( {% a+ `
  c) f9 o- @, ]6 _7 b: J$ X' P& l
& A% Y# a/ y3 S" G* d% F

+ x% }7 ]6 Q6 B: B7 X2 J

6 |4 |" v  r* X# _/ w2 g4 D4 k! B* @2 h5 _1 Q! |, B% Z# Y7 p
3 U8 B# N& {' N& G0 o5 M5 U
●案例功能, M4 e% [- Y& K3 L
# u- r, J& H) k& V7 H
) c3 I% m$ [/ W3 H/ c# n' E

4 V( n; c. E. e# r' H" R$ E- C本案例为通过GS2971A、GS2972芯片引出SDI视频输入、输出案例。通过GTX高速串行总线引出的SDI视频输入、输出案例即将发布,敬请期待。
7 [3 g5 e4 b; t5 W  W1 W. Z# [案例功能:评估板通过FMC视频模块TL2971A/2972F的SDI IN接口进行1080P60视频采集,并通过TL2971A/2972F模块的SDI OUT接口将采集到的视频进行输出。案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点:site.tronlong.com/pfdownload获取。  I- d" Q. Q2 R# }5 o1 M# k  R% W$ N

3 W5 t- h3 `, w

  s# f* }- [& o: ?" T, v& ?$ T2 z开发案例主要包括:
% S0 L3 g0 t+ g* yl CameraLink、SDI、HDMI、PAL视频输入/输出案例
  m2 r+ V' G, b+ s+ s+ vl 高速AD(AD9613)采集+高速DA(AD9706)输出案例
  p* o/ Q: F& z$ w; Ul AD9361软件无线电案例$ i/ B5 [- f6 P# M
l UDP(10G)光口通信案例9 g1 d! V6 O6 ^& k: Z; Q9 O4 [% j) Q
l UDP(1G)光口通信案例
$ k- m( U6 b" A1 U6 I: M( a! l, Il Aurora光口通信案例
. R, _9 Q4 K& p$ M1 O# ul PCIe通信案例0 e2 y: q5 Q) u/ Z
6 L' \: E% X- E) @. v
+ y2 {) [( W* X* \8 ?* f! j  E

! Y. w  R" L4 ?" E. E( `* S4 u●案例演示
- e" k+ ]$ u: {7 Y4 Z

6 D3 L/ s  {& ?* V将创龙科技的TL2971A/2972F模块连接至评估板FMC1接口,评估板J1跳线帽选择3.3V档位,以配置FMC IO的BANK电压为3.3V。
9 f* W: K" ~$ T( n" j  I准备一台拥有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 ^9 E/ I: U& b" P$ J, k. N

) L0 p' }6 X/ s* \" x: N
. n, T% s" G  y+ X5 d/ c- h0 s- T# f
通过SDI数据线将TL2971A/2972F模块的SDI OUT接口连接至SDI转HDMI模块(厂家:玩视,型号:3G SDI TO HDMI Audio)的INPUT接口,再通过HDMI数据线将一台HDMI显示屏连接至SDI转HDMI模块的OUTPUT接口,HDMI显示屏用作图像显示。% V$ @: c! s) _8 H7 ]& U1 C
" R* x; r5 V+ _+ _6 l7 w  ^
" D" D2 P4 o7 V# O9 y' W0 ]; g

5 B0 ~& @3 E/ |" w* k$ G
1 Y5 [. A/ y/ U/ G$ O5 d3 R% B$ z
​
8 z" H: o1 B( a3 o5 F3 m2 y0 c- A
7 H+ D8 _8 I" M2 Y* Y
6 q- h1 @' ~! @0 ?1 l' R# R
​
7 E, s# T5 o- B0 T3 l* b0 c0 j+ d2 C* ^  x5 w
+ m5 |4 b+ M# a' f+ X

8 K3 X" w/ _9 t

: P" f7 e; u5 n* S5 Z- f8 E运行程序,即可看到串口调试终端打印如下信息,然后在PC机的显卡设置(或图形属性)中,按照下图设置HDMI分辨率为1920x1080、刷新率为60pHz。
  ^0 @( B. v6 u- J
8 A! ~. R: S, H7 ^

+ h7 ~/ d+ A8 o7 w7 {# D5 r' `& W​$ u5 l5 x+ Q3 X* L# ^/ Q' L0 Q1 ^

$ W7 S2 l& D$ C9 M
. k+ i) W% v& a& X0 k6 d- G
- c# s4 C/ `( m- d
  i1 C6 S& d# Z0 s3 `
​
3 w6 s4 ?+ ~4 C+ G/ H2 u4 }* g$ M. z" e( s9 R/ Z5 ?7 O
9 M: t& b- N0 q- s+ X
此时,HDMI显示屏将显示PC机HDMI OUT接口输出的图像。5 q+ D5 k8 h/ V4 Y4 y% g* Z+ [
​
8 {; m+ J6 j& `" V( f% m. t. O1 R5 {
+ A- n, {  w7 y* ^' |
, m- e( K+ h- S' b! {
​
7 X% U) E* }7 R" ~7 t8 o5 }/ w! W
+ T# C+ Y% z1 N2 Q  B8 X

" v( n0 i! L2 e& ]0 O0 V2 d●关键代码(MicroBlaze)" h: z# o: ], v7 t: d

3 M/ \5 O( z- x: v: BMicroBlaze裸机源码为"sw\baremetal_demo\project\sdi_capture_display\src\",关键代码说明如下。
. M3 m& c' u, A8 O* K: m" v  ?1 ^/ x5 b

, _& N7 @! u  {# d(1) 初始化VDMA,将采集到的视频数据缓存至DDR,并将视频数据搬运至AXI4-Stream to Video Out IP核,再进行SDI视频输出。( h& X% S! t) @  G, A6 O
​, V) @4 e4 n$ t/ y
● IP核配置
$ H, \6 l) Z8 L( C
! h( n& ~# T0 Q/ N7 G+ a- Q1 V
1 VDMA IP核7 m+ E. C' J- A& s, t% `: j5 _
! {1 A) E3 ^! B, w* t7 {' P9 u6 J* I
本案例使用VDMA IP核进行视频数据缓存。- N2 G/ x6 u" Q/ P, S( K7 F: T3 D
VDMA(AXI Video Direct Memory Access) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的pg020_axi_vdma.pdf,具体配置说明如下。# t2 Z" J7 R3 r' ^3 `2 R$ n- b
(1) Frame Buffer配置为3个。7 t1 T7 y1 R+ D! s9 |. _
(2) Write Burst Size、Read Burst Size均配置为16。
5 |5 k) `0 A3 J5 C! b# A(3) 读通道的Stream Date Width配置为24。" f: n# d6 j4 Q! g5 ]  }
(4) 读/写通道的Line Buffer Depth均配置为1024。1 E  q9 L% ?  h  c! l
​! B! K# |$ t4 s8 _0 s

2 B" J) G0 d% X  ^

7 d/ I1 p8 o% E- W9 `* F(5) 点击Advanced,保持默认配置,即可避免VDMA同时读写同一个Buffer,造成视频数据传输乱码。( U: G3 B& D: e, X

4 |1 x9 u8 B& ^

' f, @2 I1 ^) ]​
) M/ D! q% {1 z; m; r/ j; ^! f) M7 |1 W4 j' B1 K6 ?+ R: E, S6 l, J
& s& L6 T' S1 }/ t0 n( B
2 Video In to AXI4-Stream IP核
8 U8 c2 w" l( _1 @7 E, d% n
( E. I- w( T# x) R; @$ E
本案例使用Video In to AXI4-Stream IP核将并行视频信号转换为AXI4-Stream视频流。0 @5 ?/ a8 o& \7 y4 P) V, A% e

- l. b; x1 t4 O* {0 a$ z3 t5 C
- ]& F- B  v) x& O
Video In to AXI4-Stream IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg043_v_vid_in_axi4s.pdf》,具体配置说明如下。( s: Z# J; F3 R) y# H7 G' @( G" E% f
- ^: E7 O  D" T  b: ~' O
& l; ~0 J% u# \2 i; j$ ?
(1) 视频格式配置为YUV 4:2:2。
2 p( @- ?: a/ J% D5 ^" S! _(2) 数据位宽配置为10bit。
8 _$ T" x$ M+ R2 a; v(3) Clock Mode配置为Independent(独立时钟)。& r0 P  F' ^. S$ I8 {8 v' @
​
8 a- f4 ]+ Q! `* E* M& b& r
9 j" f8 }+ @, s+ ]1 o

& \6 {: ~+ J/ Y( m8 D9 ^
4 f3 W" n5 ~7 P% y' \

" T8 J- ?4 N" z. G3 |4 x4 C3 AXI4-Stream to Video Out IP核
( E& @! o5 Z: @! O
1 @- K; V$ D8 _' w4 ^4 v
本案例使用AXI4-Stream to Video Out IP核将AXI4-Stream视频流转化为并行视频信号。5 n' }9 V5 ?1 k3 n. m7 B
AXI4-Stream to Video Out IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg044_v_axis_vid_out.pdf》,具体配置说明如下。
0 c1 u9 U* y0 d. i1 X" {0 k/ L(1) 视频格式配置为YUV 4:2:2。
( L( ?0 s$ O: H(2) 数据位宽配置为10bit。
; E5 X- a3 x3 ?7 ?, H+ J6 B7 {(3) Clock Mode配置为Independent(独立时钟)。8 u, ]9 S  o4 [
​7 d! z( _; Y! o" ~2 {& m2 C

8 [9 n6 O# I6 ^# s  i

! N6 t) b  Q1 V- d! [2 x" _/ Q4 VTC IP核& \) N" T4 [3 v4 {8 g. P

8 J7 L1 G! g# O/ C/ h7 s本案例使用VTC IP核产生用于视频输出的时序。" ^' n, _5 n& n. Y6 U
VTC(Video Timing Controller) IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg016_v_tc.pdf》,具体配置说明如下。4 p; m' E6 I+ c; u" J
(1) 点击Detection/Generation,确保不勾选"Include AXI4-Lite Interface"及"Enable Detection"。
* }5 ]0 z8 Q+ z/ S( s: O+ L1 C& E3 v1 J' }6 \
% _: _3 n9 [$ W! a+ h! M& K
​
8 E, E7 r' R/ y3 ]0 P6 [9 B" L0 b  K& K4 u0 U

9 c; i! X9 Y* J9 |+ {6 E4 {(2) 点击Default/Constant,Video Mode设为1080p,其余配置保持默认。3 a! b, }+ ?# L- L! r/ t
​2 r2 C6 v% q6 X+ \
' I/ e- \! G* g: U+ y

! w3 Z7 H4 E$ M, x5 Clocking Wizard IP核
( f: @1 |' ]7 ~' r5 |
$ H/ B* S6 e4 T9 a& }2 p. r
本案例使用Clocking Wizard IP核产生用于视频输出的像素时钟(148.5MHz,对应1080P60)。
( \* O3 k0 |7 r3 a; ~: rClocking Wizard IP核开发文档为产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《pg065-clk-wiz.pdf》,具体配置如下。3 c' s! t0 I# b, g! w, ^$ R
​( L6 K% G0 O. D, I  `& G
5 {3 y, s  F- W9 \: h" A) b

- o- O, ~) r& j+ y
# V0 P* ^2 s& M; G# q( C2 r
  J! u; K, L8 ?5 H+ \5 A; f# J0 O/ q
●Vivado工程说明; \6 B6 s! M( O$ }
/ Z& D" R& l& v# b' z
点击BLOCK DESIGN开发界面下的"Address Editor"选项,可查看IP核分配的地址,MicroBlaze可通过对应地址对IP核进行控制。# D3 a/ I3 z4 D2 \) A  n, q
​8 \; l7 i: f  l7 `  O. s' @
# W( a+ J! x* e8 y7 U0 i- |
  D- Y8 k: ?* m" \2 u
Vivado工程顶层文件为"hw\project\sdi_capture_display.srcs\sources_1\imports\hdl\sdi_capture_display.v",关键代码说明如下。
, d7 e  N0 x; {- f' n( @7 W5 C
8 {' t+ j2 [2 C1 ~
# C6 J% T1 o0 U7 [  q( ~6 r
(1) 定义模块接口。8 d5 ~) i3 G) m) ?5 G! C# N
​' `# C, ^* u9 Z0 m3 ]1 y

2 e( i2 b& r* Y# J6 `( q9 j& _
. n# E( j- R/ e1 r) `
(2) 使用STARTUPE2原语输出复位信号。
4 G0 x" W* b# R5 ^# d​% p8 G) r  J* x/ f% Y9 H

) a2 ]0 P9 R  L! v0 b

8 P# Q+ J. ~  l: g7 _/ c3 {# C# }$ k: \
' v& ~  J6 {  l: r: N
(3) 调用Block Design。9 l; Z/ f5 k/ C' E" m
​# ?( k& E% P( |$ V2 m1 _
0 @! L, G7 `% ?: m8 n* f

& t! Q2 c1 o% @: g: |) j& \​
+ @  a+ Y) ~/ W. ]
& E& G: e9 |6 f% J- P
( p( E: {- F3 ?  d
嵌入式DSP、ARM、FPGA多核技术开发,学习资料下载:http://site.tronlong.com/pfdownload
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表