|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板
8 c0 m, b! ?3 w3 ~) r
! l0 F1 x) P) v. b) O
) ^* e F8 e& N& L2 c" Y) L7 ~: ?" x; ]$ F( a: N2 m( j5 J
前 言
3 T" |1 {6 k- d; M7 q* r3 ] \- B# S
+ \" y7 a% ~% J本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計(jì)的高端評(píng)估板,由核心板和評(píng)估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。5 c( {. C" |7 D( q/ B
評(píng)估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。$ N/ n8 E! n: T
( g% M+ M+ ]$ M- }4 I6 B
- I2 e7 x2 j+ _5 C/ U8 i; l1 p$ }; @- E4 ]! h
! A* V( M4 g8 h. S; v" }0 t/ K​, Y4 I( U. A0 l# P! P1 C E3 f
* d9 M7 r7 n$ N! k4 v1 i9 c5 c. n, O) \" W; b
圖1 TLK7-EVM評(píng)估板* \3 {0 s ]- e1 ^/ a
7 a3 }9 I3 u8 q6 N
9 k$ ?* L" ?* G+ c/ {* S- X; M* m開發(fā)案例主要包括:2 f. `, M/ R* i# X
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
& b. D, u2 `- l# m0 ?7 L$ Pl 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
5 W; I- \$ Z; G! j5 jl AD9361軟件無(wú)線電案例
% l( f' j# T U0 B, ?l UDP(10G)光口通信案例& Y, `3 M, z2 ~
l UDP(1G)光口通信案例
2 ?2 q% ^% g( X- W9 d$ U Il Aurora光口通信案例& ~+ m5 Y( `1 t! A7 A
l PCIe通信案例
, L" i- h% Q. {- V$ o' @l 案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
$ l; R, |: U+ j* u; S. J- e
$ [: W, z& f, a( C+ R
+ @! V& D, t1 q( ^' N1 R$ G6 ]3 z |8 C/ W# h* I g& }+ O) t) G
. Q! s# { Z; f* p' Q1 l, k O
本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
$ a' `0 E7 C; c' u& q: @Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語(yǔ)言轉(zhuǎn)化成硬件描述語(yǔ)言,同時(shí)支持基于OpenCL等框架對(duì)Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。
% I2 e6 R, W% }9 l% e* W- W( ^) _: K* E: N$ K# w* ]8 L1 J
3 k* W. I5 Q! Q; N+ pHLS基本開發(fā)流程如下:
( b5 r% q& m; Y" N4 i5 U' {* D" Y(1) HLS工程新建/工程導(dǎo)入
5 ~: [5 Y7 ?6 S* N1 C5 m5 B(2) 編譯與仿真
' ` w+ W, I, g; v- {(3) 綜合" v) A, E$ v* y; v( E3 b
(4) IP核封裝
) R/ v( i5 f" B( Z1 I1 q& Q* ~(5) IP核測(cè)試
% z4 o6 i0 \, y# s0 @7 s6 _
" W) c0 r' U' I$ c8 @: Y3 Z
. O7 K: V' ~2 ?7 KHLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。6 A& x, u- m) a& g: c' U
8 @6 o. E9 [; P
8 m+ c( Z% B) m1 ] H- H# F. L$ T
表1
1 @6 |1 P$ b+ G( p! ahls_ip_demo: X. }$ b3 _6 M
| bin
4 I9 C6 a0 t7 M& p* C \! q2 T | IP核測(cè)試程序可執(zhí)行文件
& @! }& Y* _3 B$ }, w2 z3 o, ^7 _ W' D | project
" ?! N& }8 a+ v0 g | IP核測(cè)試程序Vivado工程9 e+ r1 E3 R4 s9 N' [5 a: ?0 |5 a
| vivado_hls% V; y: X' B! K1 G/ v8 s+ _
| ip_package7 y6 w2 b) e. }4 g, `" `
| IP核
2 i% U' y7 T* a5 a7 V$ L! O" A0 F+ o I m | poject; A2 z+ E+ B+ L2 z0 |: J6 R
| solution1; j4 i/ M2 F1 h9 W2 D6 ]6 o+ s
| 仿真方案
6 ^0 _1 _8 N; l( c' l5 T: S | src
- Y% `% C0 G! c! Q | HLS工程源碼
8 t0 t8 |+ F8 l* Y | test_bench
& ~( `3 X$ \3 f" w- e D3 X$ t | HLS工程仿真程序或測(cè)試文件9 g6 ~2 M7 d% A2 s4 G( B
| vivado_hls.app
7 h* @# [& \; Z t- R! x& l | HLS工程文件* N1 v4 ]3 F( X; F+ ^" H1 ^
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
4 `; P5 o) c7 R' u- s) s8 ]
. H, t5 f; b5 o7 O5 a) w$ _; z6 V9 a8 V8 a1 _; n; L4 H& V, @* u
' r/ G/ p! p6 J+ t+ V6 C# X. |' r$ ]6 { |9 I
HLS工程導(dǎo)入
J8 y0 L. }* `. m# b: u7 R
! R3 a' a5 G1 l- [雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。& H. k8 Z$ f% z9 `' M& Q
* q! ^+ ~8 o* L. H: a
4 B2 C& ~2 d [, j w& N
​4 S* {) R7 f3 \% Y: {" O
圖2
! l( {- s9 b& P
6 r9 ~, d9 o5 c: T2 t( ]3 y- h, @( }& D( F0 O& H( U C
​
+ x4 i0 g: u' B; H圖30 x1 L5 u; m0 M9 }4 K
0 Q" [. Y1 p% Z9 d q: _4 A6 J8 K7 M
​. g( Z4 u8 H- I' {* Y( J$ Y
圖4
7 }- y* d6 Q' B亦可新建HLS工程,并使用C/C++等語(yǔ)言進(jìn)行程序編寫。
+ i5 ~4 a& |6 J# _ q) x1 |' m1 \8 D' q, w5 |
- T/ Y& V/ Y0 l" m8 i$ V" f" {" x( q2 j3 b9 }7 p
8 \! ^. |. V+ A' w 綜合/ c9 ^' q2 u* N1 L7 I- i5 V
+ ~! n5 I% F+ ^% f U8 }2 b
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。
i4 M; N4 b% C5 B" w點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。
A( O6 P0 }' [4 ~* Q4 J
; ^" m& x1 ]/ M' q
f6 s5 N+ y v$ K" c​1 U% ]4 E7 r. u' ]( t0 L! k
圖8
8 T+ f# A3 A& ~& e2 u/ f+ \0 b
x8 _- Q8 A2 I+ S: [! ]8 O& M4 u! q- {- @ ^5 @
​$ Q9 v, u& D Y% X& k
2 r+ }2 U9 x2 Z) B7 _* n
9 e9 J6 Y d7 ^+ f圖9
& H& e9 t2 F. o2 o& G5 O: @
1 Z& G: B% n3 @4 D5 r1 o6 M2 `: {* }3 O
綜合完成后,報(bào)表文件將自動(dòng)打開。5 u* W( ]# R" x
; ~1 i" h h. C8 s
. f# g# }$ \! @: Z! g' o" ~​3 x' U) B. {! }
圖10
. s+ m# a8 M6 O I6 X# |* K
: }/ |3 e" {1 {- Y' C. G( h
/ ^/ j3 S- Y% Q% ^% f, g8 T通過報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。2 |. `$ k4 \* D4 p. C
- M, \# \+ e. g
+ u0 n3 }- g9 q; p
​
V0 e) ~5 B2 Q/ V; L9 f5 O) |7 x6 z/ [% |
2 ]/ i; v7 t: J9 u% F: j& N! q
圖11
$ t3 {& U4 x6 u& K3 r; U# q
6 r' q' s0 j$ o# `3 j8 M0 Q3 C3 s$ n0 T4 P
編譯和仿真C代碼( C3 a9 {, t: |! j
. {+ M( Z: m. U8 f4 Z仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。
+ b# |3 u: g5 C+ _/ h8 v導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。
, Q0 A- L* J* z; o0 |
$ @$ {% E4 y1 k; o/ S
: E) C O/ ~9 u2 k​
% r( J# a0 d# n# r, F! M圖5
7 z# [3 d a0 U% Q* O9 u# c+ t3 B& V- f3 G3 a) ], q3 D
* g, ^# \! G; P) x
彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。
* ?0 j0 i# P" t8 m2 y! k
1 N% F6 M a0 v* E/ M: C+ y
. m, r# u# c2 i+ w8 K( z' V​
+ T1 j+ L% ^6 V# g$ B6 O圖6
0 G. q+ R+ E% k+ m9 P
0 A4 f1 C3 y$ b: w/ u' q1 V# e5 X: }1 F9 G! j; T) ~; Q4 T. w. Q+ m
編譯完成后即可全速或單步運(yùn)行仿真代碼。
4 j+ C$ q1 n6 E6 i# U* B​0 |2 Z7 G* C* f( \
圖7
; ~+ P7 n8 \+ s& Q+ |( ^7 c9 \: o
( U$ m) a! _/ @: j* g& m/ G3 a" h7 w* K) H& C8 K
# M( f5 F0 G. u2 O
IP核測(cè)試2 p, m( T2 r/ g0 V8 P
. u& G5 h5 s/ Y進(jìn)入案例“hls_ip_demo\project\”的IP核測(cè)試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測(cè)試的IP核。
# n& p) _, k* `8 u" Q. ^+ ~/ u: ^. J6 \: g: }# L. j4 H
9 L/ j; I* [) i9 H. A$ ]
​+ W% \* D% g; W; P
; b W7 N0 E6 {, r; J( n2 H- @' R' X* Y" s j# k
圖17/ A h; }- V e2 a
如需自行導(dǎo)入IP核,請(qǐng)參考如下步驟。
% \0 {, e3 w! X8 J; G8 k2 j* A( { g; L
5 z! C; L; C; z
(1) 請(qǐng)點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。
) g: H1 e. D6 y) n$ }- ?​
6 ?+ q/ `# k1 A" |6 H: |- k% x' p9 l: }8 T8 e! c
}2 u7 A! Z1 o9 ?5 g# K
圖185 ^ i/ R! Q* S' C2 u% c# J
​
7 y, S3 j" J# W: ^" _ R5 @圖19; s/ P3 _ J1 M! M; {. K, a# K
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。
1 T: ^9 g7 R8 i​3 g9 R1 X6 c4 ?* }3 P
2 X+ Z. V7 f/ Z) C$ D
+ F: e/ W1 f/ M! \
圖20
/ K7 p# ?) V: L B$ n​
" K/ F+ C( u$ P: y H+ U& G圖213 s) r: L& B- I; K8 l9 B, Y1 s* u
1 R0 b; W2 J' `: F7 ~
2 A# {4 ~2 V- u; p* o. r(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
* b- {; T) q: G4 b* G! {5 i# [ F: O4 ?/ t* o4 ~
s" `/ \9 X+ z1 Y
​
1 h/ f+ n5 S5 n' g7 [3 c2 ]; E$ F/ t8 s/ @4 z2 P7 g Y5 ~- Z; N
. u5 F( k% b3 M- r( r; @
圖22
3 y$ z) t; q8 o% [- X! `​
9 B" T2 I" I& S$ H5 U5 C# C0 ^圖23. F# }( s/ u. G, }, M/ q
點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測(cè)試程序Vivado工程編譯。
: o4 t0 r) ^. e6 m& `2 C5 n​/ w7 ?: Y8 K7 K" m- ?, _
+ S* F5 F: \+ \' s3 q8 L
- v* o2 ~2 T! K# [, [
+ L, Z/ I$ E O. S2 Y! `* _
2 ]* S+ Q( C% P2 Y5 v圖24' X/ x, o N' K; r- F# i) d
2 g$ G7 `7 i5 S, k3 y- Z
& n1 Q, J5 D3 c8 i D" L5 Q​
% b3 a5 U4 t' |! S/ t圖25* D( H f5 R0 M# N3 q/ y
! C( ?2 b$ j7 g' u, N4 E* m3 L* R0 c
編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。 A" E. f6 k* A
) f6 C+ M5 Q6 z Y& x# v
2 U7 b% h$ C& r! ]! j9 ]​2 }8 ~( B1 w* }7 |
8 P; n) W8 R4 Z: W7 G- X+ ]$ u# U* e3 J' ?/ l6 [
圖26* q/ n% i" p/ w6 a! j# G; g& _
7 }: u# A+ T1 v( @& ~) {9 u& J( P: N5 J0 N
請(qǐng)參考基于Vivado的FPGA程序加載與固化手冊(cè)加載.bit格式可執(zhí)行文件,即可看到評(píng)估底板的LED2進(jìn)行閃爍。0 u. }, H4 Z% A9 N# M( e. Q4 h$ |
IP核封裝& ~/ Z8 S! g+ S6 G L
7 d: L* D6 N( j$ a' q綜合完成后,點(diǎn)擊生成IP核。' t' L# e' Z% ^
​8 P/ s0 m7 a" N9 N8 C
: C9 ~& }1 D0 v% Y- e
! _& R$ S4 v4 b) @圖12
/ S! a7 t+ W4 ], ^
. n5 z( \7 d. R$ `5 `9 g: ?4 z; S" V. y, V/ k4 O9 O: f+ a/ r% h
​% X& ^" b' B: b$ c/ \! q( J2 R8 P
圖13* ]* a! F2 g& E: Q
​
, U% ^ ^# T# e圖14) z$ p/ C8 p- a+ Q
運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。- ^( t K, o9 k) f
​# p7 N* |: h& d8 |/ `, e$ |5 ^+ }
9 C( V& A. U8 l: v
- v5 k6 t& C8 q# N' h5 Q圖15
6 V& H: N2 h2 Q: I; T6 o7 T​1 R+ C% c' L1 e8 {, S) {
圖16
. q) M1 {6 ~; X6 d4 p( j
: [9 H- R: b6 H; q, w- l' i) o* q5 R" m; J
l 更多推薦
d/ d! T0 G M/ v
c1 o- @+ C& ?5 i5 c! I, H​
! e- z; T7 t7 q- V A* u2 }% t7 g' } \2 A4 M9 P4 A [
4 ]$ p, {* ^! |1 L! r圖27
: `" d9 t2 s; _4 ]. `8 h6 z1 L4 T$ {1 p4 P" [4 N% ^. r: J
|
|