|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板& h R, X" j" J8 F5 I
# d0 r, j, q; f1 W
% w' m0 L: K. L8 P
6 L* _! }7 ~ |
前 言2 ]- I+ ?; F2 E' ]
* O; f) x+ r5 z本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。, k4 Q( k7 J8 A8 K, s0 Q
評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。
& i; u# X5 R, m2 ~* W1 e2 l- }* r/ E4 a- S: a, W O% d& L; g
( K& \; s3 g' K" b% D0 G$ X4 H8 g: k0 D0 D* ]
; D7 Z9 L( Q7 q: u, u# D' t​8 D' Q3 n' K6 W. }- a- K
! U# V0 }% L3 ^; ]9 ^
. h7 C& y7 y6 S' Q+ w: C" ]圖1 TLK7-EVM評估板# ~. H+ i5 Z$ F* R. Z/ k0 k# x
; N! P6 a O- o: Z& Z8 T2 k' e. u
# h. W0 C; {" V9 e3 m' C9 m開發(fā)案例主要包括:* l4 N" a [4 y7 i# f, o/ E
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例4 T3 p* ^" x7 }6 R0 }4 {+ }
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例" I5 y2 R9 V% z0 p3 x
l AD9361軟件無線電案例
- A* `( z( @6 V0 V- Al UDP(10G)光口通信案例4 c6 T5 k8 I6 \4 p8 S
l UDP(1G)光口通信案例5 }( x v# s; ^7 D+ V$ l4 L7 `2 f
l Aurora光口通信案例
8 o- `6 \" S; P8 L* }/ N; G1 z" Ml PCIe通信案例% |; m% \3 c: Z) Y9 N- Q
l 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
D5 k0 h$ D, N7 T9 `2 V6 ?. q5 x! F7 P
4 u, i) ~% y7 s+ ~) b. x+ ^* a( x3 R- H" s6 C2 ~$ ?- q% b7 [1 ]$ `
[% I, Y, r) Z本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
L( O8 a/ k+ X H, ZXilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時間。
, a$ m" i+ ?0 k) f8 R7 {6 A, ]5 Y; ~( _# Z
3 l* M+ x$ V& m, ?- w# m2 u1 B
HLS基本開發(fā)流程如下:
; U z8 ~+ D+ ` t. N+ \(1) HLS工程新建/工程導(dǎo)入. E4 e5 {% c5 m. Q) N0 r) {
(2) 編譯與仿真# J7 U1 F4 L' U( X
(3) 綜合# t( L. e; X/ e
(4) IP核封裝
/ B# ~* S) Y) c* ^* J(5) IP核測試
# |( ~* ?8 E, b& T! T. `# u) h3 B9 [
7 K1 P6 p' _, l* U+ x5 e
9 b' @ b2 W: s, g. T+ M7 b/ G9 FHLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。) f+ C5 {8 h E
* A, D- u. E ~/ N \, N
; y" g2 ]4 y8 E
表15 z) r2 q% Q! A8 r7 A
hls_ip_demo: d% y9 b! \+ L- p4 O/ y
| bin$ r. T/ s5 V- a4 F6 W; P' S& \
| IP核測試程序可執(zhí)行文件. d& i: E2 i: J: S7 ]
| project
- x0 {" Z% K! o1 v | IP核測試程序Vivado工程4 r Z! R/ u8 L( y1 E1 L
| vivado_hls! N+ I/ ]) f1 l. L. j6 a
| ip_package
# e% ]% l0 G7 T z- G; Y* ?0 ~ | IP核
9 j! V7 U# m& _8 _0 O2 [ | poject! D }. z2 c1 J" j8 o& Q
| solution17 {% A a; x$ X
| 仿真方案
" t# G/ S6 }9 O% O( V4 U/ Q | src
2 r- R% O. y6 G0 I: G( H' B | HLS工程源碼; I2 f5 G. ?- ^: b% F9 X# c
| test_bench1 _0 i4 u$ G6 C4 f2 x
| HLS工程仿真程序或測試文件
- r3 N; N W' p# A0 I- z | vivado_hls.app& ^: i% f+ `, i2 }/ Q
| HLS工程文件5 P& G6 x: g: S
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。8 i& g- M# _; ^
/ m& V' Z, |2 {( Z
( ^+ R! ? O0 i6 h: N8 Y8 b0 t h" `2 Q/ Q
( Y, h8 c# |' q+ s- X4 R: H) [
HLS工程導(dǎo)入
' Y7 h- o6 _, p2 P! u8 U- b. z- w" _0 v4 F( @. Q8 a5 t8 ?
雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點擊“確定”導(dǎo)入HLS工程。
4 p* ]6 P& S9 T. m! {7 u0 z6 c# y6 ~
( P7 v6 ]& A: O' k3 L7 m l
​3 ^+ d/ W/ g$ Y9 f! j
圖2
% t+ M( h/ ~' r6 o) c+ L- |) S ~1 G3 E6 h7 s. ?* B
9 D9 p" F: g, ?​( K% X: `$ U* [( Y
圖34 g: |6 o' Q# H
* C) C! x$ H% _& }: n, a& I0 T
( Y1 ^* d6 ~( {​9 _0 \8 z, H' f5 \. L: `- w# ?8 }! v
圖4
1 v: x( B! q) L' O亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。8 k2 _$ c4 [9 J0 Q& L" C
: Q: A; q! D* O/ R( {' L
- ?& j, y) Y* f: D _! ^ Q1 e3 B6 R
. T4 i# w4 D( d) t0 y' x4 B. a5 E- [: [' K% Y* H5 z' w) m+ s$ Q
綜合
0 u7 N C" [8 |2 u
; F% n9 A' \6 \' G, m7 z- L本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計,并生成綜合報告。# a0 Q% z- o" o+ R
點擊界面右上角Synthesis返回至工程界面,然后點擊進(jìn)行綜合。
J9 C( g2 f+ v" p
# E: s! j4 S4 w% F; e% D8 G0 _) u4 H# O
​
% J6 T) r- {( a" m: A; g圖8
+ n4 Q7 [ B- `. G3 v2 P# W, B: p/ o
1 v' P* a2 @( p! O8 Q
​
8 `, d, n5 g& f6 v$ v
1 E; ?6 Y& h8 ?& c- d) }! j1 U8 S) Y
0 Z" x3 }/ A9 A: y- P- ?( H% ^ w圖9
( L( j) c( d \9 @+ c8 `
; H$ Z; m! d9 B4 M
0 u# l8 ^# R4 o4 X綜合完成后,報表文件將自動打開。+ y# g( w4 F7 ^ N
. D- I% V/ M5 a- h" f* o
/ c6 u \$ V- n' g( e​% v; N" w6 l3 a4 L* L3 Z: I
圖104 I4 u# b9 E% W+ ^1 [
3 K% p+ o5 z1 }1 A
; z2 g4 j( {+ I: W& X# s; s
通過報表文件可查看本設(shè)計的時延、資源占用等信息。1 ^( w9 h7 z; F ]
2 G9 H- m$ E- B2 L+ |5 A/ V2 O
1 J. u' G- r+ u9 g​4 K& {- x4 r% X7 g( Y" L2 w7 _
- F2 _) h8 N- [+ Q7 H# \7 W
& M* D% `. E8 C5 p( m( x. ^圖11
9 C& u/ w j! @2 Y8 f
6 @; v( I8 Z- Q& R# c$ S; R4 X9 {! u" O
編譯和仿真C代碼
5 C; X9 D3 n2 c* }: T- c# K |$ |7 e" D& v$ Z; f3 c
仿真程序位于工程的test_bench目錄下,用于驗證src目錄下的HLS工程源碼。3 M6 f+ B* h- d9 t/ O/ B, R
導(dǎo)入HLS工程后,點擊(Run C Simulation)進(jìn)行編譯與仿真。1 G' N5 {3 E( e8 J+ C) G9 q% m4 i1 ^
) `8 D, Z7 H. N. M7 E
% i* n! W E. A8 p​. Z$ d9 L$ s: W$ ~. L; p' v% F/ f
圖52 b* N$ \4 e. q, d4 V4 q b% |) E
1 {! l& D: J; u0 P4 y0 |7 z& s5 t/ Z9 _$ e! D
彈出如下界面,勾選“Launch Debugger”,并點擊OK。
: m) M) U1 W; }8 l- s$ f# {2 C
( R5 S; S- W0 e; Q5 g. `% x% P) h# m- A2 C
​0 p R9 Q% O3 {& R2 U, c
圖6
- _2 R2 b* h; c3 k- d
/ t/ K3 L% [0 T/ k
" w. m6 G' [4 k編譯完成后即可全速或單步運行仿真代碼。
m* `5 l6 V% c l​4 T* ~2 ~) ? c0 U# W$ S
圖7
. `7 Q2 A7 ]8 i( H
y7 k6 y' |2 b9 r3 q" ?' O8 M3 v# b- o5 x
' | R; ] S8 G& N: B IP核測試
' u$ j O \- H, W9 D9 |- o! Q) d9 F9 R5 b6 P5 S
進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。
2 W0 u8 p+ G& K
' I {, ?7 P' ]. O* c
3 H: v1 M, P6 V/ e: A+ H8 S f5 r​3 g* Q0 J/ q/ M5 J L
. V* ?9 d: ^4 ]
8 V" F: m+ L- i7 @
圖174 m- _, s9 x: d2 K- I
如需自行導(dǎo)入IP核,請參考如下步驟。& A* J- `* e9 Q: f; F6 b; P
3 T8 ?1 K2 Y, S% L$ ?* \: b
+ w' b- U" H9 n8 S- t# G+ V4 Q(1) 請點擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點擊OK。
C3 V& E0 s- O2 i: B" l8 x; D​: G. h/ n) C# n4 o8 e" E
# c, }, i$ @! S4 c+ A$ v
& Q/ ^& H" w* J& S! }1 t0 \
圖18( F% r- i. l7 Q/ i# y) ?
​
8 [8 D! D4 r. q0 L) v0 V圖19! T8 f5 f: q& w
(2) 右擊“User Repository”后點擊“Refresh Repository”,即可看到添加的IP核。
- {% }* h) l) d+ w& ?6 T( n​
* g% G/ ]: i. B1 ~/ H: @" k+ t& W& { }) X5 m* G0 t# r0 i
0 k' f6 [, w& r6 f圖20- L* Y9 A* ?+ Y0 K/ }( q
​. Q# j5 [( x$ {6 H# `4 o" M1 @
圖21
. m) q6 y9 x6 E4 _; t/ r' \# k; v; z* i; a
" t/ X7 T7 {0 ^% D( M(3) 如需添加Vivado自帶的IP核,點擊“Open Block Design”,在彈出的界面中點擊,并選擇所需IP核將其導(dǎo)入工程。3 A2 g9 T, Z' Y+ b# x) Z
' Q3 r6 A5 y q
: q3 v/ m8 }4 a" G: n/ T6 L​, w7 _$ K( _4 W0 w6 H4 l8 S( C0 k
& v8 Y- z! m* U0 C. {6 S8 o$ C. m8 a; E, J i ]3 |
圖225 n4 n7 l. N& E% g, b# }) B
​
- h9 }8 {. T2 v0 m. o$ [圖23
4 J, H9 E' U8 V+ B點擊Vivado界面左側(cè)的“Generate Bitstream”選項,在彈出的界面中點擊OK進(jìn)行IP核測試程序Vivado工程編譯。# B4 t9 {' S2 J, S: E0 _0 o K
​% s: o- j% w M0 O1 Q9 V
+ c/ V# b8 u7 ^; l+ J. x
$ V: S9 y3 B6 u4 m- q1 e
- G1 X6 i% n1 W9 R8 P6 o* E
+ X: I/ P d. E2 V圖24
N8 f$ \/ e' u, M2 T1 A& B
3 f, m2 S$ i5 G2 t$ O
# ~6 f% J D1 ~3 s) T* W# g​
0 W# V# U% |$ @& ?圖25
* @$ D2 |2 ^5 t2 f' A. Z3 o. }7 A0 C! M. m; `" C/ H& |
, p. }/ K& N% F$ B& c9 M/ J
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
1 b5 H! J! p S+ X* w# G) ?) d: r! f
! m6 `- n p C I& U5 P& q
​% n4 y9 V, E) Z/ G( Y8 F
) X7 s/ Y* S6 y& H2 V2 W
1 n) j& L9 y( {/ e( A
圖26
$ v" d# R$ p" r. B
0 P0 p" K/ t, x: j
0 b0 ]4 o4 p) l% i2 a( s& I請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。
6 O5 \% l% P n/ K9 P+ ] gIP核封裝7 W& u" L; M2 }1 D( W
9 u4 `- ^ ~6 O2 x8 |" z
綜合完成后,點擊生成IP核。; i: L/ G ?6 F
​
# p- m x7 R% [
& @5 ]* E h9 X. ]" H3 O% T- h3 i) Q3 l
圖12
5 I0 n# t2 a' I( D3 I7 N/ H3 ^2 _/ E/ G
7 Z5 S- a# ` R$ t5 D
​9 H3 ?7 c& E. [9 V
圖13$ O( A- w G$ ]' s
​
/ W% G" p. I' ?- l; [: Z4 o# g圖14
" ?' ~7 r8 z H運行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
2 o: Q4 j$ ?* O+ S( N$ M P​
+ p$ n D( u' n+ `7 @3 T
3 A w3 _$ ^! f; W; ^, S7 i- {1 Q3 W# x/ Q
圖15% C* I+ e) d J9 q: O5 U
​. m' W( ?# U9 }. L6 l s5 v' u! c. ~
圖16
3 N/ c- L6 v: U8 W* x; a% ~' d F$ T% v# T
7 `/ D* B4 ?% F" B8 Q% @7 i0 p4 f
l 更多推薦6 P: T6 b! T7 _ Q2 K, ^) W5 \
4 a- a2 v1 @" P" i+ o3 W
​
5 |4 J! }# k$ J" M+ v
9 M, M- r7 m0 v4 z. u `8 f- N# y0 i
圖27
9 b. Z, v0 u% Q" S" t4 r" K! O* f, b: w( S7 k8 b2 u' D
|
|