|
上篇推文为大家介绍了创龙科技(Tronlong)最新推出的DSP + ZYNQ评估板TL6678ZH-EVM,由核心板和底板构成,核心板(SOM-TL6678ZH)集成了C6678和Zynq-7045/7100两款不同架构的处理器。2 k9 i) l; G6 r, b2 S9 B7 z
; p' q2 ]' x; ~3 d; W5 a& F! Z: H2 j6 Q1 x: ~) t3 ]8 N, D" m
那么这款DSP + ZYNQ核心板,是如何实现核间通讯呢?
6 j! A# J6 }6 j- i5 P: I+ T( p
% Z. F: Z3 d" p8 B1 }" S& |8 {! ~, ?
​
( g# R# G A) F
# E. k. P! P5 W1 Y' s: u; D9 i
7 A; g6 F/ h5 {( o; ]0 v. d6 n核心板简介5 b; m+ N! ]! X' k" r
SOM-TL6678ZH是一款基于TIKeyStone架构C6000系列TMS320C6678八核C66x定点/浮点DSP,以及Xilinx Zynq-7000系列XC7Z045/XC7Z100 SoC处理器设计的高端异构多核工业级核心板。TMS320C6678每核心主频可高达1.25GHz,XC7Z045/XC7Z100集成PS端双核ARM Cortex-A9 + PL端Kintex-7架构28nm可编程逻辑资源。核心板内部DSP与ZYNQ通过SRIO通信总线连接,并通过工业级高速B2B连接器引出千兆网口、PCIe、HyperLink、EMIF16、USB、CAN、UART、GTX等通信接口。
# o# J3 X; ^5 T0 n& ~3 b​. q+ T6 r5 w! v: U% q6 a2 w
​ O6 V L0 z3 J j6 D+ ?/ }9 @* N
, @1 D" a7 Y, q. p1 q5 q. @2 V" S5 z2 U& s6 {
: u8 n3 Y1 N8 j
: p/ Y, i% v. t5 n8 E本文主要介绍DSP + ZYNQ基于SRIO的通信案例。" U0 s. _4 |; I; T
案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点site.tronlong.com/pfdownload。9 K- E+ P. V9 K/ k4 K4 M. d
. ^2 f/ S/ a# K$ V# I5 X
) q/ I A: x( j- J- @9 H- p/ O
; m2 G! B! a7 U
1 SRIO简介SRIO(Serial Rapid I/O)是高速串行RapidIO通信接口,常用于DSP与DSP、DSP与FPGA之间的数据高速传输。SRIO引脚占用数量少,支持多点传输,速率可配置为1.25Gbps、2.5Gbps、3.125Gbps和5Gbps。
, p2 d9 K- e# K6 l( \$ b) ~SRIO包含三层结构协议,即物理层、传输层、逻辑层。$ R, q( }; J- Q, b' d) R# P
(1) 逻辑层:定义包的类型、大小、物理地址、传输协议等必要配置信息。
- e: x2 |' T4 V/ N( B6 v(2) 传输层:定义包交换、路由和寻址规则,以确保信息在系统内正确传输。 g! S6 m9 b" j2 y5 ]
(3) 物理层:包含设备级接口信息,如电气特性、错误管理数据和基本流量控制数据等信息。 j1 P5 b: v* I: I$ e
RapidIO体系结构如下:3 C- N4 v3 {4 t8 C) n+ P
# t6 S( Z! P, m* b% G2 `% \% Z9 V& o. H, Y8 {
}* f# h* ?. K& P
3 _( m3 b3 U0 \+ ?1 {% X2 F. E1 `5 Z​
' b ]8 g9 x; x5 J/ g. V; Y​
; u9 N* P8 R& h' T
: |' `4 P! B6 ^( L
3 k; E; ]5 d9 d1 u( c; m1 W+ w; E2 SRIO通信案例
Y/ s$ m- `+ ]% Z; ?( @" G6 K6 j
# }! G% b5 D$ P; t/ k, S( ^8 A, a3 @ Z' z" k
/ R3 ^% `' u: f4 g% l* l2.1 关键代码2.3.1 DSP工程(1) 程序配置说明。
8 L' L) h7 S# l2 B" G6 C1 |& A​
}3 w- j% c2 y9 V6 n
8 \; T7 D. f! {4 G2 U* X; o
+ t* M! f' T. ^" V* R* W
8 }! u: [' u0 q$ l2 M
{ V7 g- }6 U& }7 C7 ~8 r
! t& D) }2 i' M* v- N/ d' s4 t4 ^( V- f! }7 @( U
(2) 使能SRIO PSC,初始化SRIO子系统,SRIO通信测试。( J' {# L+ Q2 t9 h: Q
; x+ l1 w- r6 A; i3 \8 t% w$ Z5 d% o# Z% B( y8 ?* U
​" W* [8 v9 n& K
8 W( m$ j" a8 [) F) b- `2 G- w, d4 f$ u% g8 u H
( g+ B/ l, w1 _- E, K) z
, C9 S5 O3 J6 q8 D: }( w G
, Q/ ]3 S7 K' Z
. Q3 W5 A, e- \0 m- k+ l: R​8 X" a4 W+ D4 L. q" s7 E5 R
# @5 `: Y! z0 O4 P! } J
8 ] V& h1 O9 M0 t2 Z7 J6 y) X
- @( g" ?4 E t3 x: p# Q( G2 }
0 X8 h8 I! s3 R) f​
' E: Y- n7 o! [* z& _$ Y* i6 g. J& Y# e4 a, E! N7 W+ T2 u
' {6 f6 U3 F, o4 \) \- w' d8 \6 E. k: O
9 g8 ~+ Y! F2 o7 G
& W/ p1 Y9 U* b* w* }$ S s
* V! T% C4 z( M) k& Y7 x
(3) 以NWRITE + NREAD和SWRITE + NREAD模式进行SRIO通信测试,单次读写大小为transfer_size,单位为Byte。w_format_type写格式类型在main函数中调用srio_test()传入。7 N3 B' q0 i0 Q/ w, a
1 E" H+ i8 g- _ M f
8 R5 e6 d3 X: Q( G- L o
# a0 c3 t/ j; j2 a9 B1 A1 t# D" U) q, Z8 |: H, q! i) ]
​
4 K# w; f8 q% s) f5 r. d: P/ p! g4 ]2 o
9 l( k2 o J$ Z# ]8 {$ _
- d/ H' ^, ^7 e+ R2 o
% v; b+ N; H. t
' N9 ~8 Q- Z# `9 }
/ G5 ]1 ?; ~7 ?. L(4) SRIO写测试流程。1 _5 E% f7 ?8 S0 Z) x* G8 f+ g
3 N+ ~: ? z3 B
3 i1 X% R% n3 P6 z6 r
^7 L% C! T5 L* ]: q* H
8 ]* B: u+ H) G* @​% f L( S* ]5 I
​* N' k/ v' l/ H* O
​* X$ l- `5 ]0 A1 `' z* `. L9 L- Z% Y
2 w) |6 G2 q3 U8 ?4 B
7 y- S2 z% }$ S2 o# y* t
0 V+ T9 f0 D5 ^
! x6 a) k9 N* Y' W. v( P
0 q4 I/ P3 Y4 q
# u7 X& ~8 f3 y7 I" b(5) SRIO读测试流程。
# k( p, ]) X+ ~! g; Z9 o3 [" d' u( K8 V
/ @. ~) k- N9 h& J9 ^& C
6 c, G) q/ G: [; f) A" @+ J1 |& e: m( y8 l1 E$ `
​
) B3 n7 L1 ]& c6 f) k& r/ J+ |​
9 D: E. w& U: G​: m5 z. p! g4 ~' m
$ a, c# A; ]6 a2 k" a+ M- o9 b/ M% r' S8 ]
6 F8 i- }* K7 I0 f, D8 r a. |) @" v0 e4 ?3 A
6 V" B2 u1 [" U |
/ ~7 ~5 r, _& e! v9 X- x
0 _- r# {. E+ A8 S
6 }1 }) n, Q( }' K0 @- F/ Q1 W; W2.3.2 ZYNQ工程(1) 端口定义。5 ?7 Z1 Y; F" [; I7 E: _( g* X5 A; ]# h
! Y( T& R0 x7 A/ [2 Y1 S2 l0 K
& \2 `1 M' m& }" Z- ^0 p
1 g( }; X; i* n9 @$ {
: L6 O( B; {9 K, }% G1 S​
! C6 X" ?+ P" D2 l) z8 G1 N4 Z* _# E5 [% K1 U
) ]* n3 D M- x/ J: }4 Y. n' V0 c3 {
/ l4 X# @) Q$ Y: @
% v& H) C d, Q0 d; ]6 \! H" I$ b' E6 I! V
(2) 使用STARTUPE2原语提供的EOS作为系统复位信号,CFGMCLK(65MHz)作为系统时钟。
( [; D' E* t9 L8 ]6 B% O( W6 o3 I. N1 B. G1 ]2 A: y0 L
! [" g# }: ^! i9 L, _$ l* d
/ [; D) o5 G, T, O. |+ @
" _1 ?( @" |5 }4 S4 f5 m8 Q6 w​$ ~4 @. Z$ r/ B9 e' |
8 H" x9 ?) Y# F% O5 T: W2 J( h% ~7 v% g* t. L
$ R" o) |1 F4 C: X
3 l+ h3 K3 A2 g$ {, d- g. _' x( k g2 U' ]7 Y8 @. m1 O
1 P, m7 G8 @ Y7 i4 z
(3) 例化Serial RapidIO Gen2 IP核。
9 r/ p! Y) @+ v) {! F7 v5 Y1 P. Q# @4 W: B" T
/ f6 ~0 z- y& x3 ~ K
( M8 J Q1 x/ e$ }% ?3 u; @ }( p! T7 P* I, t9 _
​4 |8 h$ R+ x. T
1 B; @9 R3 c8 P2 _ S2 ], m
r' z( r' ~) O. u+ \$ z# P
1 Q" P8 L) C; ~6 C
8 b/ e" {# `5 d: I4 q6 @- U
V' \) t5 x+ f& F# t5 |, E
1 Z) C4 a; c# J- _* I3 U5 m1 Q
) a1 a& R$ m1 }
2 h# ^) \# D3 j​% `/ v" M: b: w5 Z) S( x: z: N
8 b8 ^4 c: o+ _$ x W* u5 ~, A, d* L
+ n* e, M7 h, N) W- Y) r' c
# h4 j! w; \6 [+ c1 v" F7 j0 t4 h) q0 A1 B8 {6 {' j+ P
5 S( A; C; P7 m4 O Y) P​9 }1 o, E; v6 V8 Q
: }0 V1 D0 }8 H8 n c* v. _
: i; C1 u3 u1 h; X X; J6 |$ k+ H4 C: R( V
2 [1 f$ L% P7 @5 X1 N' J
$ _+ ]2 @# Q9 ^* J+ _ {
% q) ]3 n/ H& s4 g3 [* m其中Serial RapidIO Gen2 IP核输出的log_clk为125MHz。
. o- {+ Z9 v3 Y0 ?
7 b, x$ R3 m+ l# U% P& A, o& r7 {
2 W; |$ m) A' N3 I- p5 W+ C5 r
3 ]- F1 V: r; U/ B
​, G& x& O g' j7 ]# r
# x3 N+ q1 n, W6 `- ^! m; Y3 }& O9 w' @ x- k
2 R) U* B; q" C- q X2 k, Z
1 Z( b! [- E% i) C' i- }2 M
! t/ o# d; ]% o3 R# ?3 n0 _2 z
' i* i: ^1 ]/ W- D: s" \& o(4) 调用srio_response_gen模块,其接口与Serial RapidIO Gen2 IP核连接。
6 y+ \6 n6 T, [ D
+ t6 s( P; J0 k( W9 H( W2 ?* E( \ }& S2 Q# X( P" Y- q7 G L
& E* e8 ^3 h# Y/ }1 R2 c4 U3 a# H3 P( d* |2 G
​1 Z3 K( T% r( ]
( S1 z7 g) g9 W7 m N$ V( B9 x2 p4 w. z9 b: S4 S
( W$ C# \8 V0 y& s5 ]
4 b. F5 E8 b3 q' |1 f) `​
* y& ~* K: y {4 h* i​
2 D u1 Z8 T4 ^6 O) I% t: T1 u; q- }: a4 ]$ e! N
9 ~" L5 Y, S5 z$ y/ V
SRIO详细开发说明请参考产品光盘“6-开发参考资料\TI官方参考文档\”目录下的《Serial Rapid IO (SRIO) User Guide.pdf》文档。5 K% Q& ]/ J0 r4 K/ l. b5 D. h
备注:关于本案例涉及的IP核、模块的配置详细说明,可下载产品资料进行查看。
/ s1 J! d0 f; d. n" F7 F) N
9 X4 _9 u" W: _" y* n, z6 j4 Y b! s& ^9 w/ ]
: ~) ]" ?+ U R- h* ~. f( X" P; o2.2 案例功能评估板DSP端和ZYNQ PL端进行SRIO通信测试,并统计读写速率。评估板DSP端作为Initiator,评估板ZYNQ PL端作为Target。SRIO默认配置为x4模式,每个通道速率5Gbps,并分别使用NWRITE + NREAD和SWRITE + NREAD模式进行测试。ZYNQ PL端使用一个36Kbit的BRAM作为设备存储空间,将DSP端发送的过来数据储存至BRAM。: E+ V) w" x# o$ r8 y7 L
2.3 案例测试先加载运行ZYNQ PL端程序,再运行DSP端程序,CCS Console窗口将打印测试结果。: I" A% d5 R' B, h) K5 }
NWRITE + NREAD模式:NWRITE= 12.50Gbps NREAD= 7.74Gbps
! K1 w' i, G2 s. @. _6 U+ DSWRITE + NREAD模式:SWRITE= 12.49Gbps NREAD= 7.74Gbps
1 f, s) Q5 w, `* x! u; I备注:由于写测试仅统计发送数据至SRIO FIFO的时间,读测试统计发送读请求并等待Target发送数据完成的时间,因此写速率将比读速率高。
/ X0 S4 e0 {: l$ |* a/ ?, v
/ M& t1 w7 V0 J$ r/ _6 N- ? `
- i, {! b) A v' C3 {2 R0 o7 e# ?5 m
- i/ F& J' L1 B) m4 r/ i. J% k+ C2 W
​
) u' c% u* a( I5 B# Z# V+ x: A/ X. M* T7 Y
3 C, s1 n$ T. j
% }7 c- f/ q% @9 i- W% N
* z( R4 @$ _& ^1 n% X
- m$ \" Q. O% ?4 T, [# R& g1 w+ j5 K9 G7 g5 H$ b5 r O0 I3 ?
, c% _! A% a' [) Q6 W {
​# o) `$ S* [" H
​ S; i0 @& P7 v9 o( D6 T0 F
; e1 D) n7 N( N$ |+ U9 i2 p n" l( s0 w. R4 i1 `8 x& E
/ K1 w: s1 \% I" m8 B+ F. I: r5 ]0 o; i! n! |6 {3 h* T
|
|