|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 uperrua 于 2019-5-16 13:50 编辑
0 _- k2 @% r! V+ b* y Q: N, _- N: B5 f$ q, q! O& Z! Y- c
背景:我们编写了卷积操作的IPcore,并且在c代码端模拟通过,现在我们需要实现加入HLS的预编译指令,然后将其实现为硬件结构。
; |. B2 b* N8 d% g/ W# j2 W' s8 t2 C
! U. r+ L- G% O; i, E M3 p! F
目的:加入HLS预编译指令。
" Z1 Y& Q6 t6 X. Z
& I) R" l3 p/ u$ d0 I$ M) c2 j9 c2 c" M4 H& E2 o; \
# i2 k9 j: w: U# S
目录
/ v& ]7 J, `7 `0 f: E5 d' R- ~# m8 [! S- e) H7 F4 W r, }1 U
3 G3 U5 c% }3 A# J一、数组的BRAM的实现1 }9 N4 i& W1 [
* W- K; e9 q7 w9 r: w7 Q$ ~, l
, H* {4 t8 ]: T1 _6 ]+ e7 ^# | 1.1 IBRAM
* D. {2 K& N, X( R
& M: R) c4 D& B3 C, c9 D( M- \$ p) z5 ~5 @9 Q" c$ [& N" N- {) W
IBRAM:zynqNet实现方法7 u) X$ k" X! r4 R4 g0 D
& _# s6 c G! R& Z- O
8 ?: Y+ ?. o: H' u; n
IBRAM:MTCNN代码加入
6 e& c6 X! x) ]
% B2 z; J& d$ H% H9 ?: A" y' Y/ }. S2 g& l6 Y8 Y
1.2 OBRAM
6 j/ X2 n; s7 n* m
# E+ M2 \+ L; [. b7 z% h' i
9 z) e! |6 a- o; g: N9 R! S OBRAM:zynqNet实现方法
/ K8 c' S, R0 E5 Y6 H6 Z4 P# M
8 l" c3 O( w" p
/ `3 F' n6 i- W, ] OBRAM:MTCNN代码加入4 m4 E- N M( M. s% [
8 q# C; D- P0 d1 ~2 C0 g/ X+ r7 e
! A$ ~. l; m; h( b 1.3 WBRAM, Z( l8 R2 d, [* ~2 j: s, {8 u5 Q
' z6 |! p7 ?# W
) T/ w& Q1 q& {( ?: _2 k1 H WBRAM的zynqNet实现/ t. {) [- s( z
) S9 V& l# T3 a+ T2 l& h1 p
5 a1 P9 S# Q0 k/ } WBRAM:MTCNN代码加入
, I' Z1 X S$ [8 v+ j1 Q {; N: O q2 U
3 Q+ } i2 e" X) S( J! l& U" { 二、并行化与相关并行数组的实现 x6 H/ h5 t+ H2 P- m
1 i# q p7 t% e7 S
3 K! S4 q& g5 J0 d$ }4 K! L 2.1 MACC中的UNROLL+ b9 t: A7 L: ~
/ v( y* x: n# M4 l" c- Q% z: p/ b) w7 h
UNROLL:zynqNet的格式
F3 r5 A& {9 Q- z4 n* }
1 v7 X v% o. f, `9 Q5 T1 t& p1 O+ D; g& S6 b! B: e$ x, m
UNROLL:MTCNN加入
/ P3 j- W2 q9 R( U2 @* Y* u& B+ P r, W2 u/ F4 D- I% _8 u
0 }, v, \$ b; V3 z, t% \4 d
2.2 与UNROLL相关的ARRAY_PARTITION
9 d9 R% v: w: L3 g3 r2 J: q3 R2 _4 F4 p
! X0 J/ \5 i" S1 V5 v
zynqNet的ARRAY_PARTITION0 Z8 N0 j, ]9 y4 A
* o! Y$ s8 D8 y! A$ E; f% w5 y6 j
4 H9 u. j2 J* a MTCNN的ARRYA_PARTITION
* Y5 R+ E: L. E$ l( j
7 g" Y: D% w2 F7 U* O2 M" m5 W' s) L8 E+ l: r' [5 @( ?* F
2.3 并行化MACC
7 ]9 c' _- X1 ?- i) C
! e' X& q2 Z$ n. B S
# f/ U+ M" }9 b% a+ X zynqNet并行化MACC的方法
% N$ E# Y2 C, q8 |* A( h5 B% F. l) o& v I4 w
; r$ q! }1 O, d4 z MTCNN并行化MACC的指令
& x. q# V2 L" r7 b3 e; B1 K/ B0 J8 ?' W1 b* T6 {
( r) N+ F, v6 ?$ q* s1 e# M三、INLINE与实体化& M4 \) F! G" P$ N
" @. J2 _0 w+ ~* v1 F1 Q: s' E X0 t G
3.1 OBRAM 相关的实体化0 S. z6 g3 b1 m8 u
$ m, n( a3 U) n7 e, E" y2 ?8 I: ?- L- M# @& _4 w
3.2 OBRAM向DRAM相关的实体化7 _) V- x/ u& `! D2 M
# p8 {# E' x4 c- u5 W, R( A) ^3 b- ?8 U3 z" K8 f9 X1 z
3.3 权重DRAM加载入WBRAM
) F$ O1 L) }* z" v9 I( |/ v# N/ j9 U( U9 j
# \ [7 M6 i$ w. c- E8 _ 3.4 权重从WBRAM取出到PE
' U# Z7 |3 G+ ~- }# K; Q* }
, O& i, q% e g- Q: e/ I( `+ m! u: x. }2 w" l
3.5 图像从DRAM到IBRAM
0 T/ x- q- d$ H7 X
( M( e a- D5 u% g2 o6 ]2 Z
5 P/ u' t4 N2 e' U- }( e 3.6 IBRAM读出到PE
/ f) n' i, R/ N4 w4 f x
, _2 e1 k# R5 m, G8 h0 g% b% A- J+ i1 ^3 a- Y
* S* ^7 ^2 m' \# n7 d& l
) g' t0 x% _( S! ]9 ~* r8 h
一、数组的BRAM的实现
8 u/ ]$ [. N- ?3 t* n% Y2 P! H/ d+ Y/ O O1 ~) C8 h |& K
只有三种BRAM,参考zynqNet的模式,将相应BRAM加入具体优化指令。
# ?; U/ @) E; x: r! x) O( [2 ^
' r1 J3 o9 F \. i7 X" Y$ S V运用resource指令与array partation指令,将权重,图像,累加的输出实现为具体的BRAM上。/ ^* E7 \8 f3 Q1 \9 i
9 z8 R" b8 E4 `% C( n0 `6 f* t+ l( i! \6 H/ f% @) B: O8 q4 W
. H/ A. U# s' Z; _! C" z6 O) d3 H$ @1.1 IBRAM7 R, l2 `# ]5 i6 C* F3 W5 [
5 G# F, H& q' l5 E3 ~
IBRAM:zynqNet实现方法" Y$ V' L6 V+ [+ {+ ?) A) L+ P& N- D& y
" z5 x5 F+ @8 _* }& i7 {! j8 R- L' C& ?# S1 I
% W8 G$ o' L/ Z0 i
/ U! t6 N; W9 r
3 @ Q4 g4 H7 Z w8 F
5 @0 G2 L" J2 _6 {: l+ o4 C2 ?% e3 n! J
5 D9 v4 I! v7 z h4 E3 a; j) B! {* H$ \9 g
# \' c$ S* _3 W! A @1 m3 f v
6 n. l, E7 \5 w
2 P4 a7 y7 I( { u9 S5 r, P; u5 l* Y+ H! x; N) i
$ Y- s. f- s- R4 b, O) `$ W
6 _, }( _0 Y( Y, w3 _! }
% @; a2 I* ~. W6 g L
8 F& P; U& d" n) e, j$ f; q! i: q9 h; P3 u/ {8 K$ F' L) z2 a# A
& R+ E* {& N) b+ w5 L6 U, e
* f8 ?9 }7 R7 [% j( N
( h1 W c1 N5 [! L7 ?: V4 h N: n% U% g* r9 M% e
7 T+ y8 ~* K/ X* g/ d; H7 _( P
) L5 N6 v% I# g0 M. }1 {. C6 z0 O
2 u4 z- g+ B" A' t8 ?% p! t' X7 ~( L. T! m1 m
. i! S( F, l* T1 @. U
1 M% P6 {$ b' p0 H2 F4 l* H/ ]$ T$ {7 m/ W' `: s8 I6 Z7 E
$ [# X4 t7 j J- Z7 ]
$ \9 \9 z Y1 a
4 f: H. y O' j1 V0 _. H( l4 k- k/ H* e- E
5 M- V- ^8 ^1 B8 X3 G4 t3 l+ N
0 x8 Y% n+ [/ V6 j) y' m
/ M) ~/ c8 ?4 v8 d0 R4 @" \! a
2 p" ?& C6 o$ C6 q+ I x
2 e9 F4 A p6 R2 w
! v0 ]7 J( H9 w; ?0 d% I. ?0 v, O
, Q; a3 y L) O2 E) |8 E1 D& Q9 I' ` c+ ~3 b: X# r
" Z" n# u- ^8 ?, K0 i$ | W
) T& i& Y. H% u% Q! X8 N# @$ X% k% u
$ D- z& O# H# _% u" g. E Q# @. U; {: }4 |3 l9 j% u& N
% f' E7 \9 L5 V$ Y
0 N1 Q: q. Y% e W6 }: d2 P( t4 d+ C/ X6 z- ?
) S/ o- b; I4 T) N$ q' L7 d$ G. \6 e
u: z" d8 S. B+ l& Y- H/ K1 _9 R. l
5 e* [0 J4 r9 ~- o, J0 L# ]& i2 x- z/ Q1 V) g& h
@; k, n. Q x" A( ]
$ x/ j3 C4 B' F$ y% D& j( X! w0 f4 n1 p
& }; \5 L, V. h) l% F' H
/ ]' F# u7 t+ A) ?
: Q4 ?6 d& n# V" T
0 v6 A! a1 d5 b$ h
- U7 w0 P1 z# K( M( M' e$ Q9 u2 k' U
1 r$ P5 |* E! C% o. ?) s6 L8 Z6 F- F9 {4 D
4 H/ q: ?5 A2 C6 Z( _9 x2 @: p- `1 Y) s/ T3 _
$ p' Y' E- n5 h- b) Q l
4 d% U( ]' O# ~ K: E6 Z
- j, U" p: y: z5 b0 ~: l+ n( r# m/ I# F
1 t& k1 q. r/ B
* U L3 ^* W l0 d1 I8 G4 H* o; ]& Y1 {) r
|
|