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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
本篇只有目录的第二、三部分,其余部分请查看(上)、(下)篇
0 V: }3 f1 u1 C# m% p
FPGA实践(八)PS与PL共享DDR(中)
( s- ?7 U/ e: U1 I( H: r
背景:很多时候需要PS与PL共享DDR作为global memory,例如卷积之中,PS将weight in与feature写入DDR,然后PL调用DDR进行运算,再将结果写入DDR进行下一次迭代。
* @% q6 C9 E+ E9 X) }' }
$ v. n  [4 F$ _目的:1.  PS与PL共享DDR,读和写。并且像卷积一样需要三个指针。2.  IPcore设置变量,能通过PS能查看到IPcore运行位置。3. 运用BRAM实现一定的数据搬运。6 {7 G0 @& z& C- R3 E

+ A" A& D' y! t0 a2 w目录. n. a6 ?; f; f; N: l
& d7 A- p) d& i+ @1 c+ W6 b
一、IPcore编写
( j5 \# ?2 ~. U$ ^9 E% y
3 \5 D& c- T5 [) J       1.1 一种错误的接口
$ n9 O% w( D9 b  W  }: K
) N( ^& j  V$ k" ^2 k) o$ i2 ^: h
       1.2 IPcore代码# _: I/ e4 G" G' q1 R  [

8 f! @9 D% B. k       1.3 位置信息
" P7 ?" ?" V) K3 j; m8 M' X
$ P5 c) V6 Z0 s/ g0 Y
       1.4 接口( O7 H; E$ g1 t, M" _0 q

9 ?, i4 \$ X1 ], t* a$ v3 c  N              s_axilite
* B# M% q( k' H, d6 e4 y& S  n. T2 |3 R0 m. Y
              m_axi- b" W4 \( O/ T

/ d5 Z% T- W# s8 d7 J二、testBench9 L% L8 {; Q! \9 A: y4 p
1 B& e/ Q, H2 Y1 ?; e& b
       2.1 程序编写
! D  l- C! V& k" s' M$ }3 ^. Z! \5 }/ B% S4 k4 _4 M+ ^
       2.2 PS与PL的交互
) q+ U) e3 i$ o1 U
* T) H/ r; f+ v1 G" Q
三、系统搭建与hdf生成
3 x. i  G% M7 P7 T) {

  E& i5 E1 X& m$ O: `四、SDK
; m  Z/ g: z( K  r

+ {# R6 `/ Z  y+ X8 {       4.1 用malloc的方式开辟内存: {$ {0 c* V$ u, B  P4 O( `8 ^

# M3 M0 {" x! c0 _7 Q  m       4.2 指定指针位置
& P; m# a" w9 v* l2 ^. N2 v  {

! Z1 X% b7 \! ~五、SoC
) ^+ x; A0 O3 C$ u, u# b9 s, Q) |- i3 c- \" M
       5.1 交叉编译9 E2 m' S  t0 j7 e

5 x4 H1 X& y/ ?( h: M( R: S       5.2 驱动
( _+ y5 i9 j6 u
5 j4 i( G* Y+ t6 \& U/ o, g
       5.3 运行

( H. O4 |* c+ _3 Q# X0 o
4 k" l/ J* T; q/ `* `& ]
6 o+ y& u) L; M2 [, w6 ^. ~4 q5 R4 _9 D/ T

9 c8 D- J2 z8 q/ U' e7 ]2 g! I, ?# w2 N1 [* O1 C0 l$ W
; M) {/ h6 t$ B2 U- |' Y
二、testBench5 c: U! _: y5 y/ P

% A/ u5 u, N/ P& l2.1 程序编写
) E1 U% s) @+ o  U" H7 v9 {" r: j2 B2 h- W5 j  N7 T! @! c" O
----------------------------------------------
  O8 w" I% e4 D; A3 M2 ~. b- w; y/ T
- o$ K3 m7 m- y- `#include<stdio.h>
2 Z& P* ~' k7 o
% P: o  {2 W+ x0 P# b5 B#include<stdlib.h>
/ {6 s! Q1 v1 p$ W" K7 J# J+ O/ L2 W( X# Z7 G
int share_dram_core(int write_nums,int read_nums,
8 D9 \4 U( i) g4 E
$ |3 G: z" S5 i( g                                        volatile float * data_ptr,- X  }; o7 m1 N+ i7 ]( d( S: f

; ~: G& {. ~4 A: p                                        int location_idx,int write_loop_idx,int read_loop_idx,
9 b3 j: C  b! a9 p+ `) o+ S8 h) x/ r( ]) V9 o
                                        int read_sum);
" g! M) I# f& W7 y* k! e9 ~7 p
' r, A9 O. s: A- N/ {) E0 l- p
游客,如果您要查看本帖隐藏内容请回复
; ?2 n4 n+ M* t- @# A$ H

8 s* T9 z% q& R7 f
  b# p) B( n( f4 g* Y1 ~, b! ^+ i$ |

该用户从未签到

2#
发表于 2019-5-22 18:15 | 只看该作者
看看楼主怎么说的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-11 13:38 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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