|

FPGA的HLS案例开发|基于Kintex-7、Zynq-7045_7100开发板/ D5 U" D! _, x' F
C$ d5 s7 s- ?7 J4 J% z
4 q0 G8 Q1 g+ U6 l& s7 [8 w8 W7 ~7 h# b7 b9 G8 N+ K
前 言
) E3 l. w# |5 _! V, \% c1 Y+ _
2 R7 h, n, C# S/ x5 R, t本文基于创龙科技TLK7-EVM开发板,是一款基于Xilinx Kintex-7系列FPGA设计的高端评估板,由核心板和评估底板组成。核心板经过专业的PCB layout和高低温测试验证,稳定可靠,可满足各种工业应用环境。 m* y: C2 Z+ `0 P2 F: L
评估板接口资源丰富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用户快速进行产品方案评估与技术预研。" B+ o2 M( ^* |4 ~' K
0 _" z& w& G6 U3 E& Y. h) E
1 C/ M2 e- J5 g5 b
/ b. C/ |( W9 j% Q z4 l
* O) R! R* v S/ l5 n
 ​
9 P; F' ]: h9 G+ K9 S* \7 O5 d. O+ [4 j) C( B; ]! u
]+ J) d1 g ~7 _* o! l
图1 TLK7-EVM评估板
# o* ] i8 G9 p
( g0 l3 M6 Z! P4 z% c& P# i
( G( f2 Z5 c8 ~* t) ?开发案例主要包括:2 J2 {' m4 Q# u x @( s' z
l CameraLink、SDI、HDMI、PAL视频输入/输出案例
( L E# N; Y- L! kl 高速AD(AD9613)采集+高速DA(AD9706)输出案例2 N8 V$ { O8 b3 G0 q5 M' v( x2 ?
l AD9361软件无线电案例
9 N0 ?" y- U: I6 _, \: Zl UDP(10G)光口通信案例+ b" Y3 X# {5 [. F7 E* D
l UDP(1G)光口通信案例
# a$ M; i0 m) |4 @7 Q. t8 `l Aurora光口通信案例
( n/ p { N7 J. h( [0 I; R$ { rl PCIe通信案例
7 ]: } n- J+ l4 ~ x: g8 Tl 案例源码、产品资料(用户手册、核心板硬件资料、产品规格书):site.tronlong.com/pfdownload. C" m" _9 y0 g5 M5 x
p) g0 R$ v! D k8 @6 R, u, x/ t
6 S0 Y5 @6 h+ P- ?/ Q
; i! f8 ~) N6 `2 V( U7 }
0 `7 Z0 G% u. M* \本文主要介绍HLS案例的使用说明,适用开发环境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
/ @, Z K% Z: |3 h% nXilinx Vivado HLS(High-Level Synthesis,高层次综合)工具支持将C、C++等语言转化成硬件描述语言,同时支持基于OpenCL等框架对Xilinx可编程逻辑器件进行开发,可加速算法开发的进程,缩短产品上市时间。2 L$ p8 I* X$ [1 A% ]9 Q
! M, E& d% }; d z$ x( G3 p
1 K8 q: C* v5 Q* W' n2 t2 J% ^' eHLS基本开发流程如下:
9 o! ]- i/ z! b* B; A1 i2 g(1) HLS工程新建/工程导入
2 q% k% N( _9 T9 v! x h% O(2) 编译与仿真
' f+ X* C- ?5 s- b1 V- f(3) 综合
2 Q# X0 l/ V& M# f' Y$ W a% v(4) IP核封装
9 D4 i/ {, |# Z: L' o(5) IP核测试" D" b+ v9 n4 l4 A. W
% I( y5 R) f8 P4 D3 ]. y3 F$ U2 m/ N) t! L# b2 {
HLS案例位于产品资料“4-软件资料\Demo\FPGA-HLS-demos\”目录下,案例目录详细说明如下表。
" l' J. h! C) _( v3 n6 z# G+ _7 m- n) e# I+ [# t& H1 I$ T
4 e4 i- _0 t, W, a1 `0 `表1- N ^$ {1 T; I6 k) ^8 A8 ^) Y
hls_ip_demo
8 e+ }. d5 A) n3 N# p | bin( s& r4 V; d' A/ e, c
| IP核测试程序可执行文件
& e2 ?5 _( S9 n; V( A4 V* | | project
9 i; G4 K% |- [5 x | IP核测试程序Vivado工程
4 N2 V' a n1 g5 @2 @( z8 Q( _' y, ~ | vivado_hls8 R; p0 O T0 y+ D6 C8 K
| ip_package
9 f& o; e& {! B, O | IP核& A$ @9 \, ]3 C' j; U1 m3 H l
| poject
( {" y9 F6 a& l! f | solution1, T. y% d$ m3 w; ]
| 仿真方案4 n+ h5 Q# [2 Z" a1 y; G3 ^
| src/ `% t' P9 Y$ ^4 U$ D6 T: s
| HLS工程源码
- q1 X0 G; y. g* s, {' i% Y | test_bench' m6 ~, ~& _+ V
| HLS工程仿真程序或测试文件% Q! ]4 f! F8 z5 n1 n8 O
| vivado_hls.app" O1 k k' S" j- I- I& _" h2 |( x; {, Z a
| HLS工程文件% K) u, j! U+ g+ r
| HLS详细开发说明可参考产品资料“6-开发参考资料\Xilinx官方参考文档\”目录下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。; T9 A9 v- y# A7 L6 g0 g/ I
7 K- T# ]) M* r# w' _5 Q
: k, ~( R. Q7 p, \7 @/ D, P1 m5 A( l. M/ @0 p
4 ~: y# b- A. e! g7 V2 m5 t* n
HLS工程导入
9 x0 S8 [: ^1 W m1 V; V
0 T' O) x ~- S双击桌面如下图标打开Xilinx Vivado HLS 2017.4,并在弹出的界面中点击“Open Project”选择案例“vivado_hls\project\”目录,然后点击“确定”导入HLS工程。
5 ?1 c) U7 C5 S. D. O8 g* I! Q% z# k: W2 M
. o6 m/ q: X2 A3 h
 ​
/ s* R$ L; p" o* F- ?图2
& @ p% Y* k! Y) X6 q) _# o3 x
/ X' L9 A+ s( L5 J# r5 L: ?
- S# X4 S3 {1 S ​
6 |" Y4 ^. m7 s( t! ^图3
) K6 A* n, U3 Y9 [& c8 F1 u' N+ o* E7 `) I$ W7 y/ U9 X8 I
% p5 L( X s& e
 ​
9 i% N4 O* P5 F# [图4% w% I, U1 b5 B! a, A% a
亦可新建HLS工程,并使用C/C++等语言进行程序编写。, R- y+ n4 _7 d
+ \ K+ Q+ j% P! @7 p" ^( L% K
# ~6 Z5 W6 | _6 K6 ~0 i3 I
' w9 s6 D7 |/ g; V% V8 E: c
5 R/ O! u9 J7 ~, D, `
综合. `, {- \& m$ c
0 Q$ q3 @) b' l1 h6 _& W2 O
本小节演示将C/C++等程序综合成为RTL设计,并生成综合报告。
' v7 D8 j: `6 B, \$ U点击界面右上角Synthesis返回至工程界面,然后点击进行综合。5 r1 Y, N$ h+ m% ]# C |
2 G; A: H) {& y2 `( H+ f# [5 }& |) d) s }# E2 N9 P, r& \$ Q
 ​+ D: _# s# q, b, b1 B/ N
图8
4 y$ Q* Z) R/ h' u3 B) f4 q# o$ d; @' o' Z5 i
5 H. J# D- `) [: q! p ​/ u% b! B! I/ \3 v3 E
" }: e) S3 d! X# D+ A, H
?0 z% {9 c. j, C, Q
图9; Y- w9 T* F: g+ y
! D- a4 U G, w
% a+ ~. z! s7 I0 w9 n综合完成后,报表文件将自动打开。' G& ~" l" k) s! W1 ?9 M; J9 j
1 t( t7 {" J4 w, V: u
" ~3 a! e* ~7 L, k: i" Z ​
) |% \3 i2 |8 n3 `2 D图10
7 m% j7 g! ^" b9 {* k
/ H+ F8 s( X) ?, Q+ k! l. U4 G: D+ K
通过报表文件可查看本设计的时延、资源占用等信息。, D" _+ K& q2 V2 V, H7 `5 O
. G+ @* i' n9 c ^9 Z, }# g; s% J
/ u2 \7 p) S4 t8 Y' y- g x- u! X
 ​
4 B- @, Z! t, x7 M6 N1 J6 L1 z7 K1 H; M# {/ }* K/ P/ ~
/ r& h( W1 c$ U& N p
图11% N" x$ R& X3 `
; c5 B# _ K+ ^) A* D
. C1 I p6 a% \- X3 y编译和仿真C代码& a7 t- {" r/ w7 L: J! h2 ~% v
* N( H. \3 v$ |/ z' I, H
仿真程序位于工程的test_bench目录下,用于验证src目录下的HLS工程源码。
9 ^# e+ R$ Y; l0 u Z导入HLS工程后,点击(Run C Simulation)进行编译与仿真。
3 ]" Q. T2 ]. r" ]6 P8 z* Y1 L: w- O- e7 D- D- t1 x/ ?
3 v( K9 ~4 E r" r4 u7 ]% o6 G ​
# Z: X$ C- N% k2 C. U图51 }8 B6 n2 k! }1 b x8 F
/ }3 n1 p2 A! b- w+ g* G8 X, y) d- Q' N
弹出如下界面,勾选“Launch Debugger”,并点击OK。2 R/ {1 `! t: `6 F2 p L0 D0 H
, F7 E9 w3 |8 ^# Y, H5 {
% i* f/ v; p0 B0 a1 e, e+ n7 v ​
2 p5 R. N) {3 X5 c$ J1 J图69 q2 u8 h+ Z9 ?' q
; H6 G5 Y' l7 }! j) v j# U# I6 i
0 ]& _2 X/ Y; m1 i- m- N编译完成后即可全速或单步运行仿真代码。* n' {8 X$ ]# Z E" p9 Y
 ​5 b" i/ o5 ^$ C; T& f. R' g% u* c
图7- W7 S. _1 x/ ^# t
4 k+ B7 h) z; I- N8 G
8 O4 R; z; A9 Z: m& M( C+ q( \& [* I' {& _
IP核测试
. X# R- E8 D0 ?0 o- ~" B$ Q* f3 U* S& o% [
进入案例“hls_ip_demo\project\”的IP核测试程序Vivado工程目录,双击.xpr文件打开工程,工程默认已添加待测试的IP核。* P# W( M1 m: Q5 j' y- Q
8 N3 P; U( }( H2 m0 V. S, t$ ]+ {% n% \' s, u. L8 _( g
 ​& E1 j* a( H+ H: t% t6 d
( b9 [6 }& a, e5 u3 |
& S% R6 x* O' k: L r% n+ @$ y图17( J# ^7 b- x* X0 [' H2 B! w
如需自行导入IP核,请参考如下步骤。
+ g0 a. }' a1 z% K' h) |
3 ~" Y( ^) a2 U5 ]
+ M( f0 U$ t- t7 \' h7 r6 O(1) 请点击“IP Catalog -> User Repository -> Add IP to Repository…”,在弹出的界面中选择IP核后点击OK。
4 H# b% w# I* T. {( c ​
' W- C' ]7 N/ Y @- ] @% |
& D% \2 R" T- Y% \+ j! Z
1 K" O& p: G6 I1 l# N图18, q5 A/ M9 @# w$ b. n: r; x
 ​
3 D5 P, i L s' }, W* K图199 T% S* G) N- K, `) H' h
(2) 右击“User Repository”后点击“Refresh Repository”,即可看到添加的IP核。8 M" ?0 f- n! n+ O7 t& B, p d
 ​9 u, Z1 G0 v8 o5 [, A3 N+ ^
- C$ u' R" Y2 y. `. v; C. k8 q
" V$ S! L0 v3 v* i* ?9 \; p
图20
7 B, m- I9 Y$ Y3 D# P8 R3 | ​; w( T. F5 r; q& o6 n7 }) ?
图217 E! A- @: G3 Y* T
) |4 _8 ` W* F, b
& g5 _0 A2 ?6 |% S/ T(3) 如需添加Vivado自带的IP核,点击“Open Block Design”,在弹出的界面中点击,并选择所需IP核将其导入工程。
1 i2 o- L- n; P1 B1 A1 y: c/ E/ X0 Y* r
9 ` w! _) `- {' G5 `9 I' X
 ​
! y/ @# c5 D; O- y, X* H. z% r& L, D% p2 d* H
2 @4 G$ @" J# d7 T: r* E图22
$ i* f* o, G" S! ^6 H4 a0 K3 p ​! n9 V, u6 z# C: T' G$ ?3 G; A3 |' o
图23
" ]1 h$ l- b: p点击Vivado界面左侧的“Generate Bitstream”选项,在弹出的界面中点击OK进行IP核测试程序Vivado工程编译。4 S6 |; m+ b% L8 Z
 ​
+ ^; c5 Y' G' N$ D, q8 D3 O& K4 D/ U% R
p4 g, Q! {6 E* |3 V6 z1 `& u) y& [
5 @7 H5 V$ D: @2 @3 ?
: ]% L$ D* F- r2 {6 f" Y! B9 F图24
6 ?. u& Y. N! q# s1 B
4 j5 [" t1 c" O* g# ?" m# x9 R2 P& f, x" z5 M
 ​; x ?% r- a7 w2 \& K' T
图258 Y0 z" A+ W- m# P# s" o- u
/ r, ]3 S+ o& H* t
* `) M7 S* O# n# ~( R编译完成后,将会在工程“led_flash.runs\impl_1\”目录下生成.bit和.bin格式可执行文件。
8 C5 _' Q5 C, Z+ ~& Y; d1 j( \# p0 {/ ~: p0 Q
, G+ v0 `1 v1 D5 x) G) x
 ​
; U: X( E: d# Q- r- E* `/ z9 ^% ^: X/ C- c- H
+ O) S$ d: \& k1 z图26% p2 Z M6 q1 f0 h3 V- ~0 k+ ]
8 r l6 m$ Y. K% y) Z
6 O1 G5 ]) l. f
请参考基于Vivado的FPGA程序加载与固化手册加载.bit格式可执行文件,即可看到评估底板的LED2进行闪烁。* D6 \0 z | Q; r8 p
IP核封装' i5 m0 g# V8 V# P) P. d6 j
* w( C5 g* J: C8 A7 T$ t: @综合完成后,点击生成IP核。8 A/ A/ h. N' P- Y+ n3 v* R
 ​, s( I1 X9 |: x9 Q; p
+ J! m, K! o7 O }8 b; j" q
1 m8 y* T5 U/ l% o0 v图12 O3 f6 ~8 x0 P x+ R7 x
3 K0 ^% ]$ \9 R2 F. D% }4 Y& t. {8 N9 {/ m! B
 ​$ F9 v/ Q6 l+ c. G# _
图13, j2 i8 K% H; N6 s- r
 ​
( W. t9 c1 g1 \6 B# k+ Q) i图14
- J7 q! q; X7 C7 @0 \" s运行完成后,将会在案例“vivado_hls\project\solution1\impl\ip\”目录下生成IP核。% e5 \' V7 I+ g! q- B( l+ d5 ^/ q0 w
 ​% Z- D; H, A0 y6 h; n
, _, W( J- A9 U
( W# w+ k# N X& [7 s( J* S图15
& l0 l9 P9 ?/ T4 r$ m ​% n' A9 A9 @- _) Z" P3 z/ p [
图16
5 W* m( w' z/ m( K
9 }: F- I3 q/ ?0 |! S' k8 u
' W% U* @) E, V9 }1 A' k; k0 gl 更多推荐: [, j( ]7 }/ |: G# Y
" V" T0 Z! ?6 U" i' J% @8 i+ x. b
 ​7 t! i u& ~9 ^. K0 Z9 t
) E8 f" \2 {6 a1 s( U ]
8 u$ e. d: k: J& Y( A图27
# l+ m) A: u v, y
& \8 l0 \, i4 W% a |
|