|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板
9 }1 R1 T# E+ L+ K
y* _7 @, g4 U4 w. ?; K8 t" U7 c1 e6 s+ d
7 s5 b2 x) Z& x# Y2 H0 A前 言( u/ I, y. W+ C
2 _; ]! }5 `% ^* m: M4 @" ^4 A# y4 p
本文基于創(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)境。 z/ x, h* h5 x) k
評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。
' }# x- ^! @0 Q4 ]2 Z, T0 c
' b; Z: B/ j! U" k. M% t4 Q! f+ p9 [0 F# H- F3 D5 n
. L0 @1 ~/ E* d9 X, Q
3 i( j. n$ o8 {' i6 o1 H' K' y2 n
​: h4 p# r7 S9 Q1 j1 o
' H* b" E0 ~ J3 ~5 C2 X0 E8 p$ Y ]/ G: H* N+ Y1 U: w; S4 F: M4 Z
圖1 TLK7-EVM評估板
; y- T* R5 p* ]2 u, q% a6 n' [4 l6 L z& c
, {8 x. m# n! W8 J, r( `開發(fā)案例主要包括:
1 o g+ Y( ]6 G/ P fl CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例! D- t0 @8 u0 h# J3 l. N/ J9 \
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例9 R/ E8 E5 w! D+ e& X6 {* G
l AD9361軟件無線電案例
, L; c s3 L: _% ^l UDP(10G)光口通信案例
. e. P9 v$ w* w/ O0 Y) _, j% Ol UDP(1G)光口通信案例: T7 w5 G' j8 J, x
l Aurora光口通信案例
; p! W% }, I+ Xl PCIe通信案例1 H1 ~& p, W" D* J$ D
l 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
& x. V! \- s! |1 n4 t
2 K7 }# c4 t( [" `% G
/ G, ]' m" y3 Q& @6 D6 N
7 F _) o: x2 P
+ K! h1 ~! |' M9 g! v/ g; c3 K" G本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
3 R! h$ n- w% _# J: _+ MXilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時(shí)支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。 [, U; ?" [ q3 c6 m8 u$ Y m
8 Q/ e5 ?1 G1 ]/ M* m1 g+ n
, S+ |; |7 M! K
HLS基本開發(fā)流程如下:5 E6 b; @# e) Y: O6 Z
(1) HLS工程新建/工程導(dǎo)入$ o, H1 n! y9 o
(2) 編譯與仿真
0 d. j6 s# O1 a. T(3) 綜合
! ~+ r4 L" b- f. G5 Q8 b(4) IP核封裝 X+ D0 ~. Q, }) u. Q ^
(5) IP核測試7 S2 X# B+ j1 Y' W# q( r2 b: F9 w
9 }# |% }4 u2 z) j( L4 T5 m7 A5 }# N: J6 N7 e, c; W" i" ]8 ~
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。2 k9 G1 M4 \0 l6 V4 c0 P
* n% ?' o+ u5 r, I- ?! }' n
% B+ c7 ~; l( I" k, B表16 \, e2 {) C( m+ ^- n
hls_ip_demo
' j$ I2 l3 |) }+ M! `5 a) [ | bin: L1 C6 Y7 r& ]! m+ q( R6 C# j
| IP核測試程序可執(zhí)行文件, E" v% m( [! {+ E/ D: L
| project
; l- L0 M0 \# J. c! A | IP核測試程序Vivado工程3 f$ C9 P$ o, t1 Q! ~% R+ U
| vivado_hls+ M8 v u. |2 t5 n
| ip_package
' w! L6 M& m0 ?* [ | IP核0 a2 o; k" A$ M% E0 R
| poject
$ L- f; r) L i | solution1
# j& j/ _% w: w4 P3 C | 仿真方案
6 Q0 i: `4 t4 b W" s | src |5 b7 U9 O T4 m; l9 R! w
| HLS工程源碼. U; C$ E/ ?' J; k' w' z
| test_bench
I/ f! c3 Q( I$ u6 E# | | HLS工程仿真程序或測試文件) n! D3 ], Z& Q
| vivado_hls.app2 x* L; d! A) Z
| HLS工程文件2 O* N" p( T' E% _8 g3 [* w
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。9 w3 X" I' [" {! ^1 h( B$ P
1 ^% ^1 w$ b* ~1 r
2 n/ q& \5 H6 V4 \+ l
: H) `% y7 Q3 ^/ t
|6 w6 q T" H6 b3 y
HLS工程導(dǎo)入
% O0 o; _1 F3 g3 T" P N5 a% @# H1 h4 `5 j# O7 i9 q2 E; {" q
雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。) [( b5 f/ e9 f) y; N! N0 m
8 i7 d- b" m7 x0 G1 C: `2 C/ `
# q. k; ]& p' {4 b: O​: A0 u' R! m: E
圖2
7 X4 i, w( q, ^( Q( _
% j5 @# \- R( @. ~! K' g2 l
# [6 e0 j% Z9 L! q4 A# r* i​
) }% s+ H7 g; I7 G圖3
0 J) C" q1 e9 T( ^) ?4 e
, F ]3 C# R) A* m4 d! ]1 a# q( j$ n# Y: [, y* }! {
​8 @' h" X. a& {( \0 l( m
圖4* @& D( n: g3 `( M) h) F
亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。# r8 p# C' I2 Z) X, } c8 H
' i! R+ g; M, j2 ]1 @% _
+ R- E0 S9 U/ \ m
" o5 D# i0 h0 t, V( `
3 t* P% C) u3 o' j" |/ s1 E 綜合9 _9 Y$ o. E! |+ A- T' _
; {5 w$ Y. ^1 W
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。
. ?8 K3 a, W4 R ^# u+ e5 y; i* I點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。* e: b6 D8 l& @, U' [! k# y
+ Z' _1 Y3 r' F. t5 h7 A6 g; }
, c% Q; ^+ \/ l2 A4 D! h0 b​
) l2 F' W' ?' x3 G, o) ]0 V8 e圖8/ T* V5 v* f2 r' Y) b5 V6 P
; ~$ O- B/ W) S4 W/ V0 L
: D( v* P- |/ p. i9 K
​
6 v# S$ d# ^0 Q( E( |- i, M w4 Q: {$ _
" i3 s: v3 \ B7 b# H
圖9
- i5 m& p$ {2 l. F0 v4 Q" S$ p" h2 X. {% L) J5 T. }# l; V
% [5 m. d) T" q+ w c, u% I. A( Z; `5 E
綜合完成后,報(bào)表文件將自動(dòng)打開。# v+ d) _" i/ L) F! e1 m: ?
6 b6 e& T5 L8 G8 ]% H
" C% I' R3 d3 \! j
​
4 `6 [- P/ a* G圖10
2 H, V) L4 u- P3 C6 l, g
1 C' j f6 d& K1 z/ P+ e q& W5 F+ J3 j! @0 ?# Y
通過報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。' Q8 c8 ^6 t3 u, H! P
! k3 s$ E5 J2 Y( _' ?6 ^
. |# I4 x" d: @* c5 Q​4 ` g9 ? n2 i: C4 L* {
, c2 w' o7 [- I0 {0 Z3 Y) l
( z9 ~/ M* i) h# k# L5 F/ Y
圖11. x Y! Q# P$ N/ V. S& |
; i' q1 ~. c4 r* z, v! _6 N$ U+ C- R0 S4 c, G* c
編譯和仿真C代碼; @/ e3 Y1 x. s0 D
0 w) C" v3 j' c6 `* G f仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。
+ E4 c* A& C. c7 z導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。
- j+ g7 N6 H- E1 k. I) o! L: E n6 I: Y8 ~1 V
5 w: \6 V7 J- a, G8 ?! v​8 i+ z3 K2 N. J4 m# E, s. T
圖51 B& I' y B# J+ J; U
% \+ S, J! J" {! a5 J# M* }
1 j# J# \$ G7 c: `
彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。8 r" _6 v) y" a
! E: ^, W0 f$ j% _
8 ]' q; l+ Y6 V% j" S4 h5 c
​
3 t+ ?( B, Y6 N; Y2 u9 F圖6
7 @ B8 O$ H( M' D6 C
' }7 a0 {5 p4 U6 A+ g2 `' Z3 g% w m" _" u6 }
編譯完成后即可全速或單步運(yùn)行仿真代碼。( r+ {* Z, w( L
​) ]* [; w; m4 O6 M
圖76 ~( R/ H9 c$ i0 j5 x
& x9 a: p- O% ]* A& l2 O1 Y+ f6 Y$ r9 r
5 u8 F2 o1 f7 R5 c& k IP核測試
# ?/ C' [$ Y! U3 `; e
/ J% j! q" @ E8 R" z) d9 C進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。7 _0 i6 o0 C( r$ L+ t3 X$ {
- |2 P( U, B0 e7 j- q) [
# O$ _9 V8 G) c# B6 p
​* V; v& y& a! `, {6 b
# Z- N& S0 l8 P/ k5 V1 z6 d
1 h' @$ k4 \% f0 l圖17
) [! ?$ Y: M' Q/ G' [, K如需自行導(dǎo)入IP核,請參考如下步驟。4 R! ]# C o3 C4 E+ _
) z/ v8 e# N7 w7 y/ n& `9 L2 g' e: a# F. t# d+ }
(1) 請點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。
/ u% Q7 `9 `2 \6 n- z! M1 D; W# m​
! [0 @) e% I6 ]) [7 i2 j2 I8 a% ~! i* J
; v6 ]; L! `& S$ I" b& F
圖18
/ p/ S1 k( A4 G- T6 U6 d​, N7 K% M, O1 ?8 _; p0 U, T
圖198 i! S" ?- q% g; ^3 k/ N0 H0 h
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。
0 Y* @+ i; K& f& [ c* i9 {0 Y$ w! b1 M​
% f# i# H# A" U! ?2 N( s$ Z$ t: }: p: K$ O# t
2 W4 Y: F" {; s3 Q7 n' U圖20
% g9 `( N& p$ _0 P​
`4 T) A5 m8 q7 _" R) B0 c圖21
1 j$ B7 F% o( y( j+ ^! j, g; q$ q" G& `8 |' ?' f
5 t7 Z+ G% q+ o0 D(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
& H" w, s3 j" U) P# G0 I! ~- V
/ Y& v' K' M3 q/ v+ {. `, q
) A: M" {8 `& a n1 m' K​7 c6 K- ^1 M0 e. {# k
) H2 ?) U: N3 K, s- ], s3 u; t) M+ ~' G+ Q
圖22. I# Z: ?$ ^+ S6 M. K5 j* Q
​
/ W$ H5 ? Q& |& \* _* b" U圖234 A/ j" T" X0 v( a
點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測試程序Vivado工程編譯。
* u8 n. _1 p2 y( C+ a3 [​
2 S. C4 u. f4 w/ o- L4 g
5 L* \" C7 C' r R. o( W$ n8 d9 _2 o- E" K9 z3 S. v/ b
( X ^: ~( \# X, R% w/ B0 i! ~- l7 \4 h
圖24
. m9 i% J$ B3 O% r& A3 X6 {# f+ F' }0 |8 E- Q) p6 _% j
$ {3 L( e" n9 f3 M$ ]. B$ B​7 |$ W( j& G5 P
圖25
# z3 [$ t) ]! H+ b' Q+ \) } I; w1 O! P
! Z. x: `" c# g& t& Y1 ^' j
編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
6 Q' N$ n/ O8 q4 R+ W! _
" k( o J/ A1 \! H& R" d% J {+ y: \$ V
​' ]$ c/ r" F* |; ?
, O0 S/ J6 ]# e; k
2 Q) u' g1 y o
圖26
$ o+ u/ I. f) z1 c; @
# i4 V( R1 r0 l/ v: e+ v4 I8 u! ^2 [) i6 e
請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。
" l2 A0 [4 s; U% i/ r6 p1 IIP核封裝; ^; a8 _* ^/ R0 g Z6 ^% Y4 P0 G
. a8 o- u; `$ q
綜合完成后,點(diǎn)擊生成IP核。
7 ^) a2 E4 r, N! H0 x​
C( u) W5 K6 G0 C& u
* d* ^% i- T; `/ L; J" c4 ` I$ Z1 p1 H
圖12
2 d) Y1 Q' y# s( M* R8 l& R' {7 i! ?3 ]9 c% r) j
1 R" }5 w6 w0 Y9 u6 ^3 N0 E. l1 V
​
+ G! S1 k+ t r! B* R6 t7 V圖13+ `' p' j3 a& Y
​! V3 ^* W4 J# t) X$ z- t0 z" f
圖14, q* k& Y W8 ?% R
運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
/ I+ g9 j0 t- H, V& c$ B X​
, [9 u, o: u, k* O+ h" A
; X& k8 Z) {. U3 \) v7 R; W0 F6 `! S+ J# I# f6 e& I
圖15; L6 Q- E7 ]& c0 U
​
+ ?6 \1 v: ~: t T s圖16- j/ r4 V1 b( c7 N* n: W
- D8 B' s, z& Z& s$ T) z6 H3 D! D: x' f( L, c1 z6 q6 y
l 更多推薦
+ A5 H! ?( y! L) o% ~( N @& I$ `5 I: j( X3 N
​
8 G" o4 L7 `- v$ r* G, \0 }7 ]
% C. M8 f" o, m+ j3 b" q3 `4 _5 P" d8 P
圖27
* ?4 ` M2 Z% a. { H0 j, z4 w
. x' o5 v1 u/ ?- ` |
|