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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本篇只有目录的第一部分,其余部分请查看(中)、(下)篇

/ H5 N( q+ C2 D3 Z$ J" A/ X

4 B& m; H* V) |' e& \# J

. n' g, @3 Q$ Z/ }1 T
FPGA实践(八)PS与PL共享DDR(上)

* G  L) e' E, V4 v! b
( @' E7 \. \8 F7 @9 j
/ {& N5 ]6 P% R9 R1 X% `背景:很多时候需要PS与PL共享DDR作为global memory,例如卷积之中,PS将weight in与feature写入DDR,然后PL调用DDR进行运算,再将结果写入DDR进行下一次迭代。/ Z7 D8 ]1 E' p" t2 z3 f
5 s& [1 q4 {+ O& L. Z
目的:1.  PS与PL共享DDR,读和写。并且像卷积一样需要三个指针。2.  IPcore设置变量,能通过PS能查看到IPcore运行位置。3. 运用BRAM实现一定的数据搬运。
3 H! O, u# s0 n& K& [8 }
+ d% H7 P. I6 K3 H3 \目录7 {9 `7 t. p2 {7 {- h% \1 J
0 Q4 P7 \0 @$ t! r' u2 _) c/ R
" G8 E  z* h2 I
一、IPcore编写) M( z8 D4 L% b3 U% p- A0 A( a( n

' C) t, r# V# C: a. w$ B
6 R7 C6 S) M8 M8 H% C3 O& |& w
       1.1 一种错误的接口# a- T2 N$ Z! c' @: O! `

! c% [' Y7 }3 V3 ?2 o2 y
& S1 I* [% K; ]+ E6 d" V2 [) u
       1.2 IPcore代码
7 ^/ e7 b& Z, u. ?7 @3 ?/ _9 J8 e' |/ y/ D6 t, C

8 g0 y* x4 M) p  S5 ?9 i       1.3 位置信息; P4 Z( n8 q4 n; X* D2 P6 ?
4 `0 [% X3 a( U% \) y1 T

; L5 e4 H, Z. z) r! P( ~% k1 G* w       1.4 接口0 k- m# w- S# x- G" f! f" X+ p& u, `
, l0 |4 [$ H! q) {
' v2 j7 T: d: x7 [7 k; V4 p  _) A
s_axilite0 q: W: D! ]9 J5 h% w8 h
4 E, t, j  X2 N' D) Q
: h5 F3 Z0 I* H- V$ N& S" y
m_axi
; Y8 W3 @3 P7 s4 y8 C, R2 d8 E2 k, `) X( J  v% O
  J6 N5 K0 \( g, R' F/ G  \
二、testBench/ G0 e& \0 B+ F4 Q! I, d
: l1 d, z# \/ I- Z4 j
* S" k% [. Q1 c" A2 g4 b
       2.1 程序编写! `# a4 F8 [% s" [
( [: G9 y% u: B% B  m2 a

  z+ a3 Z6 D% G# S0 t* n) u       2.2 PS与PL的交互3 E7 u0 {" V5 H/ x( L% d4 Q4 B
+ j3 z# ~+ e6 ]4 _0 B/ V
/ e: I' |" r2 z, @
三、系统搭建与hdf生成5 e; Q2 J7 `+ p2 K0 J

# e( R* i( O( w3 j. h) u

0 N1 _- l4 A7 d四、SDK3 M5 k+ X# c& j9 Q/ I

8 O' p/ \  K# |* |

$ l' e% M; h$ R( E. _$ J       4.1 用malloc的方式开辟内存9 y+ j1 _5 c( L1 _; C

1 \: _7 j/ j$ u, h; s- X: O" U
( f$ I9 T  a7 S. d
       4.2 指定指针位置2 e* h* }+ [$ O( i) N: i# I

. p; H3 f' R4 s4 T4 c

/ r: W+ u" n9 _五、SoC
9 u) D, q! T5 u, n  @6 z# B; d
/ [8 [% w* n9 O, j' R8 G

) e  V2 x" l9 r0 v' ?  H7 m       5.1 交叉编译& h% d% n& r. m4 L- \5 c
$ M! |8 V$ s- W5 f$ P& D% B# i9 v  C4 o8 b
) ]* \' d- W% v- L& }5 t$ f
       5.2 驱动
% g/ F( ]- i+ O( O: ~1 L, E
, j, M2 o! ~' P' t5 S1 m4 P
/ t8 c, w. {, ]6 ]
       5.3 运行) q% m; D* |) j" `" T/ {# n2 a
. v3 A1 q4 X7 V6 C; b

2 S9 W4 m/ L# K* q- x8 ^, y5 C' y0 g% H; t

1 R" h; d+ |6 Z8 ~/ U

1 T) u. n) W1 F8 H; H一、IPcore编写
8 K% a) F) m5 }" C
4 w, d& k1 C  `+ o  ?$ B1.1 一种错误的接口% G, C. w5 K# g7 k1 |9 h5 z
- c2 F& O$ y" M" D2 j0 t& |
------------------------------------------" s6 w+ @- ^0 w* \" z

) f3 Z% H$ f: Y8 e& q$ Y5 iint share_dram_core(int write_nums,int read_nums,# E% q: X% D4 m

2 e5 p, _6 V6 X5 P" B9 x                                        volatile float * write_ptr,volatile float *read_ptr,
- ?) _6 C4 I7 L7 o. k. p, v9 @1 M2 X( h. Y" B8 Q/ c
                                        int location_idx,int write_loop_idx,int read_loop_idx,
0 s- v" ~% f  E/ I( b# W& c* X4 L* ]: z4 P! e! E) i- G2 U5 Z
                                        int read_sum){
2 b( `- Z8 R# ~9 _% I" P% j# q" S* ?
游客,如果您要查看本帖隐藏内容请回复
5 j- c2 r% }0 j7 K3 V" J- d( c1 [

$ J/ E, A8 {3 O' L& J) c/ {, g4 e3 {' S8 y7 ], ^& A
" L  g) e( U" y

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 15:52 , Processed in 0.125000 second(s), 23 queries , Gzip On.

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

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

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