|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 uperrua 于 2019-5-16 13:50 编辑
/ j- q8 p. l% s! Q8 P0 p I1 ^0 w* g2 v! W0 }
背景:我们编写了卷积操作的IPcore,并且在c代码端模拟通过,现在我们需要实现加入HLS的预编译指令,然后将其实现为硬件结构。' M) c: A6 ?" t( ]+ M% L
% f$ n( a( p# C9 W+ {( U( ^7 y: {
目的:加入HLS预编译指令。
8 z+ x/ g$ Y$ Z( ]. @, d1 c5 D( P( S" M! W
' X" Z: m3 P0 `$ ^& }
2 x0 `7 i$ S' s目录1 o H: x+ X; v$ R8 Q0 _. Z
2 `5 r h6 d; \- W
' `/ O( l- Y: P一、数组的BRAM的实现: L# o4 T! |) H t
+ f+ Q$ p* l. X
O5 ^% K7 [: J9 s% @6 ]' z' i 1.1 IBRAM/ K7 j% P0 s5 d
3 c. \! M; U A% |! b: j0 P$ q7 _; G4 t8 }/ s) {9 t1 J
IBRAM:zynqNet实现方法
5 X" o" H; W( W G. o2 Y2 N& R6 b& |( J+ {( n, U, k" `" l# W
2 B7 s0 c! g0 ]* @4 s. V
IBRAM:MTCNN代码加入
# O/ k" }4 I7 b6 ~) ?) {0 d' b5 S D" ?1 Y
- q4 m" H8 s$ F
1.2 OBRAM
, N7 [; C* e# t# I$ q9 Y4 Z3 U) g9 {: t3 O. w$ B- x) D ?
3 ` M0 l+ k8 ]) \) @& r OBRAM:zynqNet实现方法6 D9 _( `. {- m4 I
3 l; J! b- o! v8 @! H( r I3 A W& k7 E" O9 j
OBRAM:MTCNN代码加入3 H& E+ \7 s- k% m" |
$ ]8 ?/ r W A, s g" F% `- _5 P P% L1 w6 C
1.3 WBRAM
9 H6 M& g i+ m/ H: L: d9 z/ @, |; G1 m
) x$ t1 ~. H+ F# H' A WBRAM的zynqNet实现4 c8 M2 V O" l4 h R _# \1 Q
( O0 m# i* L3 x7 p! h: x
1 G X. I4 r' O
WBRAM:MTCNN代码加入2 X- }1 t$ r: | J
?$ `- i9 P9 K
, V8 p: ^3 @8 B 二、并行化与相关并行数组的实现+ ~3 A; D; _( h/ H/ [) J( u, L
9 t6 @5 A( D" x" C2 Q& A7 C! S6 Z8 S( k
2.1 MACC中的UNROLL
9 a" n3 E) f0 k% q, v% q8 ?- l% n
* |* A' a, x4 y+ u! F
UNROLL:zynqNet的格式; a) P& t0 a2 t5 i
, k' ^4 F1 X0 _- Q" G
7 M6 f$ w6 T7 w4 q: D `4 I UNROLL:MTCNN加入* x8 S4 }' d( d6 K* `8 N5 _
1 u7 g9 P9 C+ P4 O; f: P5 C
* f @$ I6 u+ F+ b7 l1 ^# g; L
2.2 与UNROLL相关的ARRAY_PARTITION P2 j5 Y$ X* b
* u7 l$ X7 M+ y& |7 I7 `
2 r; B- U+ y, @5 w
zynqNet的ARRAY_PARTITION) K, H }8 ]* [- X2 R
: P+ q* o: Z0 s5 X/ i
; D4 B, w/ z7 S# \7 t
MTCNN的ARRYA_PARTITION
; g7 q$ ^, P3 M* {
* d! I. @) U' P+ H: @& e/ l6 g# _
, ]8 u0 [4 H) ]3 K3 T" Y 2.3 并行化MACC% s3 T$ f1 [* K6 l$ K
. C! c: a! T, D' j
4 {2 H3 h% }4 N4 M! u zynqNet并行化MACC的方法
% E* k z4 O+ l1 ^ t, t% p9 h& e9 Z
/ ]6 u. `8 o( f' }5 A+ G C6 T5 Y" U- O4 K Q8 C
MTCNN并行化MACC的指令* D6 C' w6 M2 L8 A7 W( ?) @8 l2 C( x
% j) t$ R1 `' K2 g
1 ~- N2 x. Y! }" u& |4 H三、INLINE与实体化
- ?7 g& S& {3 K8 |8 e
. \) ?5 l( Z/ t R, i2 T- S5 K) Z- Z: ]/ l8 x6 n7 ~( D
3.1 OBRAM 相关的实体化3 \: p2 w# ~. y( h
6 ?7 q0 f, r2 o3 k' S+ {+ V; V" Y& w- m% O6 B6 H
3.2 OBRAM向DRAM相关的实体化0 @' X& P+ S1 u+ \
- Y& m) J8 \0 J9 n
9 X& j9 f% @ d- R! ^; @- s: p: Q 3.3 权重DRAM加载入WBRAM
: D; ] H; C5 o ?( d" V$ F9 v; W0 a/ I% g! N, U& t) x
. _' G5 Y; d4 ^* U! B+ d: {, P
3.4 权重从WBRAM取出到PE1 s' {4 T' t3 t0 ?
/ j, J% g" M5 \2 B/ F
( V7 F) a u% b x
3.5 图像从DRAM到IBRAM# s8 @- X ]% C) u4 [9 o
( q( C2 q ^2 n Z9 P2 @: u# U5 g3 T/ ]4 {/ Q+ S+ o* `
3.6 IBRAM读出到PE. p2 n7 L& N, v' ^2 R( `) Y
! m' P3 u# Y% @; } w
1 }1 |# l6 d- B: v
( q* f8 ?& v' q# |
" ]9 Q. Y2 Y4 B1 Z& W一、数组的BRAM的实现
0 _: Q. e4 H$ |) |0 O! T- G0 n2 n0 r3 p9 p
只有三种BRAM,参考zynqNet的模式,将相应BRAM加入具体优化指令。' o4 ?3 r' h9 \
6 ?7 @1 V! b) S$ i运用resource指令与array partation指令,将权重,图像,累加的输出实现为具体的BRAM上。6 q: |) x+ p; L, k) D* D: N3 V4 k
+ W/ A+ y" L4 w3 T W
* z6 k' J$ K$ c
$ e! N4 |) k8 S! H1 k) f+ k1.1 IBRAM, X; S8 F" _/ t+ h5 t* K
1 \% x. }2 C5 A5 |IBRAM:zynqNet实现方法+ J! x" h8 T- W- {$ b
# `& V |* J6 n6 l
. ` o9 s. \; }9 b, W
! b0 M$ S/ f( r, C# n0 l) X0 V
! L) z5 j. L( K! E% \* D6 M* l/ f( P' A1 ~" N, o" G9 I `& @
6 L( l+ I0 n2 { J
) ~' X l' h1 p1 l
; v+ l4 Z2 j! L* v% h+ I: o9 r
! [5 @, ]0 {0 Q' ]% m
3 ?) t% Z, ?3 m, {/ X+ S/ ?
( s, S4 j& [7 `& c0 V% ^. W! [6 c% b& C% @
: A8 `: O2 a. N8 `$ A: r1 I4 s' l6 m
: ~- P+ U; v& l! }
@$ z" ^/ E& x, ^/ E5 E' w7 ]( b( j+ I E
. L6 i u* e2 o& c4 V$ t, F. A" }' z# W A. r% y9 x8 L5 ]
7 |/ V1 A9 d x9 ?
- c8 G2 D9 s, b2 G" j
7 C4 t) G2 j/ S r7 R6 I- N. R5 A( ], _$ Y2 k' b% C
0 }5 U }' K$ _7 o' f! R2 o# S8 }+ O7 R [4 B
7 H' q& Z8 J4 H
* {* t" w( f! v; b, K% ]$ S$ N7 \
, L" Y8 o7 e) M7 M
( G: Q* E' h9 T* R! y$ C; ~$ ]/ X
4 ?( u" {5 c) m# g r- [; \7 i9 K7 U1 Y6 J% Z0 s q
8 z2 `* w2 w. [8 @6 ^; `
% d5 H, s0 }5 \* m6 C+ t
# O# F* a% X6 v! C4 E- A
5 c% Y8 z' q7 F! j5 M- H- P" a/ r& b7 `2 F
' X' W+ p* v7 P, L7 z; W9 @& [0 u# `- s. |# \; T: z& Z6 t
7 e3 E0 a" L; u1 R- a
" Y+ M$ x- W8 T( B
! x* O9 i. g* h9 d# V$ ]
& o7 D8 ]3 l- q6 a( ~
' ?; |9 O7 k* m8 I/ h% P$ m
% r" Q- K N6 x8 Q# X6 I- [" S8 \& b1 ^1 d! u: N( p
. ]: B+ N9 C9 Z1 f
* K3 w \ X6 e' f5 Z4 S- }; y8 M
_1 o7 M) c) Y: s0 {" S" U4 Z; K. q1 c- d1 v1 n
# t5 a% p( C3 I; ^+ Y# w) H9 y7 c% E$ s8 t
! [6 p! C# x, C& m$ K
8 l0 {8 _: y; k& S8 G" f3 p) C& Y" F9 p5 `: ~ G
( f& _9 _7 k# d6 f( ]
" Q, ]3 }) L9 A0 _* o2 a
9 ~% M7 L- B2 I8 G: ^0 k! l; _$ @8 c& d
6 s% y. t: S* o; h4 F" ~5 R# P# ]& W k, j; L0 e1 W! F7 k
% }1 I! t1 M6 s" ?1 @6 U4 {+ @
1 m; h: j2 d' M4 M$ q! m, U4 _) _* W/ s5 T
$ A2 n: y$ ?) h" ~; W2 I& x% D; r/ s
$ T6 b3 P% C7 _) W% y0 x
9 d( z$ o3 R2 w `
) m2 n7 z, y# A( e. _4 N* W) o- Z! x- Z6 n
4 ]' e# ~. Z9 f1 G& R! l) b
3 x8 ?. c' v% x% U7 D. h7 i6 x+ ~! r: j- j: j
- l* @+ Q$ D, f! b0 j$ h1 D8 K; S- d6 E# O Q* q; B" I$ R/ `; r
|
|