|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板
8 p3 b" [0 m& @' Z o+ U! Z. J3 L5 |) V# S
9 E& E4 c4 Y; D7 p. Y n5 i) w
) i R: _) \1 w前 言 o" u, Q! x7 R3 D
$ K7 w+ l( ` U: l( u' v
本文基于創(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)境。
0 l, V& r8 t; w* E4 |( }0 H% e評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。
# W% v. r4 S: b5 q
9 D; _) [: ~: I, J
* `" a- I, y3 i. C9 }* w( _
1 y- B$ h! R9 K3 M/ Y, V
% [% d+ b; [# V# x5 L/ x+ v/ D​
; K! G8 d$ e C( i1 G$ N$ K: o4 v( N$ G V6 c
; L; C0 E; j8 Y) J. \6 h
圖1 TLK7-EVM評估板
* ?9 X2 s2 w$ o' U/ p G- F5 F0 Q+ ]6 }5 T r7 ^* F. ]
( x0 ]! o/ L7 V0 I. M6 s
開發(fā)案例主要包括:
k5 w; Q. y9 ~2 Y' F# }: p( Ol CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
* c2 K) p, X: v: `1 r$ C0 R# Wl 高速AD(AD9613)采集+高速DA(AD9706)輸出案例6 c# `8 f' F1 @
l AD9361軟件無線電案例
: V1 q, P% |% q1 W" L& Jl UDP(10G)光口通信案例
: l% E7 i; o' W. dl UDP(1G)光口通信案例" D W7 J3 a: f, N- H- ~
l Aurora光口通信案例
8 ^% R# d) f. a( `- ^7 _" Xl PCIe通信案例
2 k8 |, i/ B$ Y: p/ L% b% {( x7 Ol 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload
7 {0 U; D, N/ n) z6 @8 w, h; Z% G+ c) j6 i# g& g5 U3 [- o X! U+ I$ z
+ p* b# E" z! x1 M9 i6 W
4 `5 F% h. s. Z" z# g- n
6 V" z6 g' M+ D
本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
% Z3 c* Q( q: ~0 {( r b* V0 f- O# }Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時間。2 p+ K) R7 N# q: W. `$ u8 d9 x
8 ^' Y# ?. @/ @3 c E+ G' |% g
! Y1 p9 z1 n# p, C$ N9 l# [9 v2 U3 PHLS基本開發(fā)流程如下:
7 y# X' b8 p$ z7 E(1) HLS工程新建/工程導(dǎo)入
1 K/ ^& H5 c$ @% h# ~2 B \5 g(2) 編譯與仿真9 v- X# K2 ] o
(3) 綜合0 _0 w- K1 ?; e8 \1 o/ O
(4) IP核封裝
8 g7 O8 w% _2 i( S" U& n(5) IP核測試
3 s, V) @6 g1 {. i' P0 \" z! f" R* N: m' G4 d# o; i
7 w2 E( S7 T) w1 d" j, ]" K
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。
/ p6 q( ^; c* d" E% D* p: b
5 S% @% V7 S; h: `2 @4 p( a( i# E" {
6 B1 Z, ~. m5 W* n表1
3 S0 O9 m4 a$ B; y" vhls_ip_demo N9 ~: I K8 ]" ^/ M: X* D
| bin
1 a5 ?3 Q3 g" E5 Z | IP核測試程序可執(zhí)行文件. w& r$ Y! f1 G2 V7 L6 n7 x0 S
| project
$ h1 w" ^0 @+ @! \2 \5 Q | IP核測試程序Vivado工程
, A/ R1 @4 V7 X% |) H1 H | vivado_hls
- B' C9 x: _& r. l& g- b | ip_package) I7 L! S! x: N3 l6 r
| IP核- B! V6 J" {# O* \$ l* Q0 ]
| poject
8 C3 n. s2 J6 C5 }5 k | solution1$ ~) J, y3 g. M
| 仿真方案3 d. {( D" Y. @/ l* q; I' C2 K
| src
6 d" W/ H: N5 Z | HLS工程源碼
7 V6 v* t- k0 R7 Q( e% g | test_bench
8 x. v n, U! y5 | | HLS工程仿真程序或測試文件$ M, ~! @) U8 g) D( ~- u
| vivado_hls.app% ~0 m4 E6 J; c- `0 A
| HLS工程文件! Y4 P5 a. a7 S, B; O
| HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
9 s. c+ N6 N" N' S
7 r) \+ j& V' [$ u2 I" V$ J4 N4 ^8 c1 a, S' ^" u G
( B9 h" H9 w( c2 @) p! b* C+ E& K. ]5 r( B7 ]" H
HLS工程導(dǎo)入
% f7 y/ F2 D/ E9 h# `6 R
$ O' ` N: Q; ] r) ]雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。6 o( r) t+ E$ e9 p0 q4 O Z) y0 d
! A1 S2 m6 {7 j0 w
, T: I# k3 F. j. J
​* v+ g1 ~# N& {
圖2
; ?5 ]7 ?1 h, X/ G5 w
9 o1 B9 l }0 @, m: A
6 P" L# a v e7 t+ t9 x4 v8 t$ Y​
- V, I9 r! z: Q圖3
4 B7 N% y0 I1 y; N& y! A% x$ |
, F; I! j" ?+ F: r0 F9 ~2 o: i% z8 Y( n! f0 U" w# T
​0 y% g: L2 v) w: l3 e) F% r! T+ L
圖4
* H, | M! S3 K. b4 z: z亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。; l6 U$ U# Z, C+ ]) x
& ]' k; y8 e) P5 o0 Q0 w1 Y
- v% h& O, i+ Q+ b z# l5 @1 o% j/ i' e& G. }7 i( K4 U
& w+ I# V- n0 U5 x1 L 綜合/ j7 t8 J \2 p( g
' D( o8 F3 O; s8 n. Z, X9 c
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報告。4 |/ w5 a) I% x$ D% H. z: l
點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。& s% g2 X3 V$ S6 ~$ |
; s* f1 y, B4 Z2 ^3 A8 K2 ?7 k
$ t2 U1 k$ M8 {- l9 L6 z
​
: a# e' z* d% W, p3 x0 {圖8
! V% _ \% S1 \1 m& K' m. o' T7 t4 f
f, c) _+ v! U9 r3 @. @7 }+ n​
( O' p7 r' B# g# g9 o
3 g, k! H* `& o8 C3 u0 T1 J& J7 K: d8 M% L8 g/ k
圖9
1 s8 u6 p5 M- ~( Q0 J W1 ?& a1 ]2 M1 L+ f5 N
% O7 }3 s2 v6 H, `+ r* w
綜合完成后,報表文件將自動打開。, R2 l+ e2 R2 s3 @7 a
; g9 ~ ~8 Z9 W1 y& Y, n) r
7 O/ U7 I% u0 E0 `! M1 I​ }7 m: Z. v0 U5 T; L
圖10* G% T) Z4 ]0 A* e- z: e: I
3 `1 D4 J6 R0 d
7 f1 @5 \: B+ E) \, r& N通過報表文件可查看本設(shè)計(jì)的時延、資源占用等信息。
1 z0 S6 x$ m J l' H8 A3 V" M2 g' b" B$ Q6 Q& g1 J
. c9 ^$ H% y8 n; Z9 V! ?
​
5 x; T0 g3 R" d' k! j
, k% }+ E) B0 J7 m+ w% {9 k$ t4 j, F" }6 e: B5 M
圖112 x2 Q" o! d1 x' s5 P
0 {5 y) c# U2 c) k% |/ m
* }( @& ~/ \- j: I編譯和仿真C代碼
' `# D" b1 ~3 W4 ~' ^
7 T7 W6 E" s5 l仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。
5 a3 f0 t; O) Y9 }) y導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。0 D$ ^2 s$ B' b- u( {) ]' r( q
5 q& T! p# ]. ^' d6 n" h
6 o. b5 D+ S$ `. p9 ]) z" c​
$ L5 P+ |- m4 T. {3 [ A+ q# Q# E n圖55 |8 i1 J. E" z* N
( ?- `8 n( r' f) f- a
, \/ [) W9 z! T* C9 C彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。
) a) a1 d, o. }! r; ^' \ B0 l; m
6 }" t$ q* V9 a
\' t" q A- L( \& v9 I R​6 k3 t3 g" E6 j6 u. P2 X
圖67 H& `; `* P4 Q
. o" Q6 }9 {& j l6 g$ ^: J, S
% j' ^. J# h0 [+ H8 C( i0 ~! n編譯完成后即可全速或單步運(yùn)行仿真代碼。
4 `* S. f- W4 c​
0 }% Y2 d" M# n圖7) C$ U5 z$ P# e$ ]: E I7 o% g
; b9 F! } m$ i
5 w$ W! e; j3 c% Y
6 L1 R9 K Z/ T6 |, G+ }+ |$ p IP核測試
8 ]& ]3 c3 S3 m- z3 N I) _. N4 {! `7 @/ ^) r6 O: Q$ p) g5 v
進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。# e- D! f2 E* I% ~
C' I* z) a% c- L$ P( f! m# R1 L0 l" r, k6 h1 ]+ b- a
​
" [$ {6 m9 t- q3 m0 J/ I( V
5 s# r# ?8 l! o6 l8 a" K
0 ?- i1 ^- L/ b; B2 `圖176 u+ A {& G; \, E% Y1 d
如需自行導(dǎo)入IP核,請參考如下步驟。' @% M; O+ J" U5 L5 i) j" Y
- U* p2 L' G: V0 g
# K. r1 D" I0 ~. S
(1) 請點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。
( b9 m, t1 w4 Z, ]9 f1 {​
( @: v* J# j. M6 |. O, ^& {( v
6 L9 i0 R2 {6 E e) ]2 i! y3 e" ]/ _& y V% ]) P- {# z
圖18
7 S( k `/ f" F0 |# n​- d7 n) E5 C/ b8 N& o( p i
圖19 k! X+ \ w* n; [( c( ^8 D2 |$ i( N
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。
% p& @2 h7 T; c7 f6 h​
& T7 p' |' E+ _& R- l' i
6 F$ B# d& ?- I; y
4 m! u3 X: m9 q* ]2 h圖203 O s2 m/ V5 N5 R$ A
​
9 Y/ B+ H3 X, d1 B* A& U# S5 w圖21
. N- y1 Q7 _1 D9 l! f$ z A) N1 e3 K( r8 k
& g5 Y/ D# j( D, b1 }" v(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。8 U; Q1 H' z+ q. Y( G
' [) @ ^5 o1 [, G- l& D
- u( @( v: T, I& i​' @) a# t5 h- j2 d( E
8 Q" x- j) c% I* E- g9 P0 O
5 R; ~8 s1 H/ k8 \) [圖22
& j1 p$ x% Q8 U5 b​
* y# x/ p9 B# @% i1 \+ X) y6 j6 I圖23
7 R0 w- O5 G0 j6 p; W9 M8 A! f# A點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測試程序Vivado工程編譯。- H$ t7 T+ x* N& \
​, K- Y8 s" F& o F7 f! Y
1 [8 C" I3 ?- t% N( R) S
* V/ t# W4 ~6 q2 o
( u! |5 V% L9 J
B* a/ L4 U7 L% o0 f. s0 S
圖240 z3 c" `0 E) w4 ^# W
8 L; Q4 R5 L2 {$ n$ f
3 D, L. S9 Y6 y5 z9 u: N: X" E​
) P) f! V7 ` l$ e- C" |# p圖25
* I% {9 o* c9 C4 q
3 h4 [& E% ^* V. Q! n
8 d" E# u8 b% J$ r編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。6 J+ _* D" I: L/ ^; e" n5 w) m& R
# p9 }& A' Q! o" p! }1 V6 H3 x
4 m: D. d2 A/ ~​
- h. ^: e2 A, h/ Z
- R/ s& T! f9 d6 Z/ Q9 W+ V9 ]% H
圖26" _* \; \: B2 s) s) Z3 E& ~
6 C9 q3 T1 _' d f0 B2 `0 [$ Y) f b0 {. l# G6 ~
請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。; j+ ]0 D8 i: T) h4 `5 V; u
IP核封裝% V" k) s6 V: c! [4 ?
" \5 z i+ u: Y8 ^7 I. v
綜合完成后,點(diǎn)擊生成IP核。% z' D7 o9 |! K, v* v
​
! ?! w; c: N' Z0 S9 e* l. b8 G$ [6 ]& y& N1 u0 R0 j& w7 `
2 [& R* B& k0 Z' A; g( @
圖12% T* u7 P$ e, ~" e
& r0 m; y" J& v
" p9 v$ c" A( K" B​
- j- b9 A5 b! K$ A9 k e5 \7 u圖13! J: n, E/ R- m: A- [, ~
​
3 N) h: w5 L% ] t圖14
- ~$ O# _' V! e8 Y5 n# k& X9 a運(yùn)行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。/ _' e) m1 x; O1 w/ w7 _" o+ Z
​
( ~6 N0 Z# d1 N! C, t) C! a; J" C1 @! U# ^! V* O7 Q/ U
$ p/ y7 W* c6 ?3 n, B# v圖15
8 W# f# v6 k. g: }​1 o6 F& K* F4 |% Q5 Q0 a2 H- H
圖160 _$ {/ N! g4 c6 Q, p% d
; f6 s0 q t8 R1 M' \
Q$ ~) q2 [; a5 D# P3 Ul 更多推薦( k' q* X. M y( d5 L
( y, ~) A2 Y/ @7 `2 M​) c) i: z9 H& _0 W# M; S2 K
- F. W" h# m% K( M3 e2 M+ k" J
5 H A, Q. n* g; Y9 N5 R& X圖27: n! ^7 u0 ~! ] [
' b8 W0 r; L! K: l& l
|
|