|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 uperrua 于 2019-5-16 13:50 编辑
2 f9 ?$ P" |( Y+ V( _& D# Y7 i1 h3 H1 H$ \9 e
背景:我们编写了卷积操作的IPcore,并且在c代码端模拟通过,现在我们需要实现加入HLS的预编译指令,然后将其实现为硬件结构。 M9 O& B. Z4 ]
4 d8 D2 O5 S0 z+ G/ m5 p0 _9 {* y2 l
目的:加入HLS预编译指令。1 g+ A. W$ ^0 ~; x
9 p& i( r: ? J. Y1 n. ]4 Q% q9 _0 S H+ a( \2 f/ S# w+ x v
. E5 E0 E' d" C1 y* I9 K
目录
7 U: j$ V9 f3 V3 i; {; g) G$ g
4 n e, u& [- Z4 L( f
- j' f* t6 y& i* l: F一、数组的BRAM的实现9 I4 t+ S( Y1 ^% S2 J
w; E4 Y3 d+ G! {! {
4 Q% u. |& x+ f% u* Q/ q; Z& _" w
1.1 IBRAM
3 I7 I# u0 r9 K
# h$ W4 o; s- q8 Y- C7 g
/ E! [( [; V4 l) `5 F IBRAM:zynqNet实现方法) t9 l; K1 |$ g! D9 P$ s
0 W+ H9 x1 l! J- | K
$ ^4 d% D1 [- w1 u- x( z( o- ]: ]
IBRAM:MTCNN代码加入
6 j7 I4 ~0 ?9 w' C
[6 r: F+ m8 ]' `* v6 U7 ?5 t1 E$ F6 A8 g: c
1.2 OBRAM q& I, A7 W3 r8 ]% B
1 y1 s: u6 I6 l0 |% ?4 t
+ B3 x" h! l+ n( n+ w! v( Y OBRAM:zynqNet实现方法
7 ^ ^- ]" y' A: W v
# d! [3 M; s5 T
' ^* @: q1 J' z$ w OBRAM:MTCNN代码加入
7 K( p; R: u& y' _! M8 N( c2 B0 s
8 N F5 C; n$ k5 j/ r4 M" ?' ? U
1.3 WBRAM; \ u' [9 ^; I/ f6 H1 O9 q! r
" S" L* J0 C) j
* Q/ b; R; \9 } WBRAM的zynqNet实现 W$ x/ c" Q6 v; G0 Z' l9 @7 _% d) v
5 P0 x9 Z' v# y5 e6 f
# _: r2 ?9 _0 C2 \1 v/ P5 T5 F WBRAM:MTCNN代码加入
# f5 x0 D' P, j+ n5 {7 o4 s
& \4 Z+ V7 I0 ~
( a, [) j+ K: J5 F 二、并行化与相关并行数组的实现& j0 \0 a& X E. z; i+ @- p) ?
3 `- Q- w* \) r
8 W1 u# t9 a7 j6 c1 b 2.1 MACC中的UNROLL) }% F0 E; i1 f3 n
6 E4 C; U1 r( h& U
; M2 F0 @8 `4 `4 R' H; x UNROLL:zynqNet的格式# ^2 G W0 c9 t. U% P
# A! U! a% b. B
2 J# V2 _3 I8 s UNROLL:MTCNN加入6 K. a4 q8 Z6 U5 |7 v4 H$ _7 h
1 s' H2 L# a- u# Y2 Z8 n+ b% {# y! T: I8 m
2.2 与UNROLL相关的ARRAY_PARTITION
& G8 M- K& ^% u6 B& F1 R
+ d) {8 B, {+ d# j* ?1 r+ B- E& |6 I6 {# D
zynqNet的ARRAY_PARTITION
' Z, V2 X) {; M0 C9 T
7 F b/ |# e4 n& M
+ |; |' D) v% Y) r p# M% ` MTCNN的ARRYA_PARTITION
2 a7 J5 y3 k! Z* @! D, \2 C/ }& g) g$ w- ~- S. r5 t
6 R6 p6 S; c: B+ |2 X9 e 2.3 并行化MACC
" B7 _: L& v# \6 J, P4 K1 f1 j4 M" z% e; c% A
& H% T$ ?2 h% _4 o X" g& |/ \ zynqNet并行化MACC的方法
4 b! v9 T4 u F/ I4 F# m1 r7 G" O( n* ] [. j$ B5 x/ y- @3 l! Y0 o
6 @2 W1 `$ E' f( j9 g3 T MTCNN并行化MACC的指令
) p$ M! r( \) f1 x) B& h# O# L' z3 [% J* z8 e8 a
. W! N- c4 {, L3 g* I三、INLINE与实体化- C9 r! o3 \ c' q
+ {5 z! G) g; @( c0 X7 e
) I) W2 A7 n1 y$ K9 ~- Q; ^: t; n" l6 N 3.1 OBRAM 相关的实体化
" m; T; Y$ }- k. O* j: `: B& H1 I" H( c1 b6 J4 J. f
* {! a. H2 X3 C; { 3.2 OBRAM向DRAM相关的实体化
2 T* [" l* D9 X% |3 g' u
' I9 ~: N7 Y1 w, j9 @% P/ ^( c, _6 k, N" | r" C" o. ^* f
3.3 权重DRAM加载入WBRAM& p, d7 V; J1 S, E2 C1 p
' c! J, H8 m2 {: y* @2 Q- m
: n/ a o: q/ U5 V7 p- l 3.4 权重从WBRAM取出到PE6 S/ j H) E: l0 V3 X* r
3 @. @: [) T9 O8 |- a* r) w% c! L$ T' Y; l. Q
3.5 图像从DRAM到IBRAM
# x1 V4 R% z I$ b2 ]5 j$ w8 |, c! y f9 T- W
5 `# T4 C& Q/ u( { ~# \ 3.6 IBRAM读出到PE
% A6 F( x% A9 L# m6 O7 P
$ _6 H# ^- Q' e1 L) [/ D/ a4 {
% a* j F$ \* Q# K1 B1 ?% o' j
' L4 `7 o* J3 p
& O' l P7 s2 v4 T M4 G一、数组的BRAM的实现
5 K: _0 B' W/ V1 |* W8 i8 W/ p7 W; ?1 v6 j4 f8 i( b1 @
只有三种BRAM,参考zynqNet的模式,将相应BRAM加入具体优化指令。) g3 t3 S8 y8 K8 t7 B
7 S1 _, y/ p! K, {' C; a) l0 H
运用resource指令与array partation指令,将权重,图像,累加的输出实现为具体的BRAM上。
* `" P/ V& j6 @
' i% W: ]! i/ U4 O5 r
% B7 N0 `! C- R7 W- i* _) J6 Q
}9 g* ]; {2 S/ l4 r1.1 IBRAM
! Q+ [3 j/ } k
; S+ A7 i( A& E, l: BIBRAM:zynqNet实现方法
' ]& ~3 u& e2 S' g0 I: j4 Y+ D! L: P/ }3 ^! I' z
7 z" _3 q) v( H$ w
# T: B) v* G: Z" c% T' J0 t9 D6 d" b) J" E
3 v t8 B) l! A3 Y8 Q
# i; L# C3 F) B7 Y( g( c L& }
( Y* s2 @( L' f, S& W6 I6 q, K( @3 b- v' J0 O& q4 F* f8 ^
. `4 p$ `( l- k- u
5 J0 Y$ \8 F Z$ v+ W; S" b8 @8 M0 d5 C
9 \! U/ r3 O( _# N. }* g, y. W7 d6 ?# z3 v1 I. P% S
6 Q' W- e( Y: `9 Y! a% V1 a3 N& A6 E& h, _
# d. K0 U1 m: M3 J A9 }1 R+ X6 B) q$ F8 n& V7 N' d
7 k. { m/ p/ o% Z2 g* E/ p2 S
* u5 d) d# l: S* r, _3 J$ _
/ H8 T: L( i8 {( ?$ V& |) x% p
6 S( K1 c; g; x- L: y
) R6 R/ t) u! t, t
! }& t) L3 J! b. M
" }# m$ N" H6 a+ k4 R1 K
2 D3 t# t3 U9 i0 X. y5 @) }; Y* s2 P8 z9 u
3 i* V: M8 n8 t3 d8 R6 k; H- _1 U9 I/ k- l7 B' y6 _/ L0 m
2 i1 n6 y! |4 m9 _9 _* ^* s' ?9 R
) Q& N4 a1 G! G* M* S
: C4 J/ f4 q3 y4 O- K6 K, k
8 L& L3 D6 F1 W1 F! k h0 i* B. g
5 _, W3 J4 g' k( b7 r# u3 F0 @5 O
8 J. m2 U3 v9 a! ?8 Q. _
1 B5 i e4 K. E2 b8 g! f
; g1 {) M3 u+ L8 ]6 ^) M3 ?' m. F5 A/ A: Q2 z- b
( S' z* H/ y+ W: `9 _5 @2 J7 k) i6 b" i
6 n# J; |6 ~& b0 T$ f3 @( v! X5 [4 B' m: x5 m
& ^* H6 d- K1 H
$ r) K3 @; }4 m. M2 U' p
7 z. u! Z; }# W7 `0 }
' L" P; k t. Y5 i) w' N" E1 o/ I
9 _2 ?, ^4 b- K3 R% I5 i( D# r
& O0 K6 N- P0 T+ k
3 h, P2 R6 ^0 n7 [1 |
' u7 `9 \4 A+ ?# W' o
6 j$ T9 V1 _: F: e7 c/ Q8 B) J, y8 u! ]( f j
- d. H! Z) N, Y4 Z/ j0 o# T: s4 i2 P" \9 |
6 W6 ] o+ d, B; \7 O/ y3 a& `8 Y) a( C8 t
) M7 b# `" a+ h
) l+ R$ ^# V E9 ]: a
6 R1 a3 \: ?+ v! X+ p$ E U) C: M0 U& k
+ o! M1 }; K3 s7 }
/ B; N2 V/ V" W+ ^
' N) U0 R1 c- X3 N5 ^% H" e
( R/ B# J# g" e n4 R$ l' m8 P. _9 a. f1 l! F4 U: n. m1 S' i( I w
& j/ f/ S2 i- q0 o& I- Z
0 K' y. h: f0 D$ q6 F9 z' E& Z* w/ v9 E; s% Y
0 x# [' `$ {" r
! ^# x, l& t& d5 }! v; T) F- {' n- f8 S) U' Q1 ]
$ o& G! j* V6 k
|
|