|
上篇推文为大家介绍了创龙科技(Tronlong)最新推出的DSP + ZYNQ评估板TL6678ZH-EVM,由核心板和底板构成,核心板(SOM-TL6678ZH)集成了C6678和Zynq-7045/7100两款不同架构的处理器。
1 p/ q3 T8 e, t% m. U- Y$ j7 p! C% \! h6 E6 }9 X F9 I# M, T, @. o/ p
( ^( q7 |& f% m) G6 `
那么这款DSP + ZYNQ核心板,是如何实现核间通讯呢?7 Y- ?+ S$ i9 D7 {! a
( f* G0 Y7 A! G
% R: C" ]! |7 k* e# x+ @/ N
​8 }# x: r! f/ m: q0 P% O
, D- Y8 R8 g$ R4 T9 K0 h; X9 a9 v
N9 N! a$ l B$ j. B1 K核心板简介
: `: D. X' e1 H/ ~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等通信接口。( R( j, C0 t! _ r, G6 c
​# @# b9 ?1 P# r9 Y$ d$ `( A
​
- S" ?) v4 g% B* g$ n
- X, `. _$ H% |2 [9 Y9 c5 F
( | @* e. o- @5 g/ l+ s" N: q0 I8 l) o c
d) h \, N! p" h% {4 y! S本文主要介绍DSP + ZYNQ基于SRIO的通信案例。: F# N+ A5 C* N# c* x
案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点site.tronlong.com/pfdownload。
/ n, u, L( }, k, Q
* i$ Q% T& o1 S7 t1 T8 ^, l9 Y4 p( T# {1 [) Y8 a
! P) o" p2 V: Q. X7 o% r& K
) Z" ]1 ^3 y6 P( C. p; J9 M1 SRIO简介SRIO(Serial Rapid I/O)是高速串行RapidIO通信接口,常用于DSP与DSP、DSP与FPGA之间的数据高速传输。SRIO引脚占用数量少,支持多点传输,速率可配置为1.25Gbps、2.5Gbps、3.125Gbps和5Gbps。
( q+ ]! {7 G7 O3 cSRIO包含三层结构协议,即物理层、传输层、逻辑层。/ {6 I5 J* _: v7 Q4 D9 v! F! Y
(1) 逻辑层:定义包的类型、大小、物理地址、传输协议等必要配置信息。
1 m2 @) s) r7 Y- j% m* u(2) 传输层:定义包交换、路由和寻址规则,以确保信息在系统内正确传输。- B/ v5 D7 Y* E* r3 `* N+ _
(3) 物理层:包含设备级接口信息,如电气特性、错误管理数据和基本流量控制数据等信息。
; L* p) H4 C2 |' L6 \% z% LRapidIO体系结构如下:
* [( K7 H5 d# ]+ i6 b- r
0 v8 o6 ?2 {# L; Q0 ?: B5 ~: B( L; ^3 V- L
( O# v( y- l4 U6 j5 T- D9 @
8 L1 @% v, E. v3 L; D Y
​# \) N6 Y$ {0 C1 E' l& i. T
​
- I" q3 d7 }$ M$ u Z$ a
: v9 e7 E3 V: D/ ?1 w* E2 w1 s, A8 `- L1 G& m. P0 B( x
2 SRIO通信案例
5 ^# u: Z G6 F+ ]% J& D4 M+ h z7 l
1 i# q$ f0 Y3 }2 y6 E
& j) m, X2 J8 \7 Z3 ^
5 K5 T5 \' ]! o2.1 关键代码2.3.1 DSP工程(1) 程序配置说明。
9 p, @" t- ?& S1 }/ j​3 ?$ T) ~4 V1 z4 A7 d, {
) b8 g' C2 J5 g5 ~, E
1 Z9 p5 I( H1 V' k7 J& ~) t/ B' x3 L- ]$ K5 ]5 a- E
0 ?- }/ N. `4 T0 z, j3 w# ^
" ]" D6 J1 e3 |1 x* \. n
5 b; s: h) U- O q# V(2) 使能SRIO PSC,初始化SRIO子系统,SRIO通信测试。
% ~4 N4 I7 j2 Z# O1 q0 @" s2 F) T( x+ f+ `# ]
3 Q' |# A8 Z+ o/ H​
$ H+ j9 N& e; y9 D7 z+ v* D! `! K* i# k8 N: M
% W1 x: F/ m+ V" a( [; }, p; ], y. f) o
V, o& J$ C3 L% `+ k: l
5 I8 {; g4 X g$ z% k! i$ A9 Q1 R- z7 Y' w- l
​
1 S5 R( n- e' h9 F5 c8 y) t
5 |( Z7 [" L1 `: b9 t
8 D% G) E/ m! b
& B& _1 M3 }/ V- R5 S' v8 D& x& }( E3 H3 W- O! p
​
. p# W$ z8 C3 D1 p" Z- Q
: E! A( @. K: Y h
7 K% L# |: X% M$ n) d* c/ T$ u, z8 \/ I& L) y
) o! w8 H" }$ p
3 y, j: D9 V' r& s; t! t& T- b& B! U' a6 H+ j- V
(3) 以NWRITE + NREAD和SWRITE + NREAD模式进行SRIO通信测试,单次读写大小为transfer_size,单位为Byte。w_format_type写格式类型在main函数中调用srio_test()传入。6 h5 F& v# _5 y- ^
" L4 w+ @4 @; H
' s' m: E5 U" e- `1 Q. ^
& ^3 Z9 t! s5 l/ k2 \ O. ^- I
2 ]& o& Z u- P' F* ~, {+ A
​
- `% U2 Z! ~2 x
0 F) ~+ l7 B: ?- z) ~
) ?) A# s) W- m1 c) Q. }- k9 W1 f
) l( f% Q" ]8 Y- `! M/ q0 }. \7 ?. C# @. B1 Q- b M# a
1 I. j9 y9 R/ V* e9 ?/ R
3 z6 X5 r& w# {! `# E. ]7 ?(4) SRIO写测试流程。
7 Q; U! I# @: Q0 V7 P) @' ?/ M& _" l, z# [6 J' ^: m
, \1 S& i' h# F3 r D
6 z6 G/ Q5 e1 B7 T
$ k7 Y6 g7 {2 z% Q1 V​
, s K/ K; K+ ] h$ Y: S7 h​7 S. G3 x, u' @' T
​
- K0 |+ m& D; K, r t* d- w; h9 o, B) @# d3 h: G& V, b$ |
7 @6 A& N, H; U/ w, |6 e& \- U' Q+ J4 J- ?' c
) u2 n5 q) G- F) z5 `
' g" e5 v& X# M2 u+ W
4 V9 I2 m- o9 n4 U) x3 G(5) SRIO读测试流程。
# N! b2 h+ C! l9 H6 \% f L S
6 |" d* i; r$ d0 c7 G! U1 e$ C* l& k3 f; d
, U1 b: ~2 m) m& G% G1 ^
! H1 j/ S9 ~6 m
​
$ V- C0 i. ^$ b/ [" T​+ D4 H% q5 D2 k0 I! C
​- ] s) ]: o7 P4 Q3 h3 |; Y1 {" [' g
2 i& C! c: u2 Q+ L
1 r( Z6 q( `, }1 N
& _8 x: f8 _1 z0 C& q& h
3 K$ a: g6 J# J
& T8 w1 {7 Y1 h- v* h! E& i F }9 N0 \
1 g+ y3 K( x! Z; i( y1 D7 u; O$ k* ?
2.3.2 ZYNQ工程(1) 端口定义。* T: n) h% S, b( K
9 k, t5 d$ `% a- p3 G' x, [
$ z7 k3 \5 D2 P" O) s# h. x# U i4 w$ X1 h" a* V. D
3 T% E' _: C2 s9 U2 X9 q: @9 [- g- _​4 A7 [) [: a, W9 Y$ I& \
) x. {# S6 b4 c# F3 E! u$ k
$ W% ?9 O& u" z/ A
5 e/ q* z; \/ r' `! G3 X* ^; i! r( ~2 n( B0 p! Z
$ @, K O {( A8 t
( g ]! k$ O' O7 a: S4 |(2) 使用STARTUPE2原语提供的EOS作为系统复位信号,CFGMCLK(65MHz)作为系统时钟。
; `1 j K) ?- m) Z8 V; ]& c7 P, C6 a8 M5 F& e
2 z2 p1 o, y4 D! a- P
3 E. a) b' ]( T2 _) r5 A$ a. e8 p4 M9 v4 E3 P
​- t: n. {& V! Q
$ O! t8 Y4 l3 g0 p$ }5 w
! \! D$ R9 \& R4 f; W5 A: E
4 u7 }& m) v- l5 t! B$ y. s8 D# k& p3 M
! I* d: o- u/ I4 Q8 ]. d8 | u1 l& b
(3) 例化Serial RapidIO Gen2 IP核。
% V+ }4 w+ }$ e* ^/ W7 p, W2 {- `: @* d7 V) n# j; B3 W4 L
; T4 K A" n* K3 d
; H5 E1 l5 P, \/ f9 L; E1 h
' x7 j% o# |7 C. }, c" `3 y​6 X ], R$ P, G6 n: C& R$ ^
9 U: c$ _9 D& _, j
! p! S9 u* W- R2 A7 _+ s5 `' A5 R5 ^; l! @1 K2 C2 G. A9 X: U
9 z; k* t: p" E; v! z
$ O1 S8 M" R; J& ~% K
8 k4 C4 O" v4 i7 g4 ?: t. Y2 {3 d6 R9 t$ v
! m( v) O9 Y6 O+ s
​4 Y! t3 D: `" }3 N: ]8 F/ o! P
/ F% R( R9 J+ B' l. I- _; U$ m; D" f' C0 @
. G" ]4 p1 F2 Y9 ?4 f. z' d$ w+ _* Y
) ~& B u2 H' v4 \6 @6 d5 ?/ _! J4 p# H0 V) i' O3 g$ V
4 o% G! u& W5 C7 L2 a, a
​3 N! `( |1 t2 j9 E
+ b. d4 o# P' [* `- f; S. p; @0 J( [! C, W# G
+ u$ t& k6 M9 O; g5 n2 B
" x( Y- N% Q3 E2 [* B
1 k" Q( \ z, K: F3 \5 A- E; z: a( d% d. Q: M9 k
其中Serial RapidIO Gen2 IP核输出的log_clk为125MHz。
q3 q1 g$ L- z4 A/ b2 [" e5 g; _2 o L, y2 G$ I
; _) a" o8 v2 w
* e! X9 I% i/ n+ u$ I6 H C/ Y0 ]
​' t7 f. X" |4 o: }* s
6 W) T! \' A* d
) s' s% ` i( X/ R7 t4 l% H
( v; _# i& X! t% V
. P. ~6 d. t0 H& w: o/ h2 I
$ p. s. E4 o- q- B' }7 ^, G6 Y1 W+ y+ C3 M; r; G& k2 V' V( ~
(4) 调用srio_response_gen模块,其接口与Serial RapidIO Gen2 IP核连接。. |$ t9 [+ l& w" N2 l
- h$ ?# y9 C& R% u% E- X
! r$ f$ p3 g+ v& ?9 J+ P9 o2 j, E1 h! {
2 X0 W. I" e3 ]​' U1 W1 M; T6 L+ u0 n& F/ _2 @
8 f5 i$ ] H: A7 z
. A( N3 ~& s3 Y0 V& E8 G
7 Z/ L, N( K6 {
! A) F7 W0 [" H2 |* O​- O' z a' a7 U5 @% W9 P* H4 O
​3 y( H3 p/ G8 w$ A+ s$ B% |
3 L2 g! o+ a8 Y" B6 j& v+ Z4 S
' J' Q, g5 }9 d# M- PSRIO详细开发说明请参考产品光盘“6-开发参考资料\TI官方参考文档\”目录下的《Serial Rapid IO (SRIO) User Guide.pdf》文档。5 D, ?% q c* w9 ^- u) N
备注:关于本案例涉及的IP核、模块的配置详细说明,可下载产品资料进行查看。% b; {; I8 m9 s: R; ?) ?
" V7 P/ I# H L1 q: o# w; J
( k, E7 G; e; j7 D [: G8 J* s W# ^0 |
/ E; w& b9 ?( ~% @* H& ]2.2 案例功能评估板DSP端和ZYNQ PL端进行SRIO通信测试,并统计读写速率。评估板DSP端作为Initiator,评估板ZYNQ PL端作为Target。SRIO默认配置为x4模式,每个通道速率5Gbps,并分别使用NWRITE + NREAD和SWRITE + NREAD模式进行测试。ZYNQ PL端使用一个36Kbit的BRAM作为设备存储空间,将DSP端发送的过来数据储存至BRAM。
6 _8 z' Y" a. z0 P2.3 案例测试先加载运行ZYNQ PL端程序,再运行DSP端程序,CCS Console窗口将打印测试结果。8 B; v$ E! v6 q# x" g
NWRITE + NREAD模式:NWRITE= 12.50Gbps NREAD= 7.74Gbps" B, H- b, _9 F5 c
SWRITE + NREAD模式:SWRITE= 12.49Gbps NREAD= 7.74Gbps
( G7 z) ^ a4 X6 P8 z' k. x3 `备注:由于写测试仅统计发送数据至SRIO FIFO的时间,读测试统计发送读请求并等待Target发送数据完成的时间,因此写速率将比读速率高。7 @ S; h7 S1 I5 f
; u& W$ k$ i8 q3 H' W( Z0 S0 K8 _1 p2 `- A
5 m# G V/ C1 }: n" P
& l" X/ j5 C, S0 i o​1 l" `- X4 F9 T( t5 c# v' ~
6 w; c6 d/ c" ?" h" u( p
7 k5 u6 K& U1 \$ }5 u
' h' N5 d8 f1 j$ A" A6 y h7 Y ?4 H/ Y k
: n/ m# V* k4 A8 m4 l
: R2 j- b8 |# D" r! @' w& H K# n# u0 }* }
​# e# J' z) E$ U# o: [! V3 E
​
# G) ?5 Z' L3 c4 ?1 z' V- T7 C( d
; l8 B" `" k6 q, w, P+ |0 S
' Z) A# N6 J3 D! |$ B- ?) N& k/ p+ b( G" j# u
, x3 j9 m* q9 G7 p+ K
|
|