|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本篇只有目录的第四、五部分,其余部分请查看(上)、(中)篇
8 Y0 e: T& ^+ `
5 H% X$ \1 ]3 Y1 x6 @; o4 o6 D背景:很多时候需要PS与PL共享DDR作为global memory,例如卷积之中,PS将weight in与feature写入DDR,然后PL调用DDR进行运算,再将结果写入DDR进行下一次迭代。$ k5 T' ^$ O, E0 p4 k, \' u3 Q
; Y: s9 @/ n1 K1 f2 H, X
目的:1. PS与PL共享DDR,读和写。并且像卷积一样需要三个指针。2. IPcore设置变量,能通过PS能查看到IPcore运行位置。3. 运用BRAM实现一定的数据搬运。
6 Q: x# r, Y' t6 n' t: z. ]; y6 k0 K8 E5 F6 X/ x$ ]6 n" l
目录
% _' x/ {# s2 _% b' O, Q# X# a) z/ j+ j7 u5 g) E2 e( o/ U6 c: [/ b
一、IPcore编写 U! I6 Y0 G9 s# _
: W7 p4 X# P# ~. }
1.1 一种错误的接口
' R+ E* S' Z7 U$ @4 L6 O+ T9 m3 n) Z- P5 q3 e- y0 v
1.2 IPcore代码8 K7 ~0 k$ x: H
+ t1 N2 J% X0 N7 b0 h7 ?0 y 1.3 位置信息3 l& m, n, s! N: S9 K
: ?3 N; l' c% |8 a( U1 I 1.4 接口
0 y' F' k1 R7 `$ g2 F. R" g" d; }% f2 Q7 G* P
s_axilite5 e0 a# j* K. S; ~, v4 ~) s% Q" q
8 @+ h/ t7 q6 ` m_axi
$ I) C, K' `' I- v5 {: P: [1 j6 ?% _" h
二、testBench3 f; n; y9 w+ C9 O. a# I" w* |4 \) z
( }) J( j& w. }# e
2.1 程序编写
+ b' o1 }. I, U7 T: A) [
1 O$ ^& {; p) D2 P9 B$ \ 2.2 PS与PL的交互( B2 U+ o* o; @: S( c* {/ N" w
. K8 K! @6 [( O9 |1 `' R% \ G% n
三、系统搭建与hdf生成
1 N( a# z( t6 \, e7 u
6 ?8 _2 i P6 s1 k+ ?8 l9 P" G四、SDK
M7 V- w( B! l1 w% J$ A' ?, J
6 Z, U9 R# X% u- K 4.1 用malloc的方式开辟内存
0 T0 m+ G: s8 h
. L" N7 D7 p9 x' _: |; u( k. \ 4.2 指定指针位置3 U( e! L0 i0 v" s
O4 o+ L3 k) a6 x. I7 A; z, |) C" R五、SoC5 K( M" R& t2 P8 |5 r
5 m u2 b/ c4 h& P# m- |/ f 5.1 交叉编译
! ~2 _2 W& t0 T( C
" V; Q. I& u, |) v: p! ] 5.2 驱动
% ~: u; P* _- @1 N5 X( j N0 s
7 o3 c6 k3 f( `7 S7 F 5.3 运行
4 b4 d3 l3 V6 H/ ~1 r- j! M7 D: U |
7 v; \; K0 |: ^$ S4 H8 b% q) U0 @" L) _: R, a8 `9 r! w }& r
) L1 A4 z; _* P' }( z& T4 N. G% N2 I7 q y h' ?
3 V2 `, I4 l$ H
# ~- Q. B8 Z }% {+ c# _! b0 K, F" w6 I4 B& \7 H0 x
, q% i0 J: n9 y. o* z3 j
! ~6 A% e' k- K) J9 F7 F6 l P: s9 @- Q/ W
! ?6 a* E2 a4 O9 K+ u! ^四、SDK! o7 S! A- b0 A# _) [
0 U) D5 g# B& _8 R t u1 b----------------------------------------------
7 r0 |# L5 l& M- {6 p! S% ]* D ^0 f! D1 \' _
//created by Xing Xiangrui on 2018.12.25! Z, \ l5 ]! h9 a& {
: j; w5 b6 A6 }2 T, Y//This is the SDK code to test share DRAM
+ K/ A. z6 m6 s' b1 z. T: v B. V+ z( f
//Write through PS to DDR3 z8 y2 I6 |5 A/ V. f5 [ W5 r7 F! Y
& y8 E1 ^% C4 _9 q. c; Q5 f
//Run PL : read from DDR to PL and write from PL to DDR; G! }3 r3 U9 s, Q* g* M
, \; F4 U N; ]
//Then read from DDR to PS, M# K! Q+ S0 s& h, d% A
, J: F. U" v) \* t7 u* o( _
, K( V/ d$ G5 S A8 L& g9 C; J
2 `% r7 q: j( g. @' \- X0 q5 r3 L! ?# i. [. @9 {* _% O X* u
! G) Z4 d4 B3 t+ I1 z
|
|