|
上篇推文為大家介紹了創(chuàng)龍科技(Tronlong)最新推出的DSP + ZYNQ評估板TL6678ZH-EVM,由核心板和底板構成,核心板(SOM-TL6678ZH)集成了C6678和Zynq-7045/7100兩款不同架構的處理器。
1 s3 g$ ?: b2 J) |) D" \+ B, A
2 k7 K# e, v+ n. n
$ }- ^$ Z6 T8 y5 a- u r那么這款DSP + ZYNQ核心板,是如何實現(xiàn)核間通訊呢?
# Q. y/ G, |; _2 m u. ]% }1 P8 X1 G
6 t& D0 Y* M* K+ T* ^) s​
; H- L$ o; W' |* Z4 }0 C" C; h( m* |0 d+ O4 \& d
/ x1 |5 [1 B: Q9 F
核心板簡介5 s& i3 p9 j. M9 N. a B
SOM-TL6678ZH是一款基于TIKeyStone架構C6000系列TMS320C6678八核C66x定點/浮點DSP,以及Xilinx Zynq-7000系列XC7Z045/XC7Z100 SoC處理器設計的高端異構多核工業(yè)級核心板。TMS320C6678每核心主頻可高達1.25GHz,XC7Z045/XC7Z100集成PS端雙核ARM Cortex-A9 + PL端Kintex-7架構28nm可編程邏輯資源。核心板內部DSP與ZYNQ通過SRIO通信總線連接,并通過工業(yè)級高速B2B連接器引出千兆網(wǎng)口、PCIe、HyperLink、EMIF16、USB、CAN、UART、GTX等通信接口。
4 J/ R" c8 w, l+ s ?" y​
3 `9 m& H3 s$ N9 M- W) N! F9 R* x$ k​ v7 r" d% t9 C! o; k7 N1 h# F
6 V: Q m$ i8 Z: \) z
8 y( D5 [9 N ^0 c! t, M
; M6 o+ B' r- z# ]# H2 t# d) _0 m1 e& x0 i2 u0 a/ v7 [5 n+ c
本文主要介紹DSP + ZYNQ基于SRIO的通信案例。
% c% }% V7 t4 n! I) |2 T7 K2 p案例源碼、產品資料(用戶手冊、核心板硬件資料、產品規(guī)格書)可點site.tronlong.com/pfdownload。
/ P) t* [( q( B& b$ D: Y9 G" p$ E7 }5 [
# d+ V+ G# Y! V! E: I( O: q% d
9 e* e% U/ A8 ^7 T- H& w8 {0 c K" [5 u W6 P4 E; ]4 x
1 SRIO簡介SRIO(Serial Rapid I/O)是高速串行RapidIO通信接口,常用于DSP與DSP、DSP與FPGA之間的數(shù)據(jù)高速傳輸。SRIO引腳占用數(shù)量少,支持多點傳輸,速率可配置為1.25Gbps、2.5Gbps、3.125Gbps和5Gbps。
( N% y/ y- \ d5 gSRIO包含三層結構協(xié)議,即物理層、傳輸層、邏輯層。
% C" b) I2 x T/ m$ C! u7 U1 w- m(1) 邏輯層:定義包的類型、大小、物理地址、傳輸協(xié)議等必要配置信息。
( P9 r3 o" A( r(2) 傳輸層:定義包交換、路由和尋址規(guī)則,以確保信息在系統(tǒng)內正確傳輸。$ F- n% ~3 o: F5 `* M
(3) 物理層:包含設備級接口信息,如電氣特性、錯誤管理數(shù)據(jù)和基本流量控制數(shù)據(jù)等信息。( `' S' {/ n( S& @
RapidIO體系結構如下:
7 C# v8 G3 {9 b/ b& X. x9 i/ l ]1 M
. T9 G- t/ u6 H) n7 z6 G
+ `/ [4 j* x+ U' G5 C% L( \* o! Z3 k: L( S" n1 W5 N
​
2 ?0 u3 Z# s6 a​( \2 I+ ?7 j/ m; v- V3 d: e
9 t% P) X+ p% b, |3 m* f
8 Z8 Q/ y+ k/ l/ ^
2 SRIO通信案例+ t8 z6 p( h8 I( y# O4 D0 b6 x
8 l) L$ i q8 ?2 l5 L6 E
+ Y" [* w, A9 F8 R8 C6 r$ C
0 v# ^' L' T4 h' B0 k% S
2.1 關鍵代碼2.3.1 DSP工程(1) 程序配置說明。
- p( k* Q a- _/ e% N# B- W' d​
. R6 q0 `9 M6 z; B% a$ M1 E% Z. c
8 I' a$ h* ^, g" C6 m5 d n4 S/ L, D" n% H2 q9 r6 ]' D" [) ]. {3 b
* S! Y4 @/ _8 d X8 g7 a" ]: Z& I1 s$ k
: I3 N, |+ X6 f: u: g" H& J6 ]3 `+ u: S& p3 r* Z7 j
(2) 使能SRIO PSC,初始化SRIO子系統(tǒng),SRIO通信測試。
) y6 k# G9 O0 b, M: o) N( o. G G! A0 M: ~6 ?7 y$ x0 X: Q E
4 f# w& Z/ _. o$ W: b9 d
​
- Q+ R8 w+ P; G; k6 `; L& d' z2 C5 [" w& m8 f9 A; ?0 R, Y
# U2 ~0 t% m# S% g3 P! J2 Z8 p* y D; H- q7 c2 M5 r; j
: ?( {9 n5 c" ]
' b V- w% e% l. r
$ P! E! H5 M. _
​
- g3 d+ g) | _( Y& b! A. A( X' D9 W( Q' L8 r- b
( @7 u, ~& F" D8 k- g3 l) z* f C* L7 v
1 b; n7 |/ _( L) v$ a7 n3 @$ C+ \! ]5 n
​
* J! ^: R# ~6 r# v$ v6 ^6 u4 x7 }* S
* u( ?2 a, d/ G8 ?4 c! F0 w/ o: H! q7 N4 N: I
4 n0 n" c1 i9 ]) ?6 y8 n0 l" F
1 I3 M8 G# I$ o$ C5 L
, h0 Z5 \; U" a" [ C2 [* i. M. w. C) t. P
(3) 以NWRITE + NREAD和SWRITE + NREAD模式進行SRIO通信測試,單次讀寫大小為transfer_size,單位為Byte。w_format_type寫格式類型在main函數(shù)中調用srio_test()傳入。5 b' r/ z. e6 j5 N, g& X7 s
0 X$ g( E7 x4 u
: {/ j: g, l4 X6 Z3 g e) d8 r, k- P5 _
* L1 U) d( O; [' `( w# [+ V- H3 ^
​
7 g9 l; L& F# e1 [, L, c3 K
' n$ D; a" S- w" p" G, Z
) Z$ R2 N$ Q% i2 q$ R+ H- B
. K' E" ~# m) g v, }6 _
7 w8 V3 X/ a+ h) s% F
' p e2 S8 e3 S8 J5 N9 m* M* z6 _4 u3 R! S Q' _0 A% L
(4) SRIO寫測試流程。
4 q% D3 J3 |" d( l0 g) `2 g: z/ |' Y
7 x+ @. \# ~& g' X. z- _; a+ G) f" j0 w; q$ {
3 j) M4 ?* N8 i3 a2 d& h
% d8 u% B+ g$ h! Y​
, t7 j6 I/ C1 a+ f q​
. u7 H: X3 K$ n ^​6 H1 }, r8 a( T" q9 T- ?( m
6 a1 ]3 w6 t" y$ ~5 b
G8 @+ o+ H, N- J$ \4 Q9 s6 T2 a% u! X5 M( G# ^) r; l0 J' U: m* Y
! R" W+ V# a) s2 {: c! M5 Y8 E
r6 J) O! S: w; H& ]5 y
/ {) Z O+ t. W5 s(5) SRIO讀測試流程。, b8 S- j& B# f! a+ t: l7 d" I
' G* x! j# C( k( L0 O5 K
3 A( {. ]' S! R, [) T0 d5 v" z
9 S( O& D# O$ M' J' ?, z& A. W( Y( A _' f% N4 k2 s6 B
​6 E/ V5 [+ N' [4 ~3 Y) X4 u: y
​
* K s _! L% l( {/ f# G% ?/ z​
0 o0 e0 X) T0 g: N3 g1 w- W9 m' L
/ y7 K; b& e! q- Z) {8 C! y) ]" S
6 q) ^' `* C: x8 R
n9 L% W, b$ e1 C( B' G! K
- ~2 `0 e: J+ _8 c: F- `" L
( V# J3 P1 S3 }8 y& R/ X
' [9 E' F8 V# ~
- j: ]8 V6 g9 C7 K7 L# Q, f2.3.2 ZYNQ工程(1) 端口定義。
4 }. p( s2 U$ U# w4 \" }. A% E, e" U, h
7 w4 B2 j6 a$ c7 @
) o7 h, ?( ^" j% a8 B4 ]
( }+ u, U2 O+ {, X# n​! t( S* n0 u5 F
2 V9 m4 d& X* d! [5 y4 @/ N5 T! ]' u) `
6 ^5 g# O" G) @2 }; |; P
- M- \: t. h0 ]1 L% s/ T; R# x- `' P8 i, E7 i
4 J4 R0 m2 v: [. K8 K(2) 使用STARTUPE2原語提供的EOS作為系統(tǒng)復位信號,CFGMCLK(65MHz)作為系統(tǒng)時鐘。$ M3 P& F0 E2 A, u0 \* X
, Q# q$ p, I' k+ O* S. Y
+ z7 D7 E9 _$ _0 S" @9 U" _ `- i" h/ y1 J4 j4 ~
4 }7 {9 k8 o+ q# z. ?
​
S* w9 n% z- E ~) u" R# d. m( o) b
i( E8 V0 x, D( ]5 \
0 e* H- E& } L$ p
8 H% ~; d$ {4 v- B; O; z% E. o8 s
! y# L: {& {7 A+ t* Q6 |/ N) h& Y; N- r! g, z0 ?6 W
(3) 例化Serial RapidIO Gen2 IP核。
% C) w( A3 J% L* d/ i. O/ F9 b! C7 C& \
3 j" {( e$ i) G9 F" Z9 C; S' s T, U0 c/ n
2 F2 L1 L7 ^# ^( U, Z
​# w! P% q6 U, l: T1 `# \- e
# ?! Z6 S! X$ o% w) H* ^8 l- f
% w, N! N ~% ]6 w% P
4 o7 ?6 v5 Y: {3 W
2 I" Y/ g G/ _1 \$ E6 T6 J+ Q6 [& {' N, B% x# w
9 V& t2 W' Y9 I+ C2 `0 x$ L5 k# I4 K2 }0 O
: O; D: g" V, P7 w& F8 Y1 O
​' z* {- L, M& F4 ]. h
& N: T4 }& c$ W& a7 d
$ a$ N& U* [. h! E0 a
* @$ h1 C% H/ R$ C7 ? I4 h' S
. Z) `! j+ M9 B6 g1 c7 }
0 B8 J" `3 C1 v" O
" t9 e( G2 N d! f% R
​
6 R7 x( E% t; _4 r7 j
# z3 U; p; J" k ?! t
# S5 W! c0 v/ I6 W8 L# k5 z* `1 v3 p$ }' }2 {
, L0 O2 n5 T" s
: ^" c: q) [5 @. d: L+ f/ B3 s e, n" m9 b+ q% k
其中Serial RapidIO Gen2 IP核輸出的log_clk為125MHz。 ^( \7 D; s% e
+ e o7 _& X( i) E' p8 b2 C6 g( l( X: o' p
/ d4 Q2 [3 m2 ~; t# L7 j/ s1 \. ~+ f
' D* E! M# z: {; Q​( X9 h8 v9 H& U% q/ I5 I
: _$ r& o& t6 J3 s" | ~1 @2 F
1 b% F" a, Y4 \; U- J1 b, [4 O7 z4 m" s8 }- y8 c5 T2 {$ c
" \0 K1 ?+ { A1 X) L
- B o1 r2 e# |
% V/ C, |) T0 q5 O(4) 調用srio_response_gen模塊,其接口與Serial RapidIO Gen2 IP核連接。( ]" f, G! y) L, c
* t5 s: P4 Z2 [8 Q
6 X6 z, s( D; K3 o( N
( n1 _5 h8 G5 e
% [' F* S' n1 c; E5 u​. i/ v3 e# i5 r0 C$ P: D
* S) N: J4 l( s
( I8 j; v, S1 U' M8 I+ N& |
; B1 q* X2 r% q, z
$ @9 s( O. n2 L C
​
3 o, L0 @0 k$ `, [​0 R$ d: t4 Z& O" x6 Q9 G
4 E2 G' i5 [' l2 e5 _
' {$ G5 E' g) v( \$ S: J4 s
SRIO詳細開發(fā)說明請參考產品光盤“6-開發(fā)參考資料\TI官方參考文檔\”目錄下的《Serial Rapid IO (SRIO) User Guide.pdf》文檔。
# g5 f1 R. S7 o% _5 t) u" e備注:關于本案例涉及的IP核、模塊的配置詳細說明,可下載產品資料進行查看。
) _. K8 s5 y& e7 V
! P8 S; k4 B, p- X# u3 R/ I( ]
/ Z4 l5 n% {! P" t# P. R' \7 E# {' u, Q, h P8 N8 Z
2.2 案例功能評估板DSP端和ZYNQ PL端進行SRIO通信測試,并統(tǒng)計讀寫速率。評估板DSP端作為Initiator,評估板ZYNQ PL端作為Target。SRIO默認配置為x4模式,每個通道速率5Gbps,并分別使用NWRITE + NREAD和SWRITE + NREAD模式進行測試。ZYNQ PL端使用一個36Kbit的BRAM作為設備存儲空間,將DSP端發(fā)送的過來數(shù)據(jù)儲存至BRAM。! A9 k s% _0 C8 P! z' G
2.3 案例測試先加載運行ZYNQ PL端程序,再運行DSP端程序,CCS Console窗口將打印測試結果。" v ]# r, u: r- R& L8 A
NWRITE + NREAD模式:NWRITE= 12.50Gbps NREAD= 7.74Gbps
! j4 c9 d3 r/ L3 b8 W7 ?SWRITE + NREAD模式:SWRITE= 12.49Gbps NREAD= 7.74Gbps; }6 l; s$ x! K% @* N% c i9 a6 p, n
備注:由于寫測試僅統(tǒng)計發(fā)送數(shù)據(jù)至SRIO FIFO的時間,讀測試統(tǒng)計發(fā)送讀請求并等待Target發(fā)送數(shù)據(jù)完成的時間,因此寫速率將比讀速率高。1 ^7 x/ ]9 }( J6 r3 [# T* A, _
. [' P4 t( V3 j
7 n9 }" O, N2 [" Q* C/ x0 ~: y7 J# Z
* m& h. o+ j* d% q# p9 `
​
8 U2 p9 b K) R$ n0 J6 P* a) v' U* L4 S8 q% O7 o5 O+ x: z3 R$ V
; A6 K$ j4 g7 j3 d) g$ W+ u4 f$ H3 ]) `$ o
O. E& y0 S- C+ r9 R) z$ g( a3 b! v* ~$ Y$ s+ a' l
7 b4 ~+ x$ f: B# r, ]
2 W" S# ]% u2 J: D- L( i​* k0 T( `* w7 i' u
​# f9 U0 B- R# x9 B$ Q1 q# L0 h/ a
" c- z6 G* O/ Z n2 R: G
- u5 {6 ~4 C$ a% z0 x, J; F; V u( H J& H! ?3 s4 \) V$ O2 w7 |# B
6 L4 h& r n; ~* h; X$ h
|
|