|
上篇推文为大家介绍了创龙科技(Tronlong)最新推出的DSP + ZYNQ评估板TL6678ZH-EVM,由核心板和底板构成,核心板(SOM-TL6678ZH)集成了C6678和Zynq-7045/7100两款不同架构的处理器。, n% T# q6 H+ E- ^- _# @/ m; s/ S# N
0 Q9 g# d- K4 D1 U, Z
$ U+ U D* { J! @那么这款DSP + ZYNQ核心板,是如何实现核间通讯呢?
# N. ~7 | m& R9 b2 O
& k8 u: {' n" T' q+ o; t# R H8 H/ z+ b: U% C3 Y
​
+ j. X3 b# Q# ]6 n- O' C" X5 N! h6 S
' c/ V6 U4 q0 V) p- Y; i- p核心板简介
7 U6 j& w8 @0 h3 R& rSOM-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等通信接口。4 b! Z6 r8 C* R1 k m0 i7 R
​: q# X* e1 J! i, K3 Y
​
; z3 ]; P) W7 Q8 U& _3 m3 M" o) Z8 \2 t/ i
* P, h3 i: E8 F$ u
6 r9 X7 v9 { N1 Y v8 x1 L; y i
本文主要介绍DSP + ZYNQ基于SRIO的通信案例。
* L9 u, i+ x8 Z3 h* K5 i4 L+ q e案例源码、产品资料(用户手册、核心板硬件资料、产品规格书)可点site.tronlong.com/pfdownload。, ^! C t9 d2 ]$ a l9 P: }: z5 g
6 p: g+ Z- r J5 A ^
2 d' J, C, F, h5 M: I$ h- m9 O9 K
F: _ i$ \, m; a0 B2 p( k: d
5 n& a3 w5 c) ]4 H; {1 SRIO简介SRIO(Serial Rapid I/O)是高速串行RapidIO通信接口,常用于DSP与DSP、DSP与FPGA之间的数据高速传输。SRIO引脚占用数量少,支持多点传输,速率可配置为1.25Gbps、2.5Gbps、3.125Gbps和5Gbps。
1 Q3 j0 U% b3 [- S, ESRIO包含三层结构协议,即物理层、传输层、逻辑层。
" i! S5 n: a1 M+ ^1 w: y+ p(1) 逻辑层:定义包的类型、大小、物理地址、传输协议等必要配置信息。
+ b0 y) y0 a: c* ]9 U! S$ ?) i' V(2) 传输层:定义包交换、路由和寻址规则,以确保信息在系统内正确传输。
3 s8 o$ U# V R' e& q3 n' Q4 Q(3) 物理层:包含设备级接口信息,如电气特性、错误管理数据和基本流量控制数据等信息。
' x2 e+ d" B4 b' d- C, g- uRapidIO体系结构如下:
3 d0 n0 ~/ v, e' [/ h0 c5 y8 L: z3 w) g" x* `
0 m3 ]8 ], p% g4 O$ ^# }
+ [( _. A1 ?3 n) k( K8 h. n( o/ y) J: b( a' U3 t
​
l0 y# b/ g" r8 Q3 [5 @; I k​" v9 R/ i6 l+ N- x% _
5 e6 }' I9 v# Z) P# ^' h* S0 f2 J3 ~& d) t @7 E8 s4 I
2 SRIO通信案例
# x7 o5 u1 g- V8 d% j
6 E9 v. u4 @: [* U& d1 u0 s7 \
0 Z; _6 m) G$ T: O3 ~
* g& f6 k" h: L& a2.1 关键代码2.3.1 DSP工程(1) 程序配置说明。1 [8 f% w+ p$ C; H, Q
​4 e2 i) |- G# X/ u: ~ Z) m
: G" @9 @0 l1 O% v1 j
" \4 B" a/ l" @, P9 }
& ]2 X: E: c4 D! Z, r! ~$ b
9 x% N: P; c. G4 s9 y/ D2 ?7 c. j9 R, X3 j( s* q/ V. i$ @
# @6 c3 d2 s& Y5 \: i/ x2 [
(2) 使能SRIO PSC,初始化SRIO子系统,SRIO通信测试。 C9 r" }8 X7 w4 ]; @3 f8 S/ d% I
' F6 r/ f8 H9 ?
- l! J+ k0 O: i5 r9 }% g4 f6 h​1 c4 t- {% p& ?1 m/ k+ V2 D1 p
|. d2 o; P4 v0 _% j% d- F8 |& @
. x- y) B0 d# ~, V4 q" M9 I* u( O3 {3 v0 k2 B; O, ?0 p& |
+ Z3 f& O( {% Q; W6 F
( b/ v7 Y' ]! ?( v
1 d1 C8 t( L) @! f* w" O( _7 ]​* N2 A1 I( p4 S
# F1 q4 W+ r" Y9 v( v) R9 D
- w) U; U9 P. y' {! z
+ g& l% V( e6 s* t' b' o7 i: \( C1 m: E3 v. H9 ^# o" R
​
Z; y) r, S* M" R' d! S/ \) n' I1 G$ v0 c
: Y% O( ~! f! F. A7 z
1 s) R8 u7 o" I7 N" H% w) R6 b
3 X$ f$ v' V4 Z( W d- V# P2 A, ?! Q
$ u% r9 U2 Z# z7 C3 e6 w% V& `/ f+ K7 V# d' M
(3) 以NWRITE + NREAD和SWRITE + NREAD模式进行SRIO通信测试,单次读写大小为transfer_size,单位为Byte。w_format_type写格式类型在main函数中调用srio_test()传入。
: Z( Z$ F2 v0 Y3 g3 Z& g+ X* U- |9 x1 [. m5 W X" d/ L. @
( g. N' d* q3 O" i
) s: v* k, ]3 n/ V, U3 b
! p8 P1 _( s, C+ o​2 _4 `: n9 t7 V3 p
' V9 J5 R. X4 @- B2 u
1 X3 G W! r' }- `4 Y; C( u* ^# e) `/ g# [8 U2 I+ F" ?" g
/ ^" z* W7 r6 y# Q5 t z% b
) C) n7 {2 u6 V; x! I7 |- v7 I
4 Y& o7 t+ ~: `7 e+ }0 |+ W(4) SRIO写测试流程。! p4 e7 c% O, y4 E+ R( A
3 C0 F$ j; e- C
0 i. [5 l: W4 Q1 I& v' H* n
3 q2 \: u) S' k5 Z' T2 [+ {) o4 T6 Z- b0 [. N' Z! s, }5 e% N
​
" I | Z. P! ?& y# S​% a' U6 x: K0 r4 [
​+ y! ]+ U' v/ m' k; n: C
" }* S/ D' X+ F9 ^# U, H
* J5 u/ M7 k: I" v( S
% u/ P8 d U0 q9 F+ x" x" _6 d3 m9 {6 F8 N8 i# n" s4 [
; H- c4 x, y6 s+ n ~! p) Q h5 j, d; K5 |
(5) SRIO读测试流程。
% s# v1 t& b1 ]; @
: X0 r a) e9 @) F% [# _) p( W/ i. n
) b7 N7 s% R5 K7 v" {2 ?* W
% x% n' o2 L. W1 `2 ?* \$ ]% ~
, W8 e& } `# f( K, O1 Y​1 O- D, N7 w& e' C9 Y5 |) y' y
​
& y' a/ m ^1 W. |2 {4 ?/ Y​
/ s% w1 }# ?, o: b6 B4 D% k1 v4 @/ U8 Q9 F ]9 V* N% C/ N8 y
0 @1 i& d6 H4 z. \" c! y
4 r$ u3 R0 j( E- P4 f7 p/ p
) k# c6 h0 D! ?* y
& ]+ _- E0 U- N, T5 v0 w- \
9 ?& U7 E5 @. b1 ^
% e' Y- t3 {* T. l* S! w0 v% |2 l E' b; w6 z3 E5 j# m
2.3.2 ZYNQ工程(1) 端口定义。 x0 R, U, b/ U* I% N9 x: V) q( F
% c: i$ s3 \% L* d# [: f3 b' ?
2 t4 g: F' z# q. ~/ N# L% a a% C' P- l* I
: z3 L$ E0 d) w" F" k" d8 M
​
7 Y2 a7 J# @) I* ?# u. m9 x" ?# A
8 r( y g) g4 ?1 z
- ~! b7 f" ]+ m* R- p+ c
' \2 N) h! q/ s! z0 N9 ^+ E. O' g' A5 ]% w
! z6 ?' b. a/ z! B1 [
: F6 t; [1 J) g& K+ w. v) D1 a(2) 使用STARTUPE2原语提供的EOS作为系统复位信号,CFGMCLK(65MHz)作为系统时钟。
! O* S4 y9 j% j" l) d) ~
( O& f6 U$ W/ W# H0 g# A; G( l. l
1 i1 [, _# g3 I: @0 V/ e
5 @; c# F3 ]) T) }​( H R8 S7 A8 {8 F* A5 l
7 z) W# @& w5 f) s& b z* j. V) ~9 N' R* `$ N+ u/ U0 r: E$ s
4 k) ?1 f X G( F+ M
' x% @0 c1 y, Q6 |
' c6 b$ `: i+ x7 b" Z5 b1 G
% D5 B3 ?9 h5 k+ T" S/ B! X(3) 例化Serial RapidIO Gen2 IP核。
& i! `* I+ @1 |, c' ~' y, H6 A# G7 I9 G5 ^4 T/ x! O
0 e) E# O$ ^; ~) \9 u# H
. F8 j% Y: g% ~$ `* z6 U. ^0 { g9 r* x6 _" h- I' X- O
​
9 L7 P& N3 k% T; c t- w) X% h1 l7 O6 I' h& H; O
, s# h& h) f( p# b5 r
) e2 ]1 o( u7 Z( n, _. Q* t' L# o. C4 L# e1 }. R v
2 l# B6 P4 k( c5 c* _ Z) a
, `6 T* I* O4 \2 L' G0 S
' p6 U" i, N0 V! V6 {' t" l1 o! w) G/ g+ c
​
. u" [) O2 h& @( w* h+ m/ m" |% b* U/ ?8 v9 P
/ S7 b+ \" ~; K" C1 N
8 U8 l- x4 K6 R, m
( R- |, X9 D _# j @9 m* e G! z% p/ L6 i0 l% c- v
/ i# ^4 U- Q; N6 s- g5 d- g; W) d) P1 |
​
; ~( u8 S0 f3 K8 c
" M* E7 r/ a- l! e( P
& V& ^% {# I! d U7 l0 Q) ~* T$ e# C! s- Q& r
1 \/ P+ H: f# L7 U% V. F: R
. e* t+ S( a$ k: E: \8 E& W7 N* G" z$ C8 D j
其中Serial RapidIO Gen2 IP核输出的log_clk为125MHz。, c* n k4 F) _
& e( `' [/ X& A
5 M, X1 I9 I( l/ y5 i# Z
* F! U& Q' j( s" p! |
P K" @! u8 p6 k+ n​
2 ^! n S T! j- ]! a. ^/ B1 b( D; Y+ m8 P
( u d4 ?8 P1 |9 D1 g: n$ c
& ?3 V3 v1 s D! `4 j8 ]/ P9 `% ?/ t3 i5 d& m# n4 x' ^
# v c6 b! H8 `$ K+ f0 ]/ u- w& E- K- l
(4) 调用srio_response_gen模块,其接口与Serial RapidIO Gen2 IP核连接。
S) j4 q# J0 }! O' {9 @" h( P E0 b ~+ d2 I% b
6 I+ e6 [1 P6 v4 ]
6 ^; P. F1 y1 C( E: @
) g" p$ H2 x" V" ]: d( q* Z/ s​
$ U Z* y o$ Z5 y
+ j" Z9 r3 x( e* W$ x- Y6 K. h
4 p* t8 M/ ]( a5 [& r" ~6 j" x) f4 C/ O8 S# I8 m
- t3 c9 b! O/ I) z2 z
​
7 B- `5 q: `) x/ g4 f% @- r, @​
1 Q, [4 Q3 H2 U9 j1 v7 a4 P! m& \2 \ ^
+ u( E# x- ]6 m. F7 J, r1 ]* `SRIO详细开发说明请参考产品光盘“6-开发参考资料\TI官方参考文档\”目录下的《Serial Rapid IO (SRIO) User Guide.pdf》文档。
' Y7 N/ B/ W# H; m, w, R7 f: i$ R备注:关于本案例涉及的IP核、模块的配置详细说明,可下载产品资料进行查看。" @4 p$ b( \, b5 D$ X- L) ]
! u& N! ?" z# w
/ {+ W0 O" b$ ?1 y8 L% _
) k: k4 A' o' a; ^. m2.2 案例功能评估板DSP端和ZYNQ PL端进行SRIO通信测试,并统计读写速率。评估板DSP端作为Initiator,评估板ZYNQ PL端作为Target。SRIO默认配置为x4模式,每个通道速率5Gbps,并分别使用NWRITE + NREAD和SWRITE + NREAD模式进行测试。ZYNQ PL端使用一个36Kbit的BRAM作为设备存储空间,将DSP端发送的过来数据储存至BRAM。
7 U9 {- M2 _# }/ l! r9 w3 o% C2.3 案例测试先加载运行ZYNQ PL端程序,再运行DSP端程序,CCS Console窗口将打印测试结果。/ T4 w# j0 v5 |6 j
NWRITE + NREAD模式:NWRITE= 12.50Gbps NREAD= 7.74Gbps
% m" M+ C7 s$ Q/ ^SWRITE + NREAD模式:SWRITE= 12.49Gbps NREAD= 7.74Gbps3 Q' y g- W0 ?# z, G# `
备注:由于写测试仅统计发送数据至SRIO FIFO的时间,读测试统计发送读请求并等待Target发送数据完成的时间,因此写速率将比读速率高。. d* h7 R/ @' R8 H! N( M; H; z
$ _$ A8 d2 q1 T' f6 H" S; D
G0 I3 i% Q, b" L2 B- Q$ J+ U" a2 f) I
; x" l/ z( G0 }0 z S1 E/ `
​- X+ L( [% V: k
, M% L7 S- d' `( \6 p3 }5 Y
" K4 W6 |' S* r3 }1 D' B
8 y# N% R& o" D) l3 c: r% ^' `4 m9 b; v4 y
1 x0 H6 M7 `) [$ p
9 C; ^! n$ f% @! N& E
: J& K; g; n0 v) W) ~0 f​
. Y% G! M1 x0 L. B6 H0 y& ^​
- z( L( o( | n; N9 N) N# l+ k5 ]$ P- y. b+ ?2 `! L- B
" ]( e. e! {# o
) T* I) @8 g* O3 u4 Y
4 }5 y9 o+ ~6 X1 L* k3 S |
|