|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板- |7 q- v7 P) j( q
6 J+ S1 x) j5 o# n* m
' P% R3 r% H% t" o7 `5 B
- e8 m' H1 _2 _前 言
9 C X0 ^, b$ |+ b8 Y* J6 ~8 e2 o
本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計(jì)的高端評(píng)估板,由核心板和評(píng)估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。; v, V$ q+ `) ?# `0 t3 u! |5 ], E
評(píng)估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。
! E/ H l8 C& j1 ~' K0 P1 K! A. `, B" J v/ V
l& |% N) J/ G' M/ X4 P9 C3 |, o7 p. L9 C5 X4 }
8 r8 B- u. Q) v2 ~! Y7 |8 s) `​
2 i6 W% H: e" y7 M4 M$ B% c& t5 v' p5 m8 V& o8 c
- l' k! l, w! @% E
圖1 TLK7-EVM評(píng)估板
7 `" }3 F# I" n; R; `7 o3 J8 n) g4 m* B8 C
; r. @# @& j5 l1 ~8 h F- N開發(fā)案例主要包括:% M9 }7 o( U! E! S
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
- L: w% W) j& tl 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
* }7 z0 K3 H, H4 g+ zl AD9361軟件無線電案例
1 P% K# m4 I4 l+ h5 C Yl UDP(10G)光口通信案例7 _5 p3 n, @1 c6 I: X- c! k- {
l UDP(1G)光口通信案例
0 J6 g/ x" X: h6 C& El Aurora光口通信案例8 h! W+ V# n& z0 x/ @4 d% J
l PCIe通信案例
, ]- G0 T2 O3 Y* @- p- q& N9 _5 nl 案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
0 E9 h9 T6 P0 t: a8 o: w
1 e; R4 r |1 R9 V# B' R1 V' |4 B
$ U) [9 N* ^; Y9 k8 t% K3 s
% A0 o& F% g( j M3 W* M. Z0 |& r本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
; r1 y% s" U) h6 c1 l) ]Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時(shí)支持基于OpenCL等框架對(duì)Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。5 Z0 F6 x+ @8 J
, M- S' d( \, m8 @& s& E. |) k
2 j! f! U( `/ w }8 n( Z
HLS基本開發(fā)流程如下:$ @6 N. K5 F; F1 F5 v7 E
(1) HLS工程新建/工程導(dǎo)入, u1 g. L% Y* A8 t0 F7 d- G
(2) 編譯與仿真
& j& X/ M. y: s' d( w(3) 綜合
8 i( i \ A9 O/ n8 e8 Q' f* \$ s- L' H(4) IP核封裝
' [9 [+ P9 W, T9 {(5) IP核測(cè)試
3 y2 G. f1 p' C5 G5 c; P" v+ W
( h; B' n5 A; y: S
8 }2 ]: N1 N1 n$ {HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。
9 q6 \+ e% j* u. w2 b. A6 f, b8 h% e y' \
# h# N2 q$ J# w9 Y
表1
: p9 L8 m- B4 y; x; O6 e$ O* Mhls_ip_demo
; ~/ l: R: ~* m: e! [; Z | bin5 [+ d, W6 k) _+ l: p
| IP核測(cè)試程序可執(zhí)行文件9 D8 {6 ]( z1 Y- W6 r P% B
| project
3 Y: ~* y: ?0 r& Y | IP核測(cè)試程序Vivado工程8 }* K1 \ t. b' j
| vivado_hls
" g/ W* W, k, p8 C% J) ^ | ip_package0 q n+ |* [3 ~8 R, ^
| IP核# }& l" k6 L& S m3 Y. z
| poject
: M1 Q& I) W+ n( s! ^5 W0 C | solution1
3 a8 c/ O0 k$ `# P$ }- z | 仿真方案1 u+ I6 L! @/ }2 Z* o
| src1 Y) M' w* |2 k
| HLS工程源碼7 x$ G2 v4 h: f0 I3 m, l3 _
| test_bench
$ A0 H6 e* d$ T7 n; E9 K$ y4 r | HLS工程仿真程序或測(cè)試文件
$ V4 d, n2 f# g6 ?$ l1 S, h | vivado_hls.app
. J8 M* j. N3 }9 L; ?7 ?2 r | HLS工程文件
* B1 D2 S! u. i$ w4 u# r: f: V) l0 N: \ | HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
/ m- K) k$ [/ S* Z% P" p
5 p, L2 s1 } }8 i) k: a
4 \7 ~4 ~3 t( r! r# ^. X" [8 o- K. x+ P1 X" g
9 ]/ t) ]3 v# C# m2 ~; S HLS工程導(dǎo)入) ^) z K5 k9 ?
+ X& X" p7 j6 d" v; b雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。
9 y! K. n3 h+ G3 Y7 z. n3 Z% e; e" e% [
- p c# ]3 I* t* {9 [​1 q f2 ?7 `0 T
圖2: |2 H. ]$ t% W% u6 D7 l: K
4 g/ O D8 C! h3 m
3 D8 t2 }2 I: V+ Q" q: X​
* \7 T9 S# g: X圖34 S k/ z" p) w
7 c6 S- F8 U; A- j1 R% j! h3 h3 z+ T
/ [. V& o* F( B
​
; N# l7 Q! g" W2 B, c圖48 |! [& z6 ~) a
亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。
4 ^; N5 p& t5 u; ]: Q+ R: }( n- i' ` y: f! c8 G) k
, g5 M$ f" v$ t. v" D6 W, T0 t5 }) A: F4 S
* b( D5 w e6 j5 T, e0 H
綜合
; @. B/ x+ b. f3 l; t' y9 ~4 ^) ^8 P
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。+ J6 y! b3 n1 _$ f6 ?. a
點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。" ^* I+ b& F" v8 z+ b4 F( D: N
( \1 {4 b5 K9 ?4 C* z, O
7 Y3 Z, |# t& u+ O8 ?' ]9 k​& K0 U1 Z8 J8 t
圖8
Y7 d: k2 a- ^/ i# @* Y/ ?8 V$ l A2 O9 v6 e: |5 P; l) ?( J
: O) m! ]. w1 h6 s( I) H1 Q8 O* w
​
% `: q: |. w/ e/ b2 _
# u9 k+ }( l5 `* q7 c/ F8 n' ~! o9 P! _2 w, o1 ^: }
圖9
" S; M! f6 N0 J7 a( m; x, ?" b* C$ h8 W' S8 F
& B l7 ]( j( Y. d
綜合完成后,報(bào)表文件將自動(dòng)打開。
; r, [ c; }; g% `, P" N
' g* C/ V) Z3 D. r$ s; P
7 l0 [; s, T/ h. c% H. F- \​8 r$ H, w" ?2 ]1 T5 ^0 W1 S2 y
圖10' t1 |# e; T% c5 f# @( v/ i
$ p$ C P6 q) s0 }: r
. v0 z* |0 {8 S& ^通過報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。# C" u: N+ W9 T X3 Y' G' R2 i
4 P1 O* D- m- ?1 {& _
, K9 r8 k- W* ]3 t6 H1 [4 T​# E" L& e2 M+ k+ l& P; o6 I8 j
: n) \) S! p" C( j) f, m7 V" T0 _+ t
S! S3 u3 |, C% O2 ?' z圖115 Z$ n! ^8 d% q4 o$ Y% I
! c0 v7 A- |! H v; N8 I
5 B7 p8 _9 H. B& B0 K編譯和仿真C代碼5 E8 R6 e# j" Z8 u2 g
* _5 _9 A) y E' ~' E仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。- N2 `2 ? ^/ C
導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。
( g( R1 e8 O# P0 L" Q m( A% t
% G5 u% N O% b) v: R# I! T$ \, F4 h( c
​+ u5 q+ Z8 M& a) d5 B
圖5+ C; ?( k2 v: ~3 r- V2 f3 b5 D
( h" D) `; y8 w3 m$ W
) i2 s/ M/ M; O( F0 e5 ~彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。, k; d+ r+ I. g2 p2 T3 s
7 ~7 N& i! s* ]6 e6 ^5 E
y7 B" L d/ e/ }​
e: S5 S! H% Y圖6% _9 F- I; r# H% O# z s+ E$ J
) L, ^' Q) V1 Q- q* q+ D3 o- B% F/ |4 ^+ O/ O# i
編譯完成后即可全速或單步運(yùn)行仿真代碼。8 W+ w0 A; u$ P' d1 k B( g+ G" v
​( }* v v" n+ r& T3 S* k! N
圖7
) x3 n" }$ A* ?
1 m/ f( m! o \$ R/ {- D8 h7 d+ d+ ~- K, `8 i0 X% D" X$ T8 V( X
* Y, y7 W5 C T ^4 n
IP核測(cè)試
# m/ x4 \3 U+ j4 v3 H8 ?# m: n3 i8 U
進(jìn)入案例“hls_ip_demo\project\”的IP核測(cè)試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測(cè)試的IP核。
2 L3 _3 H( q v% @
J) |9 e7 M* W6 H4 T/ {8 R
8 X% C# l% \3 E; g3 x​
' q+ @, E" |9 h& j+ K: H6 {. S
, C3 r, O I" P( u# C. p( Z- x5 K5 i
圖17
' {+ J, e+ [" k! j! R7 E# E如需自行導(dǎo)入IP核,請(qǐng)參考如下步驟。
& b' ?) o+ _. r; b; n) Z" S. A# X$ k
1 v: f$ O9 r& `6 D3 w+ v4 l, u# ]& W' r& l t
(1) 請(qǐng)點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。6 c- `. [: [; D4 w) h0 y
​0 Z% T; e* M. _8 G
6 T: j2 B t0 l) u% F% {: |; A* W. ~' W
圖18 q% g( e& n4 o- ]0 V. c x2 X! Q
​& c) S9 e! W) |6 { B
圖19
+ E ~3 l& a" C( { p4 Q6 {* s(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。% E2 k; l4 n) ^2 g9 l. C* o# Q
​/ _6 M k7 k1 e8 w2 r: c/ X
9 j. U# b+ S, [
3 e. v$ ^+ z" z0 X% Q
圖20
" V0 i3 |! G1 U5 u3 i​, T( v3 P3 Q8 A, B- s7 w
圖218 @! L( h* m) |) p+ M- z2 E
; O/ A! u7 }9 \* y2 u& ?( X
+ E; f' P$ p8 u
(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
3 G" M# Z* I2 I" L# p2 F6 b$ R% h9 T! S- g2 {% y, m' q
& ^$ V) o; u/ p' k0 ]​0 F# F# k' z( t
3 w, z# r- w; F
5 \! B* ^+ s9 U- f: X" D# s4 |% m圖22( o3 y- n( k+ i) R1 i+ c2 F/ h u1 A
​+ s9 z3 v- V. T. J% j
圖23
, D" s8 u5 A% g9 j6 L( H點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測(cè)試程序Vivado工程編譯。+ x) V8 B0 S" N, h. p1 c$ l
​0 A" O7 W% d& c6 x/ T
/ }9 `8 s# E! L/ k! _ I1 u
1 C, b7 A% }2 w
; f3 n5 C6 A7 m/ B' Y2 l2 L% l0 d' ?: s: H' D5 \. Q
圖24
) ^$ E* C3 {4 [+ l+ |6 `5 N# a$ v; K; ^1 G; M3 z
) r9 ~8 o B; v P$ G4 [/ d) D
​
y2 \* f) n8 j' f* c圖257 v7 y" g: v5 M, Y8 a" p, r
: ?# N( O( [, f) ?
9 `# h1 [2 y, ~" m) m編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
, Y# g) {* L( _8 L9 _# s" l% H# E: B, g
6 g* V+ c3 l* S& s3 b​' e8 i0 v& T7 O
) k) B! @; U: Q4 L C4 d3 H
. n+ u1 Y, X. x/ F) D- @
圖26
) O2 a' N7 u4 P W3 S- H
+ L% j. t7 f5 g* |& t( a
* M6 R7 {+ t$ b1 _請(qǐng)參考基于Vivado的FPGA程序加載與固化手冊(cè)加載.bit格式可執(zhí)行文件,即可看到評(píng)估底板的LED2進(jìn)行閃爍。2 u3 f( ]" _, j5 ~. g4 i1 u
IP核封裝. o9 f5 P& _3 j' i& O
' A9 _/ F1 l' \8 a
綜合完成后,點(diǎn)擊生成IP核。" K) |5 x; \/ J
​
8 u" b8 I: [' X( K) d1 a0 p) ^; C, @+ f1 U
8 T) c+ N3 }& E$ [1 j
圖12# o" ^# o/ c' Q8 |3 T# n
: `9 @( y9 j! K2 d: z0 h
/ [1 a. _5 Y/ K( t m5 c- h
​' y; @5 s6 Q- y- E
圖13. P4 o' X1 ~$ c# p4 R Y
​/ L* Y- G& X* t; _* Y; |1 }2 Q
圖14
5 B% B' Q0 \9 q6 i3 Y運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
9 F" z) V6 |" l: ~ X​! u+ l# p: v/ Y+ y$ ^# n
( r# V6 Z$ p" k" y0 j
9 X. T5 Q; T6 V) {2 S0 y0 V圖15' x, [0 e' T! g, _& e; j( d% ^
​
% F0 o }; N, q0 w圖166 T( f9 U% k1 v: |( h, |
/ B3 w2 r6 s' ^# R) W) k
/ z' P* H( p) v+ [
l 更多推薦- h7 _3 ]% ?) D- t* V; u9 @
" w/ Z! M5 P0 V' D5 j) Z. M; m: _​& `; m0 }) U& Z
/ U/ G' _, U% j) H" z
, P8 s: M `, u6 P9 Y) j$ p
圖27: ^0 h- P1 B0 Q: F) }1 g" V# W1 ]: d0 K
, i" s4 }5 p+ j4 `/ @: u. Y
|
|