|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板7 q! s) M1 Q; R2 r; P& g H
2 O6 r8 i( c) B. y1 [
' L/ N2 H6 M+ T) f) Q
! h) B. I" }) h6 `1 J
前 言. h; T; q; u7 w$ i1 E
- P6 S( Y- ]- P* {; H4 e
本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
7 n! z+ U1 r9 O6 D評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進行產(chǎn)品方案評估與技術(shù)預(yù)研。
* u$ {7 \6 r- a7 p9 j$ A: c: ?' [2 O. A. Y8 T
: T, w, A% M( S/ u R
6 h/ d8 D$ E! j' {" D) H* [! j7 n4 G3 n l6 Y6 n
​! ^; F, e3 z7 T; O0 B7 a' S/ H
) k0 F, l! P' \! }9 K3 Q/ E- t% c. F: k# ^- E! `" g- R7 E; \) z
圖1 TLK7-EVM評估板
+ J1 ?& l; u1 ?& G( h# W
0 G/ W! r/ s# }* d$ f7 b0 }: y4 P) w4 s) y. A! r* R
開發(fā)案例主要包括:
I m; ?, b8 A' _1 _' m# F$ o6 ]l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例1 \/ M/ U, P) Q( h, G E
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
6 \, A5 a% S1 E0 L/ Nl AD9361軟件無線電案例; j5 `# r, L- X$ G! L' s( ]1 I
l UDP(10G)光口通信案例
, U* h5 d" [0 ]6 ~% Jl UDP(1G)光口通信案例% c- G7 n/ \. l' j3 l/ z
l Aurora光口通信案例3 X5 x+ h7 u: K# [ b( t8 p
l PCIe通信案例
3 f1 J+ E# N% `' @4 K3 K+ nl 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
9 \! n" u; B, O( ?5 M' V+ q: [+ [7 }
* L; K- k4 d( M7 }( C
5 z4 D1 I" [( k' E! R& N: L
7 ^- E' |- z; O本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
; `% g+ G( L1 i! l# Q. o8 t8 e" bXilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進行開發(fā),可加速算法開發(fā)的進程,縮短產(chǎn)品上市時間。% C' n) `2 X, a9 |
8 ]: d$ n9 k, E+ D
! x$ M9 j: G( |- n7 o# yHLS基本開發(fā)流程如下:
1 N: j9 c5 v; k! `$ J: _0 e& _: Q(1) HLS工程新建/工程導(dǎo)入7 g6 ]! u" V, y: }/ q# O, r
(2) 編譯與仿真- N. g$ o l0 T" W6 V9 H, o- k5 [
(3) 綜合8 W- C9 K) I' g |/ `" M' q6 O
(4) IP核封裝; M) ~) D9 `$ U3 e5 K
(5) IP核測試; x! R- g& w5 o2 O6 _. U4 Q [7 x
- R+ g, u% E- ?# {/ y8 e! U3 X8 U; l1 \5 R# U0 G, o+ _. m
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細說明如下表。1 z. s" g9 B- k: N
3 v9 s+ ]$ ], V! |: p
|; B$ O3 _' Z, I) w表1
; |2 q7 n/ p1 J1 K e- n. dhls_ip_demo1 N! n5 N. J7 W- P
| bin& q) R2 v. ]& G' e9 v
| IP核測試程序可執(zhí)行文件0 Y( D1 w: p+ A1 R. U1 n
| project' k7 ?8 w7 ~% o7 X
| IP核測試程序Vivado工程4 V8 h3 a% y3 C/ {3 q
| vivado_hls2 X* x. h! Z+ }. U1 l
| ip_package! m- |: R8 ]' k* l
| IP核7 A9 |9 E* Q, O" a# R2 e
| poject' x, Q5 h! Y7 H; P: N- w% x1 r
| solution1
\( ~! C6 T( s0 l% G0 c1 S | 仿真方案7 H1 u- \" B: D0 ]
| src
; a) F+ `0 ?& R- M/ [* ] | HLS工程源碼
" L& Q4 w7 u! {; c4 x% g | test_bench' Q2 Q5 i$ ]2 s! {, s
| HLS工程仿真程序或測試文件
# |0 Z, ^7 w4 k- N) | P | vivado_hls.app
/ Z5 [4 L( G4 t | HLS工程文件
5 h0 H! X& m1 M* \) Y7 U | HLS詳細開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。5 E5 n2 n4 m+ W1 M$ x
: q, S: b5 U; p/ @
+ d( E& N0 T F6 ]
/ n) |* h2 l" I w; R9 w( W9 r9 A$ M; A5 A) {
HLS工程導(dǎo)入
8 s! n# t7 k/ I; e4 W* T" [" c
2 `! l; @, v+ C9 q雙擊桌面如下圖標打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點擊“確定”導(dǎo)入HLS工程。
- ^9 l( a+ {% [' E( H p X
& _2 D! m/ J4 A* j9 n! ?9 m
& }8 F1 r! N; u# @​
' r% K2 U$ [4 x2 h1 H7 V圖2; W& H$ I' K; f" S
3 i, ` l# Q; g4 [: n! }9 x
6 S- ?. l9 l8 n" D$ {4 K7 ? w​
" A" E3 d- d1 Y圖34 B" m! S7 J. p
. t7 }4 h4 k% c
9 b/ f$ q6 J: o0 z8 ? }​
( W0 N. R( y% j4 S2 y圖4. D% E( W' W. l
亦可新建HLS工程,并使用C/C++等語言進行程序編寫。
- Z) J6 r& J5 ~ Y# v( N- C2 U
3 }8 E' `( I" G( f1 M/ g8 V4 ~+ d9 K3 u/ u b+ C! C5 t: }$ Z
' x& t& I0 C% V2 m: U& Z$ V* I! H& O, ]
綜合$ c) m4 q! P: f3 I
P/ T3 h; ]) R6 `5 J' Z
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計,并生成綜合報告。
2 C. [; e+ z7 ]4 U) o點擊界面右上角Synthesis返回至工程界面,然后點擊進行綜合。
( z& f7 y' A* }! l" g" m
2 y) I$ u6 U- i# R. i5 `9 A! @4 c/ b- g) y! F% m
​
* [/ A# {6 T6 K a3 S! c7 ]2 a圖83 p0 C& x5 W9 C l7 \
9 v& ?" Y- b7 n8 y+ G: x$ f
- u) Q$ G T) \. H; n. A
​
' S& ~/ l: ?# l( q8 i |" E0 a( _6 W; ~0 z0 ?% L
3 N6 i% R+ r$ n, @0 K圖9
; w( q5 o6 H3 Y1 v0 m0 W
" W6 D% y. p) G
, k% [6 P1 V- p# j綜合完成后,報表文件將自動打開。
0 K4 w. @, `6 b: h" \ f8 Z' L$ z7 I3 ~( h7 ~
+ j! U9 \+ M- v) f- G) T$ a' g​
% U0 v" G1 j' y, q圖10
- i1 t- U% } v1 I5 n
$ D4 k% r, f& @; d1 g: q9 \1 H7 z
6 b7 z9 K, c$ n" T/ ^+ _ v0 Q) W4 u通過報表文件可查看本設(shè)計的時延、資源占用等信息。
# {: ]* K% J: U% e* T6 A
7 E7 d0 j# h8 c# g( q& c+ d
( z) v& T. j `9 {! m. g​3 m5 t2 D: j/ o D( Z. l# V
$ ^: b" I) Y* X+ n# c4 k0 B, {2 \3 ?7 d9 Y9 h, x' r
圖11
% X' g8 N4 ~( ~) b! N0 B5 {$ M" H1 f/ \. S7 P/ ~4 {
4 {* D! [3 g @& Q6 t/ S編譯和仿真C代碼
* I' r# w' L8 a; e! J; n8 t$ Z( i5 f4 w* w
仿真程序位于工程的test_bench目錄下,用于驗證src目錄下的HLS工程源碼。3 r# v; [/ h1 X/ U' X
導(dǎo)入HLS工程后,點擊(Run C Simulation)進行編譯與仿真。
0 ~; b% y+ N& T) z! e0 u3 T( n* N$ x! {7 b2 \5 X) n2 `
9 Q0 s; B+ v$ i4 q* o. Y​
1 }* Z8 k9 V! [' X圖5
* w# P# j& u/ b# c: L
- Y! J8 H* b! K- ?5 G
4 x1 c' Q1 R% G& A9 w彈出如下界面,勾選“Launch Debugger”,并點擊OK。& S9 i) a% c7 k0 T* B0 D7 f2 k8 r
8 l2 l! D* G, X% o: u" |' ]$ _" l
! p& V' B- h) l& x+ ~, u
​; x1 o! l* V& f, u/ J3 y* y! y% v
圖6
+ t' k1 X' c# ]1 Q
- j ]/ H5 K2 e0 F% K: E6 s
0 r; r7 K" C3 {9 z* }) V編譯完成后即可全速或單步運行仿真代碼。: ^5 x4 Q7 d( J" K4 C; m2 b
​
4 J! W$ o2 O$ b- @1 e* s圖7
( o4 \) J, A7 U* Y6 |# ^0 `1 F. T1 y R2 ^
! I, x! f0 R/ Z% P% d6 L! A, B6 p+ S8 h* p$ h
IP核測試
4 |, [ }) _/ s8 W% C; N0 \; z9 X5 G* i' Z, s
進入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認已添加待測試的IP核。
" v' j" I4 @3 P7 [4 W! J- _( J W: _# Q
' [$ S- B' B/ ^9 h1 p​9 V1 ~8 w0 U# s4 W% a2 }/ z$ h
" U8 y. K$ T9 S3 |0 S
! S. D, k+ N4 r. y! O
圖17- O6 O4 b1 i0 {! D; o) O$ A0 G, V+ L
如需自行導(dǎo)入IP核,請參考如下步驟。
+ }) Z& W+ I9 S* ^0 ]. v* [* z2 @+ l- ?1 V( G( u3 ]
* B1 X) g+ M; K
(1) 請點擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點擊OK。
. d$ V( I: I; _( Z1 H$ i​0 [( [ b9 I% ?/ L
: \6 ?( j0 P2 w! J# f/ ?" K, O) V9 J8 `- P0 `
圖18
Z2 |1 r R* V8 b; F# r( {) ?1 v​
6 Z6 f5 h" [6 [& L圖19
5 v) x& o6 H" |(2) 右擊“User Repository”后點擊“Refresh Repository”,即可看到添加的IP核。
2 E: y1 {9 S \2 g( ^2 ^4 f; L​) c6 v$ E1 y8 W, D# T
) e" J# j) q9 [/ `. Z
- b; v1 o" [% {% N" u. I! \# L
圖20
! l6 r% Z' e- |/ {, r0 m& P% c/ q3 I​
6 l6 D' E+ v5 s% e圖21
]' F/ b8 b; M$ p9 q, V' g9 K- x; v. ]3 s& a' g
8 Y/ A" d. K! {. e$ l; ~(3) 如需添加Vivado自帶的IP核,點擊“Open Block Design”,在彈出的界面中點擊,并選擇所需IP核將其導(dǎo)入工程。+ V2 f# ^9 V# F
' _& n- u6 U5 c7 S$ T2 m1 g M
0 B9 J5 O7 ~2 W# A% i0 \& u​
( \# ^+ l8 W- Z# V" B5 G/ i
) X; n- m7 L' L) E6 T3 ]
/ y4 R5 D+ _( {( H圖22
/ m' c: B8 z/ g8 s​! b: F' L- U2 G5 @* x
圖23
. M" g+ n6 q* h6 m點擊Vivado界面左側(cè)的“Generate Bitstream”選項,在彈出的界面中點擊OK進行IP核測試程序Vivado工程編譯。( `$ F: T- F( p+ S6 p& g' O2 [
​0 V$ R4 @4 b$ m: p6 r# G
" k5 p$ }# N$ i u. W& e
: r& y2 O' t# K' n9 J2 @! r, W; ?9 j0 R i" y8 G4 [. j
* c8 Y% ?% {* x; r$ Y/ G圖24
/ e9 c* G% s7 v1 q# b7 S/ O# ?. o. p; c2 I8 x' M
" [, d( R* P% v, B, f​
9 w* Z+ i9 h/ I' u: o* w; |9 ?圖25
& U8 l4 H" [/ Y) E! X' I) K: |0 v
: z% \. }) }% x/ Z$ o3 R( M0 S
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。- ^" J9 R- m: ]7 Q( [ M6 K) x
/ M/ t" p. @5 _. T: _9 R7 B
" ~/ |+ V0 N5 k! s2 U/ y​( `' Y; y. a3 W/ x% N1 r
0 S6 a" a/ v5 C' e( c
1 T( U# T) e% q$ B7 f$ ~圖26! l) y3 l; i( G6 r$ B, u( ]. U
" t. U2 n, {$ r4 r% b
( }1 ^1 ]) D7 \7 a請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進行閃爍。
3 d& j& ^& y6 g! _* `# {3 CIP核封裝% X) ?! L3 `) J: D
I N6 v' @ M: d綜合完成后,點擊生成IP核。
6 U7 |( M* y: j. T" Q9 h4 ~# X& e​
* S* o" m1 u& b7 O) a
4 ~+ h5 m% q/ }6 V' J2 q; t# {7 ]4 Y3 D" I7 }2 H
圖127 l% F: f" B6 q6 J$ U6 g
2 ~' u: w5 F9 `9 n, s
6 `, A, a( n0 y' g3 j3 w. p9 A
​
8 |2 U4 v% I0 G& B; q圖13
! L h* u) C' ]6 l2 f5 `​9 f5 U X7 b; Q, u
圖14) V- h, N7 n6 E4 {
運行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。' e# J1 [( x$ j
​4 v: V9 m) w' M! Z
$ `: i; _8 k- |6 l9 o# i8 u, o3 _+ P4 E
圖15 n" x- a0 W) c7 t! V# x
​
& P% ]$ t$ p% B7 h- |+ V# `圖169 S) L4 b6 s' c( @2 v
7 Q T( J1 Q& T1 `% t7 y9 K B" u8 p5 q k
l 更多推薦4 J! ?& o+ C4 T" ~
0 d. s! X) K$ i7 F
​
6 t8 W" `" |) }5 ]- O. j% Z% W
0 U: g9 O- ?! ~! H8 k$ E' ?1 C6 S& A! I
圖27
: t( ^ N: x8 w" M. X& J) P
& [+ K5 s7 F% q" ]. a7 U) f |
|