找回密码
 注册
关于网站域名变更的通知
查看: 271|回复: 1
打印 上一主题 下一主题

FPGA实践(八)PS与PL共享DDR(上)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-22 11:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本篇只有目录的第一部分,其余部分请查看(中)、(下)篇
* r. k# H; J3 B

5 a+ q& d# |8 ~/ z
$ D5 y3 d; [1 S0 U* |
FPGA实践(八)PS与PL共享DDR(上)

8 I9 G( p+ o+ J1 X
3 `, Z. y' R' T, ^. q7 b; W7 t1 }0 t: ?6 a: @( G) z% [
背景:很多时候需要PS与PL共享DDR作为global memory,例如卷积之中,PS将weight in与feature写入DDR,然后PL调用DDR进行运算,再将结果写入DDR进行下一次迭代。
8 }1 f8 @! C* q$ V# _1 J/ a; B4 p
+ v6 f1 D, K: y. ]5 }目的:1.  PS与PL共享DDR,读和写。并且像卷积一样需要三个指针。2.  IPcore设置变量,能通过PS能查看到IPcore运行位置。3. 运用BRAM实现一定的数据搬运。: Y8 X. B0 ^. ^6 d
( I$ a/ k0 d5 h: @, g( v0 }+ Z# a
目录
& |3 k( V$ Y" t7 _# B; p( ^# e
! [  a# U  }; `$ O1 g: d$ M+ i
+ J7 j1 E' }2 N% b0 K0 w4 C4 [
一、IPcore编写; J8 W8 V3 V7 z( k4 ]" X$ ]3 w

" O3 z( S1 m" {0 H! K( z! h" o

# E7 t- e/ k" H. J, a% y! w  \       1.1 一种错误的接口
8 a, m- p. [2 \
, Y" y8 G# R2 t' T+ v5 X2 ]5 B
4 F- I/ M1 A& M# e# R
       1.2 IPcore代码
) V1 X# W% e1 u( Y/ J; s; g/ U) N2 _' P
+ c0 K5 f) z: u- z9 C
       1.3 位置信息% _+ t5 s. F' d* x% H1 Z0 q! u6 K
$ ^7 Z0 [" B  p' V* M0 e" s1 e
, K6 F5 Q5 V; J5 q- @% i; ]
       1.4 接口1 g) I2 s6 }8 q, c: y8 l
9 R1 r! v! M1 W! d; q& [* S, D
. F5 j7 F" w6 R
s_axilite
  l% c1 A0 B; i: m1 ~
1 L: m/ ~# T8 ]  a6 C4 P, a
, f1 J5 Z  p% [" D9 R
m_axi) h; e: M' x6 d

$ @! g, N6 W: Z' [

& {) J/ J' v" I/ h% _, G! t二、testBench
5 L5 S7 [* T# W4 r2 ~8 n' r5 W: m  C  u0 N! a. V4 [0 A% P3 r/ Q

# j0 p2 g- D# {) u5 E       2.1 程序编写) h3 s' w- D0 O) K

; u6 t' V7 U" r1 c5 v
' E8 h2 x6 F4 m+ T7 a  e4 Y
       2.2 PS与PL的交互: x7 i# Y3 w/ m7 E  P
' h" ?1 t: h9 \+ r

' E& m6 H9 w; J: v$ L, x三、系统搭建与hdf生成% F* [, [  j3 O- b7 f+ N  `
5 q0 l' ^/ ]; b
% N, m. o0 S) {$ h4 z5 D, l% i. t
四、SDK1 H% Y3 F9 g1 N' n
( b" s2 g( z& {
6 R% ]: f$ ^% |
       4.1 用malloc的方式开辟内存% F* G8 c9 A8 \7 N- ~, D+ q
% ^' m3 ?  s" Z9 E; V+ i, A' N

! k$ ~* B% p6 k  [0 q       4.2 指定指针位置
: ]: k1 K: g& l9 Q9 g1 T/ e9 i
* o, c( w3 x2 u% E% G% ?
/ V/ g- @2 |" ~, M
五、SoC
4 e6 p* s3 V( A1 ^, [$ c6 @, z6 |. f  ]  W" g  w0 m
3 g# V6 N8 C& b4 e
       5.1 交叉编译) ~7 g' m  \7 i; s9 V5 j- x+ X

3 n# c( z3 F/ R% {* F

7 h' F5 u: p9 b9 j, h- g! Q       5.2 驱动
" L7 ~9 q3 _* U6 m. {9 b
$ c& Z9 a+ J0 R& i7 Q1 R. u

$ ~$ X& P& P& Q       5.3 运行
. l8 q0 z! ?: ^$ z
9 W' D7 s/ ~7 p! b
7 |& @  L+ v6 ~# C9 x) W) j: J
7 r2 K: w0 u" S. Z" b3 M, u" f* d, g( d6 k. e' c
& ~! L2 {& S$ f- X
一、IPcore编写  [* K1 R' Q" l' n
! Y7 A( U# ^' R; b' @
1.1 一种错误的接口* j& y; `0 R' H* b) q6 W

" c3 K5 J, S' I) ^8 X------------------------------------------
, H" ^; J" [% W# n$ Z. f: N& U2 y& K) z" r* R5 ~/ p. k3 V
int share_dram_core(int write_nums,int read_nums,
6 }% P/ C6 M, _6 @% [# D; d/ a. ]; K6 N9 b% e8 o; l1 G4 u
                                        volatile float * write_ptr,volatile float *read_ptr,
* G6 w; k! _3 }4 d) U2 O
5 M. d+ H3 K  ~, B0 }0 N( i                                        int location_idx,int write_loop_idx,int read_loop_idx,
% B2 U; C$ ]0 K; T) B1 C9 W7 h& w* l2 N7 H- \( _0 }
                                        int read_sum){
& Z* Z+ ]: x7 k5 [6 }: M
' }7 K- K' i+ Y4 R( R
游客,如果您要查看本帖隐藏内容请回复
) h9 f1 k" m3 _' z7 z, Z6 }4 u) d
) H0 X2 }' J- t. D9 b

# v+ s/ _0 r+ w7 w# u5 q  _( r# M7 l8 T

该用户从未签到

2#
发表于 2019-5-22 17:41 | 只看该作者
回复看看隐藏内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-3 12:13 , Processed in 0.125000 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表