|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板. Z6 h% S9 E+ N; Z& _$ a# ^7 P9 |
1 V/ Q, M: j. [, P7 ~
, L; o+ G. `6 ~: D9 o& u
+ ~9 t0 S" z/ V8 R前 言
8 f, m/ B: P l9 s! n* v" g4 H
9 t# H7 D; B1 h. u6 t本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
. C( ~& j! E7 s6 S) D. m評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進行產(chǎn)品方案評估與技術(shù)預(yù)研。- I: e; m( u% W2 x: Q" A) k
& a+ O/ s0 g, M7 y* u% D2 n( w8 r5 ^/ l4 y9 ~( j+ b6 N
6 D S H7 C; w3 T& u; m8 ?* {
5 R8 W5 l9 u9 _9 b; d​
3 v! K: b' C8 {+ |
# H8 |- V! T& b; x4 {
/ B- ^' ?9 |1 H圖1 TLK7-EVM評估板
5 z0 i$ d( a1 m' q$ K2 D
& t- c1 V0 T" ~& j$ ^. b6 R* a$ H' `7 ~5 x
開發(fā)案例主要包括:% C2 z* T) _3 R0 F1 R
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
3 L1 V" n, e5 K# j1 I# \l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
9 v: ~. u2 f# a2 j" kl AD9361軟件無線電案例0 e7 [& b( q2 F l) ^
l UDP(10G)光口通信案例
( q) |& W: F C% |; t) ?& k( jl UDP(1G)光口通信案例
' ^; [' ^$ ^7 U8 Z6 cl Aurora光口通信案例7 ^$ j7 w3 ~* u5 `
l PCIe通信案例2 ]4 k. `7 q. W8 |+ ]! L) _
l 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload9 y* d/ l2 H# c1 d
# z) R6 K1 P2 L% \6 R/ ]
t3 H8 Q) w* u# @4 ~" {7 `7 M+ \+ ]4 J5 k; M
! O: r% F3 P. p! f6 C7 `4 f8 Y
本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。1 w1 s( @! k/ i0 f* ~% R4 U
Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進行開發(fā),可加速算法開發(fā)的進程,縮短產(chǎn)品上市時間。$ Q/ I) Y; `1 B( t
! i8 \+ @( M; C3 q% |( h2 e
+ i" f' s0 ^5 X6 N
HLS基本開發(fā)流程如下:6 ^9 c) Z) ]: K' T; R
(1) HLS工程新建/工程導(dǎo)入/ \% A/ _; b# \( G1 J9 u
(2) 編譯與仿真
% z$ ^% w6 M4 P( K* _( a) z7 f(3) 綜合3 R; ~5 E C& [6 K' Y
(4) IP核封裝9 V& R( n8 D3 k& J3 u
(5) IP核測試
( u8 _: V4 N4 W8 ]; R
* X6 H& f* m( {0 ]: L6 b5 t; e. Z0 d+ {2 r
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細說明如下表。/ I1 \9 R% |. m \+ i C
4 T1 ]% ?) S, D; p0 X7 b3 C, B6 c, N
表1
# u! S7 `" Q0 U4 }hls_ip_demo
5 e6 H! }# o* ^* w | bin. k8 Y$ v2 c3 v( @! A+ v
| IP核測試程序可執(zhí)行文件
, [+ T' O+ Q7 v+ D' J | project
/ i* W; K+ g+ [9 n | IP核測試程序Vivado工程
4 a8 @4 U9 j: u3 o9 \ | vivado_hls
$ f* C$ X( |/ d+ c& B7 Y | ip_package; y/ {$ ]0 e' m' d
| IP核
* W" t4 m, g# J0 v( w G2 F | poject
( q! o) D# T( W3 v+ X | solution1
% v+ ?* @; x' N$ p8 D! y/ u | 仿真方案
7 V! {( D, }1 t5 G% k+ b, C | src" `, T, ~$ {/ {, B5 N
| HLS工程源碼
2 p2 h6 Z- q9 m. H7 R | test_bench( `. e Y" j/ y4 M7 C- _, e
| HLS工程仿真程序或測試文件 I$ H' u ]2 ~" @. _' {
| vivado_hls.app
$ T' N6 Y1 B/ W6 j; X/ q' @+ A. q4 S | HLS工程文件/ k9 j2 t. l9 w) t+ @+ N: U% G6 T. ]
| HLS詳細開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。
% F/ i p' e& X% Z5 [- H) O) Z
0 c7 I" {8 v' P# ]; w W) I. a" F; ]- R
# M& D+ ^6 V* c
, w1 ^7 U; Y7 J HLS工程導(dǎo)入, O% k( U+ w7 R' H; V" d
: }6 k) T6 s* V3 \* H3 V$ }/ l雙擊桌面如下圖標打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點擊“確定”導(dǎo)入HLS工程。$ k7 e2 z0 X) v" G" r
" B" M+ ]3 J, G. A# \8 [( N1 H
( k0 Q. T3 A5 V
​( H* |( ]) i0 R: n2 C& X
圖2) y" s+ e4 d. c5 }) P. h% K0 r+ o
7 o! k: H1 V- E$ G3 J/ K
: K' g+ m" I3 u p) X( r​
2 M/ x& K( X# a6 e9 f# P& T6 e圖3
: t1 k* x1 e* f5 V/ n h7 v1 z! b
# D2 M. P# ? q( k( j/ K4 i* ~5 e
1 @& [. |, J$ Z​4 k' E7 S) W/ F8 L+ @1 F }5 X: U
圖4& t9 \& @3 L7 c3 C. g Z/ R5 f
亦可新建HLS工程,并使用C/C++等語言進行程序編寫。
9 W4 [/ @& B; y3 I% m
3 ~& l0 I3 `' H9 u1 o; p6 b) {
, l4 f( B, E# Y# n/ a5 n
( Q; i$ \) x1 r: Y# L' d, N8 m1 A( t: E! d* ^% @
綜合4 `8 {3 _0 y# k6 m8 d- Z' t$ k
$ h! g1 s! H9 Y7 Q8 c# J, R
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計,并生成綜合報告。
* r8 G' v. d+ j5 ?8 |( ^# T點擊界面右上角Synthesis返回至工程界面,然后點擊進行綜合。
9 z4 Y5 {2 V. Z4 O# t0 y9 x
. b0 z" e$ l5 H
+ |4 F2 C7 h! Y​
7 B2 S, X+ `! {8 Q) A% \圖8' L" ~/ `2 V0 @! \% L
5 y% F, V. e' A" E
, W: E, d' X: M8 E" N+ Y
​
# d; [+ K+ j$ f
! r1 N0 r3 s3 V) Y, u
/ K2 {$ H5 T) F1 c9 P; i5 P圖9
+ y0 Y- R# [) K! U+ v2 y
3 K7 S4 |! H+ {2 A- l- N/ E) {6 ?3 ]8 g
綜合完成后,報表文件將自動打開。
0 e* ~: ^! L9 ?& R8 R( k/ A! e% M, a) M! t. H0 [
5 H9 j. W# r6 k+ q7 s
​7 c' L3 S) x1 p8 E
圖10
/ S! X; i8 C/ n, J7 R# p1 \) }0 @9 `: P4 t
5 j' U7 e5 N& l, o6 _
通過報表文件可查看本設(shè)計的時延、資源占用等信息。8 w' X3 @" u- @* h; ?6 X h4 p
) _, {+ R' x, h& b
& a$ |, o, B: W4 z​
$ g7 [0 i4 i2 x0 e5 ?
0 T. d5 Y- ?5 ^) E" d# C! T: F* p" L2 ? n" r% c1 _
圖118 S' y0 v% B! F$ Q
& x5 x& }, x7 N$ V* w8 b) X
+ x( T8 P# T9 G+ F, V
編譯和仿真C代碼0 ?; |. t1 R- Y \
9 n/ b4 A2 L) e3 [% Z9 c仿真程序位于工程的test_bench目錄下,用于驗證src目錄下的HLS工程源碼。
8 u3 @5 X1 @1 T* Q! s- C8 ^導(dǎo)入HLS工程后,點擊(Run C Simulation)進行編譯與仿真。1 Y" B0 _; z( W: \- H
. M$ ]* w4 ^+ {& e( r
2 s2 L! t- j# R: _* j8 S
​
2 k4 ^. ?3 q& c! g- y. F圖5% I1 x( _, f- i- ]8 Y
6 Y R7 v) T" S# J+ N8 d* f6 b J
& g- D' x3 D% `7 J4 V) f彈出如下界面,勾選“Launch Debugger”,并點擊OK。9 l7 |5 a3 v( ~% j" Q' n! C
4 O% }' h0 k# l- A$ F0 K
- c2 o8 h3 ~% I; ]' c( C​
. h) T$ e. Y" j$ }+ F: v4 J圖6) d" G) N, s' U+ }, \4 e
; w7 Q0 \1 S, P" h& b! i: p `
9 h% G7 o. V! u& d
編譯完成后即可全速或單步運行仿真代碼。7 w0 n" {# F# c- M
​) a% q! C, b: d7 w; ?3 M2 I2 v3 K
圖7
0 i ~! j/ V# x9 J. d; x
( |% k9 D5 K$ R9 A+ S i1 J3 x6 l. R/ L0 w7 d1 P9 ^- p
( M! j3 Q) w. T2 @ IP核測試
1 l7 R, S2 K& K" t( x
; ^* m$ e5 M5 J1 X. M: @/ Z" C; n進入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認已添加待測試的IP核。
3 x$ |! W( M* s' i, \+ _( D
% a. ~2 G$ V. F& c. u! S5 S D0 x8 M8 Y8 f, c
​
& S3 D1 G$ ~) k
7 q& G/ U% H0 o- J
+ ]1 \7 _, [* q圖17/ ?8 U8 c$ B/ d$ h3 _! w% t! v
如需自行導(dǎo)入IP核,請參考如下步驟。
) z2 v+ s7 Y* k8 [8 l" D: C
& `: h( @/ K2 a5 a8 G5 w: Q d: f2 H) @# J; c* i
(1) 請點擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點擊OK。
- {* x u* v- [1 H​/ J5 E( T0 l! [( J7 G x4 T5 {! f8 R
; m1 K$ Y- {* h3 S9 H1 E* L
3 D8 D3 v7 ~" Y$ c c4 M' p( P) a圖18
9 i8 V5 [8 j2 c. U5 b: w​" g6 D! l4 O" v- p& k
圖19
: L0 y! K, I8 n9 r% |# Q6 O(2) 右擊“User Repository”后點擊“Refresh Repository”,即可看到添加的IP核。& G2 T7 y5 m3 C
​
8 d; R: j+ Q- g* {( g
6 q4 d9 o7 Z6 W: x# i3 d
' A& [# L' S3 W1 i2 q圖20& ?2 @! R, B$ D8 i
​
8 X8 N1 a' `1 m$ ]+ w- J- z. t6 ~圖21
( t: G! B3 l" d( ?1 l0 r5 I1 P6 h: o( R+ G
n' S* m% H1 N. i& V
(3) 如需添加Vivado自帶的IP核,點擊“Open Block Design”,在彈出的界面中點擊,并選擇所需IP核將其導(dǎo)入工程。/ G% V7 a1 X% E# I9 f" Q
# [: w# N3 X3 N) P6 [) ?
2 k9 Y" p' d- k) q8 i5 k​+ U1 D$ f/ f- P+ w0 {/ B/ r9 s
3 B0 Z) E3 t% P. `* }( m! ]( }& F! w& D: R( o) s1 P& U& \+ u9 J
圖228 c9 c! W6 A; M |& I ~
​
: |! b8 \2 I7 i0 y圖23/ `# `1 A2 D6 ?6 \- K
點擊Vivado界面左側(cè)的“Generate Bitstream”選項,在彈出的界面中點擊OK進行IP核測試程序Vivado工程編譯。
# K" D, s2 r5 p5 g3 y3 P​
. k7 F8 g8 i) d) {) y& y- x1 Y
3 A0 `; a+ R9 {/ B. c4 d1 ?! L L
8 y* z0 A) c4 C: F- i, b! v1 p
. m: x$ c2 g9 z圖243 r- z2 W: k1 p' G M9 U
" H# {1 a, J: q h, o* u0 y( o+ ]- q
​/ V6 _0 U8 d1 k9 A `
圖25
( h* [3 O2 }8 T1 X) I& \& n3 | Y m' O# t; N e; g
2 @8 {9 L) {- u) ^% S/ [) J
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
+ C) |, A( x; T) I9 \8 p
" h- o+ q: Y( b, T
/ K0 K9 w% c1 |& ?​
! k) D: x3 {* l: O u b6 J' Z: n* C
. X. K8 K. B) `
圖26" x7 |9 ]3 |* o" D
+ z4 a" h, X2 K) L( O- X0 k b2 }. ?& k9 R% P! D
請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進行閃爍。
5 d0 k/ d' A: x! X# i; VIP核封裝4 z; k9 |/ [. \) I) E: \
6 j1 l7 h: H5 Z& y
綜合完成后,點擊生成IP核。
+ c3 h4 m- @7 y9 T1 j, n​$ w* d$ g% d" {! G2 I, s
( A6 q/ O7 ~/ _
$ A1 T0 O- {* [圖128 @0 E4 b4 K$ R; Z
7 C* v! w( K7 `, R! U5 u
7 F4 F1 B' k3 r
​9 [3 D" ?0 P$ \7 H
圖13- R0 p" y0 A$ \" d3 p: |7 v
​
! _- B; u D) ?' W/ {5 v3 {圖14# Z; V4 k5 h$ I4 r" J
運行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。5 B9 C% [! o2 k
​7 _6 R5 I3 ?1 m. c6 i
! B9 V, m8 G3 q2 |2 _ m5 t2 V- H
/ [& \! {# {+ r
圖15
" g! H8 l! r3 f0 {1 o! m/ n​
% N8 w# X' Z3 ]* h4 k1 P$ a圖16% b6 ^( z" o7 N
0 o& V; }- t- T/ K7 Z
0 a: S3 `$ |2 ~. ]5 y: x) x8 N
l 更多推薦& n; _: `, p& s! Z2 E/ J
5 Y; \3 a, W" D* G/ X7 m​; V' c, I9 y9 d" a! m# F
3 \7 T5 [+ R+ S4 x: R/ i
' p' g7 `8 C3 w+ n x W" c6 {
圖27: p( W, Z8 [5 `
( k8 \# v/ z/ N0 i* _% ^0 T |
|