|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板, V7 n+ N) R( c- d% v2 V0 w1 w
- v/ n; o! M6 n& J0 ]6 Z0 i, a& x8 }. q7 C) ^
! b, J* f \7 D* O# L, W+ r前 言
& E7 }5 V% b8 n0 [
4 [( H6 Z- H- D本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。+ Q) B* m) ^7 X/ L/ m9 p
評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。) u: s. t P& H4 T; j/ b1 r
2 {4 T# Y: l9 U8 O [( c2 s
+ K& R7 G- ?5 o2 y/ T# p1 N2 A8 L0 |8 `
$ R$ m/ u" W9 `5 w9 A​5 X& l0 o9 p' z9 i
- N; W/ Z- g, N7 U! v1 g$ ]/ B/ W: Q/ I% P/ }
圖1 TLK7-EVM評估板
, S- q3 B' w- N' d
* W6 F- R7 p& B8 m5 Z$ b3 B; G, {+ d' P4 p1 N
開發(fā)案例主要包括:3 I& X% T: m" X; V
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
+ p( b8 u& z! {l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
$ t8 H! _; A) c4 el AD9361軟件無線電案例0 q2 ]+ H) f9 G6 G' E+ j6 n9 ^( U. X
l UDP(10G)光口通信案例% F1 N9 a3 o: ?/ h( L
l UDP(1G)光口通信案例
* F7 Q: y; D7 e' Q2 K$ v- U( Z3 |, ]l Aurora光口通信案例
6 P% e% D; }- |# bl PCIe通信案例( B: {( X& |) b6 _4 O
l 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
2 h' b. Q' ~, t4 j% y- W; H+ _# g
, u) E4 @5 a) T% w4 W! i2 @# h" @; _( l
$ B/ k& E# a- p. S
2 t' q5 L& x5 [
本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。( o2 p6 d( p. Z& }5 J0 M: V* _
Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時間。0 G9 @4 l; }* p7 n4 s. b
8 X! ]# e1 v o7 R
* j/ a. }$ }1 z r P5 gHLS基本開發(fā)流程如下:
3 h' s" Y8 O9 f; j(1) HLS工程新建/工程導(dǎo)入* s/ X! _, P& e' u% o
(2) 編譯與仿真
# J r* o- ~. E8 r" o(3) 綜合' S+ l. I" T7 x; k, p. p. u: c$ D
(4) IP核封裝! D# L3 w- |: U/ G& C# j* @. h
(5) IP核測試
, m) c1 Z: ?7 f1 d" I2 F8 Y! ]. x
% D/ @' T7 t) f9 O ~- y. [% f' F6 o
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。
7 x8 Q& T6 L7 Z5 J7 ]5 _7 p3 I. A: k2 I n4 g( X l
- d- w% `+ {: g# ^表1$ d8 i" U# f+ J) t7 A
hls_ip_demo) ^# T1 J3 L# l5 p# w4 J
| bin1 x2 M7 ]$ B8 }5 S; S4 A' K/ O
| IP核測試程序可執(zhí)行文件1 j, n3 _- q, ]- R: D9 \
| project" B( N8 ^( \9 K& {7 i" J& c
| IP核測試程序Vivado工程. h& r) h7 L. C1 |7 p! }5 ?
| vivado_hls
7 O+ Y0 E# {4 ?/ L! B | ip_package
+ C$ ]& t; w) \2 M& l/ s | IP核
. Q" w$ c O1 A$ p3 L( C) l# T) v | poject
% V' k: v( r: \( V0 `* l | solution12 F* Y0 I0 `' c7 G# e! B
| 仿真方案' F+ W: \3 X/ }# c% I
| src
4 V7 o9 }, z5 g$ I0 x) @" i/ D3 L | HLS工程源碼3 f) X! @) N( `7 j, I9 l
| test_bench
2 f. w9 h$ Z1 d: R; P | HLS工程仿真程序或測試文件
) l1 G" N0 d/ y8 i$ b" N; H | vivado_hls.app
E5 p' Y k" e% Q/ }% P9 \* ^- { | HLS工程文件 ?/ Y$ V1 N* K& j
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。6 j" @2 z- V. s. v0 l& H
4 F: M! m; Y F; ?# @( a( n( s
# F8 X [, X+ E* J2 t
! w& o6 ~( Y+ h! |& x
0 I, N9 S2 K$ ? z HLS工程導(dǎo)入
8 K1 Y7 m/ Q4 l, s/ a* S/ r F
+ `3 l$ k: X( `% k1 }7 O雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點擊“確定”導(dǎo)入HLS工程。
. s: ]. i0 y- M' [2 q1 B6 s1 p! Q9 U( N) g/ n
8 k# |+ W* Y$ C$ K* `' T( P1 u​
# U( y- ~ b, u/ j圖27 ] F9 j4 \( i/ k
6 }1 m$ V/ O7 A/ O4 }) l$ h( s
! T! G- L3 t, h
​7 L" M7 G0 i! [
圖3
* C+ ^ A% ?' P2 Q( [& w% B4 c' D6 B8 t; I% g; r/ D2 ]
# G! h" v* w- \5 j) _8 k. Z( ^# A
​
A5 `# }1 h# x5 \/ C$ p5 r圖4/ s7 b" L+ a1 j6 B7 A- h) i
亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。
6 e. \7 p2 m, u u3 e. s8 X1 a. N; W( V5 i% k# U* ^
. c' r& c3 r6 ]. l U/ w: g- O$ i- b- x$ V
- e* M' {2 _" _4 J+ Q& t3 e% K3 N) g$ m 綜合
6 f K% K3 y/ m3 f$ n4 m$ W \: I& n
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計,并生成綜合報告。* c$ o3 | P8 W% b+ e v, }
點擊界面右上角Synthesis返回至工程界面,然后點擊進(jìn)行綜合。
* I% F0 F0 X( S9 q
: U% X. x4 L/ S0 R$ X0 S/ \5 P5 ~" U) C# `& i: J* D. @. h
​
: g2 {# y( j3 O6 y U圖8
+ u% ~0 G" J3 K1 c$ |) X+ R8 y- a3 f7 p2 S& X5 e
$ y7 [1 H, @6 c" G# I* ^4 h. S1 _
​* Z; x0 ?% l+ r& t% h6 a; o
9 K+ ~6 `- n0 T' k4 |
! _- J, p- G6 X: c$ e/ F
圖9; p) b( {: Z z8 k$ P4 I
) s5 [. f9 q! [* C' y I# x
. E; e: Y" R1 L- X& v* C9 ]綜合完成后,報表文件將自動打開。5 V0 B( z2 T6 Y% H0 `9 {
- B* } [. T% u% R y/ G! s; Q9 g S+ i0 R1 m
​, i2 [ q$ L: s5 Z5 P
圖10
' b9 f& u7 u: D2 c' w: m. E% ~6 K3 O$ M5 s6 d/ u/ z. A
n; R0 {% y, A6 `; h
通過報表文件可查看本設(shè)計的時延、資源占用等信息。
) l& a5 k' c' ?" m6 r5 N+ h
# t6 W. n0 k3 b' I! l' d5 s1 r! z ?
​
+ c) S- Y) m8 p% t& E
$ V# R) z. g; { v( ?0 A. R
" l0 K* ~- ?; z/ W圖11
) K+ J5 G0 I8 |/ K4 e4 t+ }: E) x! |; N5 J
1 R' o0 @5 B) @! u
編譯和仿真C代碼
4 N) n0 M3 s. U4 X. @4 e" U9 l5 {* y w2 w' t' D9 L/ y" N3 P
仿真程序位于工程的test_bench目錄下,用于驗證src目錄下的HLS工程源碼。
, i6 F! \6 C; q D+ K; ?0 N# o導(dǎo)入HLS工程后,點擊(Run C Simulation)進(jìn)行編譯與仿真。
8 A* u# R2 b5 u4 V# g- C' |) Y
# _9 r& G. @$ b, f: v2 l* J1 D3 y
, y1 I J, a% @% h3 x2 \" w​* L _+ m/ Q, S+ g, `% `. G
圖5! w) Y' q" t% z% j1 `0 ?% V
- F/ u1 g# k6 w$ p' u5 z& c" W% \8 k7 u
彈出如下界面,勾選“Launch Debugger”,并點擊OK。
: |" o+ s, P! P. [) v
S+ z& ^! Y3 R3 R2 F+ I) F" h* ^
4 [3 t1 i1 q$ n​6 ?% A+ J6 d4 o0 r; y
圖6
& R4 f7 Z& A& m" D$ o
! H) h7 Y4 u& }* [7 q5 H$ ^9 ~, ]- W, O7 y
編譯完成后即可全速或單步運行仿真代碼。) t7 B: K* D) Z* g a' A
​7 }' d% V) V/ B# X, A
圖7
0 _# `3 x1 A$ y2 l ]' p& u5 a
' B @- R) Q% \ c5 h/ A" H- S8 e7 s( S0 [0 w8 Z, A1 d# t
7 i8 M' _! d( _0 @9 T IP核測試; z. E) H& Z& U6 n
0 C1 j/ D/ I, E1 x* p+ i進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。
$ x: l/ E, U% C( N5 ^! m0 l3 {( P' Y) [* N
! F# O, e1 X. w* ?- `5 v
​: K5 o2 n% M. k' y0 ^- A
/ [- D- [' D% g0 a Q X Y
# F1 j3 g/ U" [% h, {圖179 a+ i! W5 o7 O. `3 i: G4 m
如需自行導(dǎo)入IP核,請參考如下步驟。
, W. _; {4 P! [/ W6 @4 v& i& {1 K, b+ X; M+ k2 B$ K
0 S" s2 g' J2 R5 Q+ I0 n( B(1) 請點擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點擊OK。
+ A4 o+ d2 `$ i9 | b e! b3 i​% ^5 o. _: e: f- e! F* R
8 w3 G: D5 E/ q# z: q4 F1 Q
( n9 W9 E3 R* s2 ?9 S圖185 N( s- y- T$ O7 _/ d
​
' D! A0 U4 W4 d! P& h0 G0 K圖19* E# H6 p6 b. s6 k/ }- B
(2) 右擊“User Repository”后點擊“Refresh Repository”,即可看到添加的IP核。5 y8 |( Q3 h3 l+ F: x
​
4 S7 M* b/ ]( h2 r/ [8 P5 [8 V! @2 O F- e
6 O. |- b% S) i3 Z
圖20
" I1 C. ?2 T% P7 S2 E% u​
1 d2 ?" A U% r* S. Y7 P$ O2 c圖218 a5 B# I6 p; Z+ b7 \+ J
' O' v/ o# ~# |+ ?( K/ W4 w# y' l8 j P* [- ]+ s6 r! X; {- t p
(3) 如需添加Vivado自帶的IP核,點擊“Open Block Design”,在彈出的界面中點擊,并選擇所需IP核將其導(dǎo)入工程。
8 B* }5 L) ~: D4 }2 ^5 a
: }& X5 u$ G: s. F: G( q5 U+ F# @- {+ V5 d( P
​
3 {; H3 a! c* b' m! V1 m# V* v
! n: r9 p; p, K R* ]% P8 c% {& E3 j( v- T
圖22
4 v m6 z5 R# o J- f​
* v# `7 x, W/ z& o' J4 i' L圖23
" F3 l3 l1 o: Q7 l4 ?點擊Vivado界面左側(cè)的“Generate Bitstream”選項,在彈出的界面中點擊OK進(jìn)行IP核測試程序Vivado工程編譯。* N k8 L9 r5 F, }$ y) A y q
​
" N/ D- g' J& l5 B6 X- a
: U5 n! J" y( |/ \# ]3 U; I: w2 `' z0 Q( a8 k5 I) b
; o2 ~' o" a; k2 c$ o- a8 l
9 K$ d9 | d$ @
圖24* w- o% T) X+ w: w
" g6 c0 @2 _7 x
# S o- n* K& w​% N5 m- @, @& o5 ^6 C y
圖25# Z8 s( m! G$ O/ a
$ J& i" {% ~7 K& j8 ]$ S; V* i2 `' X2 C4 _, G5 U! Y
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。: s S2 ?/ N1 s9 h1 C
. q; q7 E- W0 k
% N$ F0 t4 B! j; d4 T
​
5 G$ |' \* x. A1 [5 h, l- Y4 e3 S# d3 h1 ~% Y( h
1 }0 ^1 J7 C5 r, N2 T4 A圖26! y3 }0 L0 S! @* w7 V1 M+ G' b4 o
) t9 n- `' w% Y' o5 E) Y" R7 ]
4 _: }* c; l6 N+ l( [+ j請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。
, ?. @5 e& v7 J* `IP核封裝9 |; j$ _' |8 ?4 }3 N& y
, g. S6 S! L! o9 r9 C$ J綜合完成后,點擊生成IP核。" h+ k& ]# Z, c8 {0 m+ U7 k
​/ i3 S' z: U/ q$ y( ?% o
# D! [3 t; w- w/ t, S* \' ?6 @
- ]: q8 e' f9 s0 c( Y5 c+ w圖126 g' H! K" F( d6 U0 k
( ]4 Q* k+ W1 d3 f$ H/ T }8 _3 }8 ]9 t5 I k
​
, F' f% Z+ @- R, v5 K6 g4 l: Y圖13$ h/ S& @# p+ h( l+ X( g0 a: b
​
+ e2 `* v8 d3 Q& c$ J4 e圖14
# E, q! E. j# S% e% x) Y運行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。" V0 O* a3 ]; l2 R# y3 a4 }
​
- J, e* }- F9 m$ ]+ A" x1 X) s, l* L) m. P H& r
8 Y% c7 h8 v) L, _4 k; z圖15
. M5 B# _1 q: W0 f9 C; F8 r​ d+ W; F$ R I7 X$ Z3 g. n2 A! t
圖16
6 z& k0 h* W+ ~. y- }4 M k# t5 y( u7 b7 j8 X- p' f
7 { H- Q, h) L& Nl 更多推薦( ]/ b5 r L" ^6 e O/ A7 p9 h. d
+ a$ j$ s5 j9 T. K​
, k# k/ s8 U3 |2 }" D- E/ ~& v9 E
& ^% {! }, X# q8 L! l m# f( ~# r) l
圖27+ q& C7 M) j! q$ r: l
" v0 f. ?" g. O9 `
|
|