|
FPGA的HLS案例开发|基于Kintex-7、Zynq-7045_7100开发板
% O8 V3 W7 k2 o3 @* n! u: e; E
3 J: W+ B9 j8 f4 C! ~( D
% g9 F" \3 ~; x& N5 \" x0 q9 Z8 Z h& d
前 言2 d [# Z+ j; z6 H) W
W6 p5 y% i! c# F" T9 ]本文基于创龙科技TLK7-EVM开发板,是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。% X1 [# W( c; q4 k3 w/ e
评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。! @5 P% z7 K* r8 }
x; d$ r1 V% W! T& b- M
' E2 Z0 l- A% |' Z2 z' e/ @ [, D
/ U" Y, A1 `9 \! m' K​
; v6 [2 }* O* `/ Q8 ~1 h' F% g7 x4 c( o: N/ p# Z; L2 ?' e
9 D* I5 s$ ?. z) O' ]: K6 H
图1 TLK7-EVM评估板8 O& L+ x" E$ D8 r& ~6 Y% M0 l
' U0 R" u( J: B& \8 u R2 @5 g/ p/ C% ^5 J" b$ ^
开发案例主要包括:
+ u5 q! G/ r4 ?2 M- R) kl CameraLink、SDI、HDMI、PAL视频输入/输出案例
, ]: H+ G& G) D8 S, El 高速AD(AD9613)采集+高速DA(AD9706)输出案例
, v! S% m2 a, Hl AD9361软件无线电案例- s7 H. X& Y+ O$ f; t: e% }9 c
l UDP(10G)光口通信案例
1 L m* D% B& K4 [l UDP(1G)光口通信案例, o' P. B& K$ e
l Aurora光口通信案例
. P" w0 }% n6 g( t. V- T5 {' _l PCIe通信案例
8 Z( M% a0 {& Y7 @l 案例源码、产品资料(用户手册、核心板硬件资料、产品规格书):site.tronlong.com/pfdownload
5 V% q( N- v6 S0 l; p3 d- J* B* {# e# b
8 e* E Z3 [2 L$ G* W- m7 k- }" D0 E' u, T2 I( ~- M; e2 {9 i
! z8 V$ r& z: E4 g9 ]* H8 O& i本文主要介绍HLS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。- m8 S0 ]$ e* h! F2 `& k7 }
Xilinx Vivado HLS(High-Level Synthesis,高层次综合)工具支持将C、C++等语言转化成硬件描述语言,同时支持基于OpenCL等框架对Xilinx可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。! d N' l9 B" X( d, I" j: p
( z& @/ t- K2 h& A
# O {; f& a6 F+ y
HLS基本开发流程如下:
5 |2 c2 p6 ]* T6 Y9 E3 r$ u% P(1) HLS工程新建/工程导入
( K3 X4 v- V& \+ s, P/ }3 v: a(2) 编译与仿真
% u- S; V$ u* E0 I' G3 |(3) 综合' {6 w1 u3 _: W
(4) IP核封装
" e' C0 M1 `5 X(5) IP核测试; f3 o# t p5 h; b9 I, P6 i
8 \$ x& w# m; v: ?
2 [1 u+ S: T6 k. h5 }
HLS案例位于产品资料“4-软件资料\Demo\FPGA-HLS-demos\”目录下,案例目录详细说明如下表。% \! @. J2 t7 ^0 ^( D+ _
5 y: P" H6 H+ C0 K) c @2 q$ b2 {
) k# ~- a* j. [- F
表1# F5 D1 @/ {, C; s
hls_ip_demo: Z/ V; m# L" f
| bin4 l" B$ I6 J* _( m6 A* L, ]
| IP核测试程序可执行文件( u; U3 {/ M" r ^2 n5 J3 ]9 j$ i
| project9 i0 Q( ]& d9 n& Q
| IP核测试程序Vivado工程 H; R; m1 ^' \' a
| vivado_hls
0 ]) T+ [$ v2 a- ?' N | ip_package! b2 f& @1 K# b3 j( \
| IP核9 h7 p4 m" _9 r2 U: F! {2 x
| poject
e3 W. z5 l! K$ d% E | solution11 o3 c+ {" ^3 ~
| 仿真方案
" t4 h: K, _8 W- m7 D | src
, d& P# V6 ?& _% s5 L | HLS工程源码
+ v5 K. |. D5 I X1 ? | test_bench3 s9 Q+ N# ^8 n1 B$ S9 h) x6 T# O
| HLS工程仿真程序或测试文件0 P. O4 } n7 P" f+ l5 |# u/ c
| vivado_hls.app& r' o! J+ g2 X8 ^! p
| HLS工程文件
. j! p; b8 \3 n2 ^/ V3 O | HLS详细开发说明可参考产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
' G; p1 A8 G6 o h3 Q5 G8 P
7 }; `, h) U, C
1 r4 u8 g L& U E) l
. Y7 O: y/ s: @3 y N
* e. q( a7 ]4 q% y/ I HLS工程导入
/ f( Z% l6 L9 {4 z) g- ^
& G' _4 v" J7 r% H3 i3 F双击桌面如下图标打开Xilinx Vivado HLS 2017.4,并在弹出的界面中点击“Open Project”选择案例“vivado_hls\project\”目录,然后点击“确定”导入HLS工程。
% d7 n; N- ?) ~) Q! \& x9 r. r7 i. _8 g. M% E0 N3 a7 V6 y/ }
; v% [, f1 D. O, E
​1 r" g3 N0 P: j+ r
图2
) V- l W' w- Q( h8 d$ n% K4 L. C* ^' K+ O
% F |5 S- u9 F7 e L% ]2 s
​" L4 f2 ~! {' @: y
图3
# ]2 K, `2 U. E( X4 @
& l+ O1 u# M/ C; D$ D5 q- k( ?
6 h" \4 n. N; X# E" U2 O​3 x) L4 c$ E5 |+ R
图4
" E+ E' E" Y6 \! J8 ~: [亦可新建HLS工程,并使用C/C++等语言进行程序编写。3 T8 X+ O# n% g
# q& u4 i! Q1 ?7 i0 }' e' \
/ B W# P1 X. d0 B2 K
c0 v$ b* J Q
( Z$ e N; b8 T w. a, J 综合
& Y1 j8 j8 E" ]2 Q! k' c7 j
# R" G( U+ }7 b" s0 u7 F1 P本小节演示将C/C++等程序综合成为RTL设计,并生成综合报告。
8 [: F4 \/ Z7 C2 M: b点击界面右上角Synthesis返回至工程界面,然后点击进行综合。0 k- O2 a( ]2 g, a; k
3 r9 X- L3 R# }$ {2 J- I/ e- j! } D: D- j M X
​$ C H/ J' k: o+ P
图8
( g5 E, {& @" k. m+ T$ {/ ]( J& E; x
: |" }% Z$ Z2 f+ f) N* l
​1 \, J3 s- O$ z% |0 u# S
+ T2 F# r4 f$ _+ B- _2 V) l
% U8 v2 D, b4 ^( D6 j6 s& M2 y$ q图9
( v1 |5 {' C3 y. K/ w, _6 [4 H% o' t! [; A- u
0 g7 d5 F9 `# ]/ x" z/ z, E综合完成后,报表文件将自动打开。2 m% I- l; O9 P t: Y# P
; n9 J+ `( U- s. ^4 l1 [' \3 H3 C
0 c2 m8 E( ?; y9 T6 [& \# C​
$ E& e) f; M' {$ j图105 v) g8 ?5 R" F% {4 f' q% W- {
% u8 b2 Y; _/ F( O# I
5 n* s$ \6 {: K通过报表文件可查看本设计的时延、资源占用等信息。
: s7 O8 a% O* _" D* o9 g/ e4 |" ~6 `# s7 y7 @
% Z. D7 H# \! b" [' n
​
( R1 U) i/ ~$ x5 [" _7 [5 e8 C& a1 a& t
1 T! {3 U) A6 x5 F+ y& {' o! Y' W" }4 \
图11& F' Y5 w' z# U/ c* F$ h& ^
5 I/ a D9 K. z
3 u9 C* c; y1 q6 W
编译和仿真C代码' g* D2 `& N6 _6 s/ O0 N7 R; G9 B
; {6 V7 W) l2 B8 r# _, L
仿真程序位于工程的test_bench目录下,用于验证src目录下的HLS工程源码。# O# E2 o* H1 X: \
导入HLS工程后,点击(Run C Simulation)进行编译与仿真。
5 d! O# }1 H) f2 V6 T9 w# x' Z) e9 T0 `
( e! I* b& I1 k. ~) C. Q' Z​4 s5 u: l$ H/ B1 F
图5
2 X* k, i" {6 _+ L' s7 V
a, t# X3 b! H+ e9 J
) x2 a5 N! H4 ~0 R6 y$ \# E3 M5 F弹出如下界面,勾选“Launch Debugger”,并点击OK。, b- k" a3 A* ?- W& ` D
9 \3 q/ g; {" Y E+ |4 ]1 l
1 t/ P2 S. O& ]) ]" h​
1 ]2 W0 |! C4 w图64 u% K: Z# o2 C! n
/ z" U& [/ x4 b
1 M0 {* h% o' a$ z1 A编译完成后即可全速或单步运行仿真代码。; f2 [, a9 y: _2 n' Q% t4 b
​' s4 k) A8 `3 k8 t' m6 {( ^7 O i
图70 c: N( r0 S; Z7 D3 X( K6 d# D
* k8 U0 s0 ?/ V8 {
0 [" P6 n$ ~: G" _4 o" T$ \, l5 R& i5 c
IP核测试6 Z. K7 s+ l0 Y6 t# _$ V$ `
! p/ M2 x* ^- U
进入案例“hls_ip_demo\project\”的IP核测试程序Vivado工程目录,双击.xpr文件打开工程,工程默认已添加待测试的IP核。* ?7 M+ x9 N0 q7 e# f! Y! T9 V6 D
3 t9 F$ D3 B$ f/ j5 A1 B
; h6 ]. J! [1 ^​
/ d" j. R% m+ q8 M. {8 B: A9 }$ z4 ~0 U
' B6 d" D4 D& f2 }图17/ N8 Q8 X, l$ x% }$ r" [
如需自行导入IP核,请参考如下步骤。4 M/ j" v# B3 q9 ]
* q5 n# M; I( O5 Q0 H
- b# H, T5 F1 X7 W: d( i$ s; |
(1) 请点击“IP Catalog -> User Repository -> Add IP to Repository…”,在弹出的界面中选择IP核后点击OK。# A- K* B# Z% r/ U# }
​
5 s0 q$ |5 P, q$ y: y+ r8 e( |
0 [, e5 L0 C* {/ ~2 J; j: _! j3 P C& V6 ^
图180 H# J$ t8 j4 J" v
​
) i& e- F9 H1 r/ {/ k0 c* ^图19
! `( ?& A8 A$ B4 ]$ p(2) 右击“User Repository”后点击“Refresh Repository”,即可看到添加的IP核。
" F& b0 |4 Z# I" Q. P​
6 `) ^" v5 d7 f- R& A7 k; Q: B, t) I3 L$ `7 F# k( y: s4 h8 d
# t' Q7 F5 H9 |/ @8 q
图201 X; o5 { }: @! e
​9 r0 C+ z# s) ]$ L( U8 w
图21
, v5 \- e- C9 r
4 N' A% y4 [+ x- J9 c# u( u( g* e6 U) V
(3) 如需添加Vivado自带的IP核,点击“Open Block Design”,在弹出的界面中点击,并选择所需IP核将其导入工程。! \0 g5 U, I- A1 J
- N2 c( e/ y( ~/ N8 j
# c( j8 t6 X/ |; O4 g. |2 v
​
7 |7 l3 ~* \; c0 N5 w0 T( F$ @3 h3 t
- E J8 J {& V2 d! A2 |0 {
图223 k1 q# R( D4 Q$ G% e3 Q
​3 V7 |* B; H, [ |& ~$ F
图23# y, Y) \8 o5 z: H4 s
点击Vivado界面左侧的“Generate Bitstream”选项,在弹出的界面中点击OK进行IP核测试程序Vivado工程编译。
: p: {, x- A5 W8 \4 {" U​
' U* j7 X( t5 F7 u( _8 U+ [& m& V2 n9 H$ k& A" W# Z1 _& r
( N3 p) A8 l* ^
1 D) Z2 l" ~( @2 U/ f3 @
9 ~( S) }5 e2 }+ W5 Y) k/ p) K3 ?图24
7 S+ _: H9 h- @ s6 R3 Q1 U+ r/ f8 L# K+ w; t
5 v4 j# F/ q7 u: _​
, N' [3 M! H- o4 k' ~" X图25( W6 h1 }9 R" Q# U1 ?% g
& b. |9 p0 r* f/ k4 X8 U; e2 }
9 z6 ?! O) ]9 p; H, z( L( T' S
编译完成后,将会在工程“led_flash.runs\impl_1\”目录下生成.bit和.bin格式可执行文件。 b6 ?! y4 V& Z, U, l# d4 p
8 t/ P1 \& |$ Y5 P) B, M8 E" p4 E% I9 a
​7 z+ C, V: z2 }; N0 H0 M
( J7 n+ k& W' B1 O5 F# ^& E2 f0 j
4 C: w' k) m6 K
图26
1 f6 Q9 D: i9 r* a- h) D. s2 a- D. b: ^" }( t+ i8 R, Z
0 f' V! U4 M$ Q2 |& \; L请参考基于Vivado的FPGA程序加载与固化手册加载.bit格式可执行文件,即可看到评估底板的LED2进行闪烁。
' ], x+ N( g5 [9 W$ y0 fIP核封装, ?+ s) x4 e. [6 w1 _) `# {
0 g/ f9 ?6 c: J- g# S
综合完成后,点击生成IP核。# u+ o% D* ~* ]+ y/ D
​3 s1 f3 ^6 w: _4 m$ p' a
" w; v, L- z9 h, p2 |
! s8 A+ h6 s# s6 S- k4 z3 K
图12" `- c8 }) Q' H; g
( L' Y! V* o, M7 [8 Q: {
, D# w4 l- e7 D
​' _: G1 J& c0 V, d% {3 z8 \ `* V
图13
" T6 i4 {3 r% c! E( |( H​! l# y; [ i& s: J) x9 E ^
图141 E& q' n5 |: R/ ?
运行完成后,将会在案例“vivado_hls\project\solution1\impl\ip\”目录下生成IP核。
, p' q3 S) x4 v$ ?4 n' E! B​3 i( ^: K9 [6 V+ g6 W
4 y4 v Y5 M: i8 z# m1 M
( E: b, _8 E6 x图155 R) @0 [" @7 j5 H) @
​8 R7 ^+ h1 r8 i5 R% u
图16( n& x) C- T, w! B
9 P. O6 |8 L! {
" L4 E# l4 r3 wl 更多推荐
; \2 x# A3 V1 b8 n% s
+ R4 [- d& ~: u# q, v​
; x6 X( z( a [1 \5 I8 d# V+ D9 P" Y2 d4 w; A- j; L. q/ C0 N
G: R9 E! y) w9 B- Y) e图27# P; p8 \( j$ s6 o7 f. T% N
4 q9 m! b+ D& ]( x$ C4 W9 p |
|