|
FPGA的HLS案例开发|基于Kintex-7、Zynq-7045_7100开发板4 P/ t$ \! Z( ^+ q
1 S& j4 {& p4 Y; ]
: m) ^. {* t% x' b7 Y/ j7 \
- {6 T( j/ S! g$ J前 言4 S% D" ^4 U/ O2 W. v
3 V. A( |/ G { ]1 w, m本文基于创龙科技TLK7-EVM开发板,是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。
8 J" G3 Y6 o1 R9 ?评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。
! |6 o4 N0 o6 e9 h! t3 T) ?% a: l* z
4 \' {( u1 q/ g1 [+ o& z+ ~4 c1 d
9 X* b* ]) B& }, k& w( t+ T2 _! V; ?$ v M8 A( N
​
3 ~4 }6 Q# s4 I, p! w) O6 @& }; T9 g7 _8 N9 `, a/ U
) N/ O2 {' v7 x. R" H1 ^+ N图1 TLK7-EVM评估板
/ A) E! k& |7 b# E' U9 K! y! \
- W9 Y1 v. p: C9 m8 z8 W W
/ b5 I3 M B& ]/ O) i开发案例主要包括:
7 G3 C- t* R+ b, f5 Z; i. al CameraLink、SDI、HDMI、PAL视频输入/输出案例" L# I4 I. m7 t: h' `; y
l 高速AD(AD9613)采集+高速DA(AD9706)输出案例4 t. f+ K0 ]( g& W0 u6 i$ y- c2 H
l AD9361软件无线电案例* u! C+ }1 e$ Q/ U' ~
l UDP(10G)光口通信案例
. V( k+ u: ^% @- z, B* N0 al UDP(1G)光口通信案例- Q0 y; ^+ w" F5 \- E( p4 B! q
l Aurora光口通信案例) h- P, X$ v" P) J" ~& ^6 m
l PCIe通信案例
4 i3 }8 U$ U- G4 cl 案例源码、产品资料(用户手册、核心板硬件资料、产品规格书):site.tronlong.com/pfdownload5 w! y$ y5 I7 ]& F
: i7 p! v6 y) N0 m, ?9 M/ }* y* l% l( S8 o
; D6 v1 x( o- \
, W# e* e9 ^. t1 v; ^# j0 H: F本文主要介绍HLS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
+ R% M# H7 h+ IXilinx Vivado HLS(High-Level Synthesis,高层次综合)工具支持将C、C++等语言转化成硬件描述语言,同时支持基于OpenCL等框架对Xilinx可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。
$ m" w! n7 U: z1 L# s
6 V3 I; y6 u% X" W
, O# s. J: e7 eHLS基本开发流程如下:: u( e8 f9 ~: }! g
(1) HLS工程新建/工程导入
. e6 _3 g h/ x# D5 ^6 w(2) 编译与仿真
6 T( g9 z2 f6 A" [5 p! w1 _(3) 综合7 M4 }9 {4 f: y9 f! X5 p. V
(4) IP核封装
9 V9 w, V/ w( b/ S' q0 ^, B- {& N/ }(5) IP核测试
; i, g% \$ J) [2 v3 _
# U* B5 z1 Q! N0 H( D7 x V) s) e" O4 c! l4 c0 P' L9 o( r. l6 r
HLS案例位于产品资料“4-软件资料\Demo\FPGA-HLS-demos\”目录下,案例目录详细说明如下表。0 v$ |" m& F& I
' _* T3 [( v; L
$ p, p$ k& r8 H1 O% J表1
7 F1 z+ M2 ]: ] |' j3 a* ~hls_ip_demo8 Z6 \& z. K u5 Z: Z& t' P% B
| bin
4 Z; W3 Q" A- ^( f) Y% l) y; C | IP核测试程序可执行文件
& ~0 Z8 y. ^) q! u) Z$ ]9 U, Y! Z5 T, b | project
9 `0 o+ B* G' O/ ~; F7 e | IP核测试程序Vivado工程
5 _2 t( A# ^8 G# T5 M | vivado_hls
- V0 O7 e |! E; a4 Z7 c6 j | ip_package
$ R% r9 C, {1 i' J | IP核
& J/ ?, \* T. u: c; v, ] | poject
% J S2 j* U6 q; k2 S9 u | solution1: l; P# f0 [- C
| 仿真方案
) s* N* Q2 Q5 i" a | src
# g: `' d2 Q0 ^) I* ]4 `( ]6 R | HLS工程源码" M0 c' j6 j( o0 ?( b. d$ k3 y
| test_bench
$ u2 `5 V) R2 a | HLS工程仿真程序或测试文件
6 @1 q! }, _, N+ t& @% m1 z | vivado_hls.app
) S4 p+ @# o: o( G, Z | HLS工程文件
& X$ R1 p9 D$ j. n0 T | HLS详细开发说明可参考产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
/ z. {* X* X3 _; u% v! n+ r) X' p6 e9 b/ U$ e- }! N
W7 S% g$ L4 }- K( M8 N( `% i$ {* {4 F5 M
+ i5 @0 c; p, [7 ~' o! n5 x HLS工程导入0 M# Y0 U( P% B9 [
$ r: M5 y& h( `( Y1 C双击桌面如下图标打开Xilinx Vivado HLS 2017.4,并在弹出的界面中点击“Open Project”选择案例“vivado_hls\project\”目录,然后点击“确定”导入HLS工程。( ? f9 S. x( r+ o
7 n2 ~& h% e$ d! C1 f) g* d6 n
5 w8 a5 L! Q$ O0 Z$ D3 }, k​' h: `' N7 f: s
图2
1 m- s; F2 ^' S- C! E& b! R' v
9 L3 _1 S1 J1 F ~; F' s( c! K/ f% ]1 d1 F% X1 }- G; X
​
2 j; |/ ?* c A& O2 [, ^图3
- Y; U3 f v, V- [# Z8 e- X. ?" G0 K; r
& ?# E& f# G( K" Q5 f+ M2 `! ?! C6 o
​" S; ~8 q. k# |1 O4 c# I
图4& t; |3 y* j% t; O. ^- d) B
亦可新建HLS工程,并使用C/C++等语言进行程序编写。( p" _$ N( @3 U& @8 U
1 e" n8 v; W$ L5 x" x8 g( _6 _: u
6 u' a3 o" U! ?+ p6 f& k
1 {3 D* M" N4 L6 J* ^5 W
% J4 |' u% q3 {+ E0 I 综合- J2 X% C, K3 m% u( G
* B+ p+ f) K8 y2 T本小节演示将C/C++等程序综合成为RTL设计,并生成综合报告。3 B1 |- y0 [$ l% H6 w' u' O
点击界面右上角Synthesis返回至工程界面,然后点击进行综合。
7 t4 v$ O- L2 m$ x$ ~2 u
, Z1 T; `& m6 I; Z- X4 l4 v! _5 ^: E6 q5 j. Z8 x- C. u
​, {7 O9 { y$ c( o9 F
图8
0 Z3 y' h& s- U) }4 e5 M
- m: L' y2 D T/ r7 e* m1 ]( M( `1 S5 t
​
+ _3 o9 a, e& L6 r+ Q N
) C# g) O" X X1 `' ?8 N, l }( O" d7 D9 h, ~- {
图9/ k7 Y4 Y, H6 f" v7 ^: d
- H1 i, P+ {. Y7 I: b3 @5 |
) Y2 X; f! f1 y$ d$ h综合完成后,报表文件将自动打开。9 X% e* F/ P A' w! E' _
& P5 N# A. M$ I$ X: L* a
2 `6 n$ z% J6 _/ z& N​, k# u j1 h* x! f
图10! t/ B8 k: a' W# u$ v
$ h- P, e5 \0 Q
! K4 h7 ~" Y- S% M$ w3 Q e) C
通过报表文件可查看本设计的时延、资源占用等信息。$ e7 h/ C2 G# _' T/ y
d A5 O9 B4 T9 M k, G: z6 A7 }( v" |+ d* x. I
​/ t. R2 j. C& x. Z7 c- ]
; ]( F {% Z' w. k/ ~# d, |0 |/ ?( G. u7 A! g
图11# e( I& i, |+ C$ x. k
( E) h$ ^3 z( s6 W, j5 V
% s4 ]6 _1 o( Q编译和仿真C代码+ Q3 M. J; e j( Z
# I9 G% `) V0 {* P0 l仿真程序位于工程的test_bench目录下,用于验证src目录下的HLS工程源码。
2 k% b @. Y/ Y; \2 C+ J$ c' I导入HLS工程后,点击(Run C Simulation)进行编译与仿真。2 h' K& ]# g3 n! u8 M* \
0 V& G4 Y4 _$ z7 p4 e
F$ s+ a3 M: }+ o3 ] G( [% D​/ n# u% i6 |8 n$ X" B9 v# Y
图5
7 [4 k" Y/ D4 `4 i# T) `: p) j+ M8 D
8 r$ U7 T2 }7 h; p8 B
弹出如下界面,勾选“Launch Debugger”,并点击OK。
/ K; h/ D+ j/ R3 \; X3 y* A2 P! @+ O5 g. A
' b( x' M% v3 t6 j& L
​, R) L- M" O: K4 Z" A6 P$ z2 O
图6
/ U9 _; i1 t" g& p! i }0 e3 X( j5 u6 [7 M
8 y! G+ s6 f; [7 W4 @' l4 p
编译完成后即可全速或单步运行仿真代码。
5 P7 x) W: X4 f6 M' Q$ G9 j​
: v( H; M. O) S% G% _8 p图7
: h" D; Q- x! a. ] K3 c) j' V/ m: o2 f. p$ S
( k8 d5 N6 y* Z5 A
+ ~* x( y+ L N+ w* B
IP核测试1 ^. Z* X1 g& C# M4 I
/ p4 d {0 x% Q" q
进入案例“hls_ip_demo\project\”的IP核测试程序Vivado工程目录,双击.xpr文件打开工程,工程默认已添加待测试的IP核。6 z& P/ @% ~- D2 s6 t: Z
6 v- z0 x6 E3 g5 J# D, {* F. x0 B% v( O [3 E- f/ R5 O) o5 U
​
3 p) k: _8 {1 ?7 C+ i9 @1 F8 l6 I7 G, x7 ` [9 h8 P2 r8 x% B
; o% C) L3 n: I( F9 `4 p图17' c; v( n' u/ t" \; e1 N* I
如需自行导入IP核,请参考如下步骤。
/ E r- K* j( Z
- ]) c+ ~9 E+ ^: s* c
1 I5 H" i$ J4 j+ M(1) 请点击“IP Catalog -> User Repository -> Add IP to Repository…”,在弹出的界面中选择IP核后点击OK。
) m2 q2 f U& C7 s- }3 y/ e​% B5 o3 v8 _, g. y6 z7 ^8 |
, j& V3 |: L% @3 ?
5 C6 z- u- n2 D图18- u- L* k$ I, C8 m* x7 z. O$ ^8 q A
​4 {& V, i4 z9 P/ S
图19
: u% O. X+ `9 D) B0 {1 B) e: k R(2) 右击“User Repository”后点击“Refresh Repository”,即可看到添加的IP核。
1 N6 o W- c: b: f​
' w/ g+ r/ M: _; E' z* } Q2 \2 n9 y% J
% D7 r- O# Y- m' H! W
图20
3 A6 O- ~5 ]4 U' V​* b% H) i. y3 Y8 v+ K' L
图21# l* L7 I8 ~+ F% C& ?
% R7 i; Y k" E) Z- X
/ d& u& f9 ^; H4 e$ }(3) 如需添加Vivado自带的IP核,点击“Open Block Design”,在弹出的界面中点击,并选择所需IP核将其导入工程。2 s1 o$ E* \( ~' j* `
5 l1 d- ?5 N7 a- V- m4 q* a
$ C- `8 v2 O S0 R% y2 Q​
% V. H$ N/ ~8 q2 L5 g" H
2 \( K3 u; n" t$ ~% a7 l* ~
6 o. C2 U, `+ P) v7 b图22- } R* z, u. O" i w9 k
​
% a* ]9 q* R1 o1 u# I3 G图23
P. o- y4 @' o7 \) ~% M' D" O点击Vivado界面左侧的“Generate Bitstream”选项,在弹出的界面中点击OK进行IP核测试程序Vivado工程编译。. v% O9 J9 T1 s' H5 V8 p
​# Y/ r. b" a1 X8 W0 `7 `4 C, b
" O) x4 k. m& D7 I6 ?, U1 R2 ?7 u8 n- K3 C# d$ D" l6 c
' g% H" i* T' I' q5 G2 E" L% q
5 [8 t5 A5 ?0 i& d. l8 c
图24
* y1 U0 a) X3 A. [3 E* z
, [8 c0 h5 q' m* m& h; l+ h8 z5 G7 h4 ?( k$ t8 |/ I" R
​
2 [+ V- ~' x; k5 z# A! E图25% H2 [' Y- U# B1 j. I, V- Y) y
- `% I' U/ B1 g6 D5 j8 h1 m% k7 R* `5 Z0 H/ ^
编译完成后,将会在工程“led_flash.runs\impl_1\”目录下生成.bit和.bin格式可执行文件。
$ c+ B; G9 G9 S" T4 ^: c5 t2 H4 j; y" ^$ m: h. ]/ d
* U3 V& y8 y- R) l$ I+ [) a# z​. c8 C9 m4 f u. i
6 S6 _% B0 d0 B1 }8 ?
5 t' X7 K2 [1 {' ^* O
图26: v* t$ m9 J5 Z8 G& b% D
: I1 }2 ~3 E0 O! P2 z
3 b8 D$ H8 k* R# I% u请参考基于Vivado的FPGA程序加载与固化手册加载.bit格式可执行文件,即可看到评估底板的LED2进行闪烁。
$ K9 W6 t4 K6 d" T P$ _' b: s' XIP核封装
g% I% }7 j) S) K: L! |: J8 J, h$ R) Q& x( ], z$ r4 A
综合完成后,点击生成IP核。, t5 ?' C5 e: C3 N, ?: i
​, o; Z8 q' a2 m; M1 n
( Y5 o# R0 {7 E7 r* \) ^: t
* w Q- q0 H2 R9 U
图12
3 ?+ H6 |$ F( ~' v' b
" S6 ~2 P* T5 l$ ~$ W9 P
1 ^" |+ I5 r3 h. i​
. s1 K" u* q% {4 k ^' c1 x! v图13
, z/ s: r( x( d# r" e1 W$ n​
8 y6 ~" x0 `6 t+ \; g; S图14
2 c$ v( S$ g5 ^- w4 N运行完成后,将会在案例“vivado_hls\project\solution1\impl\ip\”目录下生成IP核。
% m: G% J* D. J% [- }​+ i5 u- n0 o! m- D3 ]6 V' Q
a0 }: `) b& q. S
4 v9 @+ J- \# T$ w0 W: ^2 H图15& m: z& |& O( d5 m8 R/ K4 R
​" _$ N, R. A7 p& m. E6 ?* b3 K
图169 y0 M4 ?+ H9 A$ T0 D. X0 F+ s
/ S% R: n; t. g% }3 Q6 U8 w5 L7 ?8 f3 P0 K! W! `8 @7 W
l 更多推荐6 R2 S1 N6 T5 s8 z6 [( p: U
' E3 W ~( t' n
​, o7 b7 ^# }6 I! |) z6 ~
( A8 F y- z- k6 a
* o! v5 z, Q; W8 C0 @# f" Z! B
图272 o, s& ~$ O0 o5 G
B" S0 H# u5 m. K5 D
|
|