|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板3 V% M. a1 D/ A2 g+ ~) }! G
2 ]: L8 g& N0 Q$ l* b8 n m- s2 N# F
7 U7 e( i7 k Y1 S
7 A7 | z A/ |7 j; I! R前 言
" F2 F2 T' a$ P9 s' ?6 D" m5 N
! K. {+ W# q4 \本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計(jì)的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
: g$ v( o: ~# ~; }% E3 n+ p評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。; I; }. z, Y1 Q
: F( d) g8 ^" _# j6 v8 u9 ^
* H8 [! N# p2 t% K' x; R
i/ Z* L$ z( M1 M$ F4 [9 A' l
1 G7 Z, z8 \' I+ K​( j% I4 ~" {3 |- A) |
. d# O) B- l! L
" I, F* p# w. K) X0 e: I+ K: {圖1 TLK7-EVM評估板
3 A% J0 Y4 V7 w% i" ]( `4 N: e8 v0 f2 `2 c/ L* n# y( X
$ n Q5 }. c% o5 P+ A' ?開發(fā)案例主要包括:
5 j: L# q1 w$ ?! _2 A( r3 El CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例) A3 H( F, @ Y, ~9 u! \
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
' s! G" z5 z' X7 `0 E% ~9 }$ nl AD9361軟件無線電案例
9 e) {0 ^4 N$ v" A& i# a3 o8 Zl UDP(10G)光口通信案例5 @/ }' c/ u9 E ]" W+ u/ ?
l UDP(1G)光口通信案例4 @9 ]' W, U/ j; g, R, l; ]
l Aurora光口通信案例& [/ N6 a0 n W2 L7 Y- n: e
l PCIe通信案例1 Z% y# N# ? |+ {8 h
l 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload& f! |$ ?& c) P1 p; C1 M
) d+ ^& I0 y6 V8 v: R8 V( o
9 E3 u* \) u7 {; f7 c, Q2 n7 L& {; x8 H4 T9 B( l
# N9 _. r9 S5 B# x* w6 X本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。. T; S4 i. c4 _8 n
Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時(shí)支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。
, G% r# ?7 t; v; Y% C$ [ R: w+ H2 _* _( N9 r Q; n
3 t2 R/ J0 k7 G3 C# l3 |' EHLS基本開發(fā)流程如下:
) {; f: u& A9 E. g(1) HLS工程新建/工程導(dǎo)入; }4 y t7 Q8 B. d8 X" `
(2) 編譯與仿真
' t; A7 G3 M! L" z(3) 綜合
m5 M) X7 O1 t, a" ](4) IP核封裝
/ {5 K" M2 T9 r1 z* j2 ]& x(5) IP核測試, E" S9 b$ t, q
& r/ E1 n' n4 I, }3 j0 ?/ z9 r! y6 X
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。
: R4 K2 ]: t& f% C' ^/ L$ X# l I6 x: o0 O
" z" n& Y# C, m, s0 s( m3 d. K/ l8 S表1
6 W) l! H9 t( {; Whls_ip_demo2 [' F1 [( z' R+ S+ a
| bin
1 r) |5 m7 Q# c6 x | IP核測試程序可執(zhí)行文件
1 Q( Z- y- I, P6 v$ D4 Q | project+ }( Z2 i0 D% E
| IP核測試程序Vivado工程1 o9 j# ?& b4 B, P. J" z0 ?
| vivado_hls
) b) l+ h6 `/ A* W) q# P | ip_package9 J0 b% t ` T
| IP核" v+ m o) a& q
| poject
# K4 O l$ |$ _; ]! M | solution1
% `. \5 S+ G0 I | 仿真方案6 Q5 C7 j3 j) A
| src& B4 Z1 v l! h4 J( \8 o& G2 {
| HLS工程源碼
: i6 B3 r& e" G8 o: v | test_bench
- D& s; [+ O( F0 r) I. u4 h | HLS工程仿真程序或測試文件
+ G7 l6 k8 k+ l5 }: I7 P- ?+ U | vivado_hls.app
/ C& r' p) |4 R8 n | HLS工程文件# ~& ]. E/ l- U) A
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
* m9 p! F6 L% n0 b5 ]( L6 L
0 ~9 V$ }3 _) Y. O
( |. n% t8 z0 Y3 V; V
7 ?6 r, _. v6 r6 }$ J* X+ d
& j1 H8 ]; t8 `" r# L; t+ j; b* W HLS工程導(dǎo)入4 a* ?+ f0 L- q X" [
8 |; _! O6 f1 e' I雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。3 ` k3 |7 v$ S0 C) }6 ]
' b2 A" n. R2 ]4 R' {# y+ u2 {- V: i
​
# Z; W" V6 k. B# [. D圖2
& c3 P6 p" N( Z+ D; {# f |- W
( b" |5 ^6 r3 N" v
! j% r _/ B9 p8 ~( [​9 @! n* ?3 ]6 C; S2 W# a
圖3
! G# q) {! L8 `& p! c1 z- A2 I' ~. e; W7 v7 u
/ _: K7 v) m. z' j
​: `. y$ b; J& a& S e: A9 T4 z
圖46 H3 t# z+ @$ s& U9 g# T
亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。
/ |( o) o5 E0 x2 C1 y3 o1 D" E& @' Z
2 `+ L p0 A4 f, g, J+ h
' r8 {: }( b G) L& p' D2 S$ ^7 r: l; o9 D% |& S D3 C9 U3 A# [
9 |# ^; B) v( T% i8 f- x 綜合- b3 |. Z* C0 D* X% q4 E3 U
a/ C) L7 N7 ]" Z
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。
* F( A4 n1 |, n! B0 l點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。- `# l: l. W2 q" l3 p
2 s: Z4 ~' ^! l; _7 k% w. l8 _0 R
​
6 F8 [/ r: _3 w, `3 @8 _圖8
) h5 g8 |" F) \4 \) ^4 G0 t/ {, c% o
( u' a' e6 I p2 s
​
2 I( G* W1 x. ]9 n- T) a8 f) j- g8 `; \" T+ _
$ T) W% y9 k/ A/ ?8 W: J圖9
, Q& y6 y) \, h: f0 {! _
5 Y0 m. R8 @. N1 k6 H4 p
) c% u$ l0 Q( @9 p綜合完成后,報(bào)表文件將自動打開。1 O f& N7 h7 ?0 h
0 i: M7 _, B9 W8 \
0 Z, n8 ]6 }/ ?8 F% c5 V4 f​
q" L( B, T: M, `圖10& j* |, Z/ o% x5 s) U
: {! a7 K- g: _1 N- {6 u! I5 |
* J B4 P \0 c- t
通過報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。. O4 L# w0 i! ]. ?
8 w+ b3 q- M8 s/ s5 Z0 h3 j6 h
. ]( ~0 H6 D7 J5 T2 X/ E, H​
) D7 i3 l% Y. Q6 T, |; R9 `/ y, g0 g! I" F& O* c
) v) T6 B, V: _ Y: e
圖11
: }; s6 U% S- r$ u0 m/ N
* o0 E# p ], b" }) M q1 C
9 O0 y% U R5 a5 I9 i4 U4 b# j9 x編譯和仿真C代碼
3 L& n5 v( q3 ?! S+ \' u. Q8 Q. k
* I2 M% b) p8 t4 ]仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。. c- L2 C+ f; |9 s' a
導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。% n }0 \7 j4 A- Q2 E
+ O3 T% T6 x) X6 }7 \) J" q! n7 f; [9 _" f" b' n, U. z
​
$ C# C: G: D4 A8 |/ r% Z# Q. M4 B圖51 \* \) u8 C- r4 W5 ?- v
& M/ C+ Q6 z2 Z. ]
k+ y0 O2 Z6 m$ \彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。
; @' L7 ~1 |/ C; D0 X( t1 P9 _+ K& i2 g- U9 t
+ x) v u/ w# T _​) R# Q5 u N! R, I, p0 a
圖6' p8 l# ^- y9 D7 I; E0 n( Z
7 {/ ]9 T& ~9 _4 o: b
+ d B9 x6 ^ w
編譯完成后即可全速或單步運(yùn)行仿真代碼。
0 F0 p+ _. X2 F1 K/ S​
5 p6 x$ e& w( H3 o6 {" a" V圖7+ a Q8 _1 Y; o* S6 n
2 S* c. }: T- B. O' \2 e
. T( K' w z, h" h' f' r
8 F( ]4 b; L8 K+ ?7 k IP核測試
; Z" ^3 j! Z- q; x+ |" [: h* E( V. r: h1 W4 x) G
進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。
: h# F. Y, o$ @" s& o4 {; p( _) Y, v* S; O# j8 W9 X4 u% T0 y6 H
$ z- _$ g' Z* @
​
" a8 X0 Y5 e k" `4 K( E" Y
% ?' l/ C' K* {$ V; M/ c! u* e- G1 m5 h( i1 s; B! {1 U
圖17
% P* h6 a4 z, |& t9 n+ F7 w; m9 Q如需自行導(dǎo)入IP核,請參考如下步驟。
2 S- k8 ^4 k3 o, j" l
) [4 s9 f7 ^+ ^2 i
e3 R8 k0 l2 N! h(1) 請點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。
4 m! q+ r1 T$ ]% @​4 |; B( _4 k1 K( H Z
" s5 v! m3 k$ b9 a, m$ n6 F, J1 h
0 K/ Z# z+ u% U/ o" [圖188 \* R7 \% S3 z# I
​
. S9 c% p# `2 _! C K8 W圖19, P+ B* N+ u9 }- @. C0 J6 y, ?
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。
$ Z: H( E$ z A' D, R​+ D$ ?% R" _' J$ W* \* b1 X
9 M/ t) V$ n# }4 W8 K5 i) b
3 d3 d! \9 t/ X6 V
圖20
3 x2 O8 @1 r+ {5 C​( Q" k O0 I( Q: ]
圖21
0 t" M. @4 [- r
* x/ n" G& V8 _5 ~6 @" H
2 a) a' Q% `4 Y" O(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
1 A( ?( g+ r2 d% F6 t# u* M/ x9 @7 |* l
* ]% s+ n4 h0 ^: V
​. [) H4 E2 d1 |/ r% o
: s4 ~& M1 L6 |$ D$ O% [- p- m0 u; t
圖228 y+ Q; ^+ W( @
​
6 L/ u, z- @0 h. G) w圖238 j4 ^' Z3 k3 \6 t0 g
點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測試程序Vivado工程編譯。* b3 i6 A( W1 X5 E0 G6 ^ K
​( P0 o+ X. G. R( `) r
/ H7 G# c+ L) ~: W
7 f; d; y6 c x+ L0 ]% O7 B( {" Y2 P, f. J: {4 i) w K
. V+ M- B% V8 n: K/ U: f2 I9 N6 P圖24
& A: R: E+ U1 ~7 z& _& |( O6 l
4 k) R. L+ I7 x f. x( d# b
: G9 j0 Z! P8 K! N Z​7 i/ }1 x+ D! |2 q/ c
圖25* S- D' R- m' q1 \2 g8 Q
. C+ V1 _* q& }. j
" z0 f3 Q/ p D% X
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
) o/ |* O- Y/ R1 V0 }4 O$ H- ]9 n6 n0 f/ Z: l
4 [0 C- T% ]6 I
​
: q6 y: \# `9 y3 O" Q" w t
; l' k0 s' X2 X( c/ B, H" c4 R. z
% c+ I' B5 |, I2 r圖26
) X% s5 m, L$ _& t, X* }' [! l# A* j2 m
$ g7 }. J0 a2 }- [. ?( k) Y請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。
7 x) f2 E/ S" ~4 l( R JIP核封裝% h9 m5 j' f1 H' f0 E
8 N" F0 F1 b4 t: e$ X1 Y
綜合完成后,點(diǎn)擊生成IP核。
2 Q: U1 \1 n D' m0 R; ^​
) z. ~ F9 _- P0 `; [* R
+ e) X; u1 w% \& I4 q# [3 a% q4 N* ?' `
圖12
' k- a+ A6 T3 _6 O! E; N
1 D' K& E7 d; m6 Z; v
( o) o4 ~5 }: Y7 }​# D* N, P/ d1 [& ~
圖13
0 U' Z$ ]3 {* |; K​
: Y! ~' ^; ?3 u+ k圖146 i0 e! s2 Y4 I
運(yùn)行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
2 ?$ S7 A. G- @+ n5 s​& T7 V( @, u3 e
- u2 F$ U0 c; R0 A% s9 B% f9 m; j- c( g3 W0 o( q) l2 U& O7 |- ^& a
圖15
& P) c2 ?0 O: P. {7 B( ~0 f; h4 N​6 b7 h, Q& i) h- W9 T+ u/ L
圖16
; v1 Q& b3 _ d y6 D1 d! b' x
: e4 M @% e( u- x$ ^9 Y" p) f- W1 ^$ G/ x
l 更多推薦
# e, @/ f8 A8 ?
8 M. e& @2 M! z4 P​: y& ]; `: j+ h Y E3 v# v+ l& L
& c! P! _2 _' i8 `8 _
7 S% x; m w0 }1 T( |0 F' \圖27
% C. }3 h% G8 D, j. Y; g) y/ {" c2 ~& S* s' ]0 a8 e G* u7 E
|
|