|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板
4 ^6 h! U0 ?- C* j. f9 n" R$ E3 W, t3 D; G
2 t( J4 T. e! o5 i N4 _
: q! p) M0 J5 F! J9 `0 S前 言" n h7 p& k7 Z( H: d3 ~7 D+ A* y
& K( p. F1 ~ V本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計(jì)的高端評(píng)估板,由核心板和評(píng)估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
* M% M! N0 R; {% L評(píng)估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。
9 o; N2 y& T1 Z0 } O% ]1 j9 O( r4 v8 g1 @8 p
/ Y/ D1 s3 i2 e! o0 Q) f! {
% m2 `6 x: [0 O9 r$ I8 M! F! [1 c$ o0 @
​
6 g. E9 Z( C* o5 \5 D
. m- ~, n2 f4 i j- _! F6 V
, B" }* Y8 w3 M4 {圖1 TLK7-EVM評(píng)估板
4 ?# B! I- z& E4 z: I1 S- ^' m0 R6 y
" c+ ?2 Q7 u v* Z6 H
開發(fā)案例主要包括:9 N: b/ G, @0 U; d. W1 h c4 o
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
# G. B0 c0 b' Y1 Fl 高速AD(AD9613)采集+高速DA(AD9706)輸出案例( r. d, g7 ]4 |' M) ^
l AD9361軟件無線電案例
% c4 z6 r1 s7 D4 h8 j$ v4 sl UDP(10G)光口通信案例
( n- t2 u" L D% \' Ll UDP(1G)光口通信案例" v: A; ?" Z2 f
l Aurora光口通信案例8 `/ ^. l# [ N3 m& [& w( ?$ O" e- s
l PCIe通信案例
6 Q$ c+ Z; I7 k T- l3 J- u }l 案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
5 V2 Y6 i7 q4 S8 J. w
0 g0 M T% I' M; Y% q* x$ W) F2 F1 N* M3 ]! M) v* _9 d- `
3 ]' h; @( G# Z5 j0 V
& w9 c; T+ U4 q7 z本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。! G5 \$ c3 ~+ |
Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時(shí)支持基于OpenCL等框架對(duì)Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。, [; O* [5 i" p% S/ ?* o
8 J1 ^% y4 @* Q$ G7 ^) [& v* q
& Y( [# R, T3 C: Y uHLS基本開發(fā)流程如下:$ v+ P. g( g2 Q( Q& r: K, E
(1) HLS工程新建/工程導(dǎo)入
, z& W- D0 ?' Q f$ W" o) V(2) 編譯與仿真
& |3 z M- T$ ]) s6 }5 m(3) 綜合
% w( R0 w0 o3 d: b(4) IP核封裝( y4 T7 X9 Y$ m) K9 O+ r/ R1 O# p
(5) IP核測試! J( w* A' G3 k& Q, k
) }- v6 m% o/ \0 i% c1 o; Y) [- Q4 U8 c2 j8 p, j1 ?, P$ @3 ^
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。2 ]) w, q2 K# n- I
, d1 O& S& P! L. j$ e. o* [2 \7 L; k. @# c7 y: N0 R! N5 ^
表1
/ K1 U# _7 [7 z C% E% z+ w/ ?* rhls_ip_demo
* [, Q! w& P$ b; _( Y | bin7 P. S, r# I" o& e: S9 E
| IP核測試程序可執(zhí)行文件) M3 G9 e* G6 e* Q. T8 H# m
| project
" c8 t5 a8 }6 b1 z k1 y% e | IP核測試程序Vivado工程
6 L. O' ?9 E/ C | vivado_hls0 V0 \% m1 Q L H! M* X
| ip_package ~; ^4 V+ ^# y( o, U$ U
| IP核 f G; K$ N; P9 H ?! n: E5 f5 j
| poject- \, p2 O+ f8 N
| solution1! W4 L/ _1 j$ v `+ j- n0 ?
| 仿真方案
- g9 y7 U" s7 a N | src$ ^& C& o! H. |3 j0 v
| HLS工程源碼
1 l8 a* x" C: Z4 l | test_bench, F5 {6 a4 R( c" U v2 x7 g/ I
| HLS工程仿真程序或測試文件
/ R* w' F* w+ v" F, e* j n | vivado_hls.app7 o# D8 |3 N ^1 D$ }; i
| HLS工程文件( d# V9 l* E; l4 P/ T; K
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。/ K2 Q) F; @( \' d1 Y# z3 b0 J
% C# ]+ Z/ K0 Y' v: |1 V" U9 B+ u Y, o
m X6 x: |$ r+ Z9 \$ ]/ ~6 U
. `. p; g" ]: t2 H! X HLS工程導(dǎo)入
1 x: E" V+ @0 V. H m4 }, S3 q* R" {+ U
雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。
# s( F% K6 d [ l7 @6 q6 ~( ~# c! H) }
% t3 L2 X- e' U& d- `, g​+ X' f, H4 Q: l: G$ X/ P. Y# z4 R+ j
圖2 L/ Z+ I* i0 t8 P9 h
+ F% `, D0 h/ P! l
! Y+ U3 m8 [7 j0 x​
8 L/ c: b/ A/ q- ]: A圖3
0 S9 D/ s2 Z6 t |5 ?" M! t
! U8 |& Q( q; p6 D0 f5 `/ S6 \. g4 r1 R3 r- _" [
​
% B, W' F' i; @8 b, `9 E圖4% O x- s- g0 {2 R1 ?
亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。
! U. V P7 y! j7 |! G
$ Q# d' M" y1 u! @5 ` I* @- u: x; @. U
, Z/ u3 f+ e# C( h
+ y1 \) I) ]7 x" j 綜合2 {7 o* p# x# s, W$ q
- c, X4 [6 v- M* M
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。
$ h9 J* \2 P1 t8 Y& |* s3 O5 e- Q點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。
; j' ]% ?# L, C
& I4 S7 a: l- U0 b
) \! c/ c, ~" ~5 c# K​. t# I7 _% S) Q6 L
圖8+ l4 u& V6 p+ L. H: I0 C% l
( g0 V: J+ i/ b& D
4 L6 q) w: d& D" n2 T5 u1 O​
2 p/ T, C* f$ m/ g+ o& v5 ?$ D- m0 a! \" a
- F3 r4 q1 K1 E圖9' q( i* b! ]4 k4 B
& {2 D {6 U0 {) V/ ?
1 C5 ]9 p& v V
綜合完成后,報(bào)表文件將自動(dòng)打開。
1 T" r$ |7 h, v
g1 y: B6 g9 K5 b! q# s
- H0 A, o2 s) V# W0 B​2 b: g3 K- s3 N& p+ ~# n
圖10- _4 M9 H3 q" G+ w' s9 ?+ k
& q/ X" Z& U/ g1 T4 x
% V& p& r# S" H' z! `- Q5 m( d通過報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。2 u! _ Y/ B- O' f/ b2 i1 z
0 m4 C- k b, j6 d. e [( }
1 G+ e P: n7 u5 x5 Q7 g# u- z​ r" Z" q: e) C. L
8 T0 |) L. \* v5 g* L6 p% ?
+ L' S7 o1 ^ X2 N圖112 p7 J, I+ b. ~( T# T: L( U+ r
0 _9 j& j, V8 X0 y$ O& ?
1 u+ R) {, H/ u8 K2 v編譯和仿真C代碼. E, }( |- k a1 K8 U
# A- c4 @+ C. m/ e) t9 O仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。
" w' U/ d& n) Q4 ~& S$ s) K1 l導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。
, _" Q- L0 ]6 V* o0 f1 @8 d+ {) `3 {( C" }- m0 r6 s
- n: m6 v3 ~7 F
​
% X) B; f: b6 P+ [5 Y圖5
$ a/ S4 w! D' G5 z9 x. O* N# V
# A' E3 I6 _ u" V
; P/ i4 ]0 v: d: _& f' i/ h彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。2 E; b9 ?4 [9 Z6 |" R
: H( @7 O- c s8 g
8 t3 ]- R5 ]# Y* r5 F( v# f: N# ]( m​$ U7 ~3 Z$ G7 h, A1 X
圖6
/ x. ^$ f* t' D( j6 q$ [
: W" w! k; T _% B& q. F* S
* K' x9 P, N# a0 W: ]& d編譯完成后即可全速或單步運(yùn)行仿真代碼。
0 k& Y% e8 f2 H4 g; r6 e​) |/ `* \# o( f) `
圖7' C& C1 K, @6 g, v O
[4 k* ^' k y" ]/ r c) z- b2 M* w
- P- G5 k. v% Q$ B: P# h' I% H$ j2 x+ l5 o6 h
IP核測試; G5 j4 c- m, b c+ A! H
8 @9 g# n3 L7 T" s進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。4 q* v6 C' H. ~" Z( y
/ }$ x' v! `* G, Q m: ^9 a; j; V
5 p, p5 K7 v' J9 {) X5 I​
: y3 v/ q8 }' J7 ?) Y% O2 _& a* }$ b: |/ P: Z3 p% z" ^
1 A5 r9 p% {! v5 Q1 ~; C圖17
0 o" ?- m( x. \# k# j! J: k如需自行導(dǎo)入IP核,請(qǐng)參考如下步驟。7 S4 d% A6 s7 F [
8 Y7 O: v6 c2 w- e, n% ~
8 b* B+ s! U$ y' \" P! P2 L- @(1) 請(qǐng)點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。- N9 i$ m/ I$ z. }6 U
​
6 B" k# v" k) ]" J
! o: `8 ]- A7 @) d
. ~$ j$ S7 c9 A. f圖18! I; x+ P/ ~ q
​6 P7 k7 q" r8 C
圖19& t2 D3 O. Z, o6 g$ V8 b
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。( X9 [/ X6 s* K" B2 ^) F
​2 h* E0 M0 q6 `) Y4 |% \
' S1 D5 Y* J' z3 d4 s4 O% ~2 F3 D4 g. B: g- c# ?2 L
圖20
$ G2 ~7 B- z2 Y, X f X$ W: e​ [5 }7 l. K+ C* P4 ~
圖21
* a8 h) z! k; S2 ^9 V- ]; t& g1 h7 q# S7 k
: G: Z2 I0 S) J$ H
(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
8 _/ E* c) W6 F) G2 e6 Z$ N& ?3 u# Q4 S- X1 |* l# R
, A, m6 n( V Y+ s/ g​3 ~, ^6 r- k, Q7 u, q
: G7 Y$ l& G5 F& M. u/ a% F" p7 G1 u/ N
圖22
- u# Z2 [: ~' m w- Q/ V​
Y- Y4 U6 K4 j% ?0 w% Y圖23
9 M2 H- k" P5 _點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測試程序Vivado工程編譯。
+ Y7 ~$ C9 k+ u6 n​0 ^, ]6 A( n7 v+ z8 ?1 d9 `
# m y) s J% \$ Z- O8 m4 a6 d t
+ O) k$ \. i$ [$ d# S; Z0 l- }% d% c& q6 b
0 m; e7 r0 z- i4 N# ^/ t圖24
^; v- Q3 l( I- J
2 b& Q. t* h9 j* F& ^; a
! H2 S y' p! Y​4 r7 d# x+ m6 h4 V6 f. g# E
圖25 Y( G% h; U1 Q7 y- X% D: @# z
+ s1 W. _# D! p4 j' s
& p7 ^5 r8 n9 v' I編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
* V6 t7 E. |' }" K' b
2 z( W5 n& y, _/ u
7 \0 }- J. r9 L7 A8 y​
+ Z: i6 R9 I' {& o% A% C2 O
! U) H+ x3 [! e" L ]$ g# s/ `) R
! A, ^9 b9 U( U& |; Y8 i$ r圖26
+ B c! d! i q: T" _% I5 r" Q/ E0 k1 l
# i' a! d+ C: q2 G請(qǐng)參考基于Vivado的FPGA程序加載與固化手冊(cè)加載.bit格式可執(zhí)行文件,即可看到評(píng)估底板的LED2進(jìn)行閃爍。
, l* y$ r% _5 ^IP核封裝1 A. t: u) j; ]' U# l+ i
0 E7 _/ X- _; y綜合完成后,點(diǎn)擊生成IP核。
5 ?. ]4 y- l5 ~. B7 p$ S0 c​
4 i' \1 X$ K% h, V2 I' y$ a) l2 M' X7 j- V
/ r9 h) T2 [5 v6 n2 Y
圖12
" q! B, r0 ?, E5 r# K' D) s6 h: E% Y4 V# M- _5 e
! d7 l, t! h5 d7 y8 I9 j9 G# X8 z​1 d: F7 p- Y4 F" \
圖130 U8 `! G5 X d' \
​( G9 [; ?3 u* V* r" ~
圖14- c5 {3 _! h& v6 w5 L
運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
# d: |/ v6 w. e5 I: J$ L3 a​
' d7 m" N1 r8 ?: p4 c
/ F" N' I6 n8 j% |0 F# j8 H6 Y3 y4 s
圖15
, ~" T: S* q, e* Z! Q​5 j5 {: j9 g+ q5 n
圖16
% |! U& z% t; B
. q3 p. s& u9 f9 @
/ s- c7 @6 ~, {* ?4 i8 g0 C5 `( |l 更多推薦) b8 e) X& _$ t( t
, s( }1 f% X$ u. S& a8 K6 V( w​* }+ o, s+ G7 n: W' v: t
' ~7 ]$ @( }5 W% f) m
; ?* k9 f* V% @9 X: B7 G( J: G圖27
7 E! _3 I& j* ^# \
+ {% y$ m9 a4 S1 O2 C- n |
|