|
FPGA的HLS案例開發(fā)|基于Kintex-7、Zynq-7045_7100開發(fā)板
0 D$ L8 ]6 u& A r5 F
: j8 y: z2 Q. P4 L1 e: j) f$ k# [" k- O+ e% z9 d$ `* g
`! `3 ]5 l. T7 I前 言
; c2 D+ l. ?$ Y! X" u
$ [# b7 i6 _" R" Y1 C' {本文基于創(chuàng)龍科技TLK7-EVM開發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計的高端評估板,由核心板和評估底板組成。核心板經(jīng)過專業(yè)的PCB layout和高低溫測試驗證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
/ r+ i/ P T' L評估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評估與技術(shù)預(yù)研。% @) M* E$ ~7 T1 \) J: q
8 u$ x9 z0 q# w( X/ v5 T( v1 F' y
6 u/ h$ _8 U1 G) M" y
9 t' x) f7 r7 l- U1 K8 ^+ ?
! U) m. J4 ?( E6 ]; M0 h​; B2 p) M! S b
u1 c; h( W! ?/ ?; ^ \) u+ ?
; A( s1 Q# w5 L, O$ D: g* O
圖1 TLK7-EVM評估板
! f7 K( v9 f7 n% O5 F7 r q1 \7 c$ F( t# a f9 [6 m# P- O- o9 [) m; ]
9 X6 K. g# a' h
開發(fā)案例主要包括:7 A, p2 \0 ^* e- i& G G# {) z# ~
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例
d5 O1 S# C& G$ y* Jl 高速AD(AD9613)采集+高速DA(AD9706)輸出案例
5 T0 ^8 E; b1 _; B/ \0 J& Ul AD9361軟件無線電案例
" B% x% N" v8 a$ L zl UDP(10G)光口通信案例, J: D4 n* b3 {' s4 U
l UDP(1G)光口通信案例; X% c" ?: b5 S1 `
l Aurora光口通信案例
$ ?& J. l8 Q ~& `. nl PCIe通信案例
# I" ]+ Z0 r/ i8 j! j: m4 V. {0 Ul 案例源碼、產(chǎn)品資料(用戶手冊、核心板硬件資料、產(chǎn)品規(guī)格書):site.tronlong.com/pfdownload' }# l8 ~- [. P7 Y
6 k( o9 ]* P* U4 M( W, d( q
9 g' ]1 k/ ?( f9 m3 {2 Z, H5 a
7 M. U; J3 F P; k3 |( \* [
( N- r* f4 \, {本文主要介紹HLS案例的使用說明,適用開發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。
/ f" G* Y$ q; H+ h+ k4 [Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語言轉(zhuǎn)化成硬件描述語言,同時支持基于OpenCL等框架對Xilinx可編程邏輯器件進(jìn)行開發(fā),可加速算法開發(fā)的進(jìn)程,縮短產(chǎn)品上市時間。
9 q# B2 a- r3 M6 I3 B6 J
/ }) {. z8 I3 Z$ K5 H2 A$ S' A( S* `0 p0 [$ g
HLS基本開發(fā)流程如下:
9 j( r4 h4 [0 R; A4 V6 B0 [(1) HLS工程新建/工程導(dǎo)入% ~! V `* X; N. y B+ o2 j
(2) 編譯與仿真
) w, L7 |! P3 _& U# b1 H1 R(3) 綜合
# Q3 H/ V8 ]2 Y3 }+ f! z+ u( t7 R(4) IP核封裝7 t# a' Q9 X: y6 d" z/ e! G3 I
(5) IP核測試
5 D/ i6 m: N1 e' K7 e$ G8 w( ] d& q* _6 T
" X5 l# H* X1 R5 R2 {0 X" J
HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說明如下表。
2 r, S! {% C3 l4 d% S& a( {. x
6 j" Z$ s F3 m9 L( `# }+ X! _& R7 Q. Q* J. |0 Q- L6 |8 n( j
表1
4 q" Q* x( Q) h1 l$ Z) n6 Ehls_ip_demo8 {4 Y$ f4 C1 }) P4 \& b
| bin" u G+ ?, E" p. m, z
| IP核測試程序可執(zhí)行文件, G1 L% c2 C" E
| project
' Y g9 m" `& o; V; S: B+ q | IP核測試程序Vivado工程: Q$ v _3 l3 K( `
| vivado_hls
, {5 W/ g+ K w4 n# A% O+ c | ip_package
1 k2 W9 o9 Y, l7 j& ~/ B) o1 t | IP核+ T* ^7 k+ m2 L* Q* C0 B
| poject% r& g* |" f) x' J
| solution1
. l; d, A* M }" \ z: e | 仿真方案3 q% G6 S8 w& |$ a, X
| src9 `1 z) o* `( ?
| HLS工程源碼" I2 A! A9 _ @. a4 F r
| test_bench
/ j) ^3 n+ j7 V7 n | HLS工程仿真程序或測試文件: o. {( d9 h* A( V3 b' Z7 U
| vivado_hls.app) b# p' M* p8 n1 K" m4 r) d* `
| HLS工程文件
2 n J) I8 h! y) G0 B& W s% D8 Z | HLS詳細(xì)開發(fā)說明可參考產(chǎn)品資料“6-開發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。& m4 v+ ^. u5 ?6 g4 T- U" h
d% ^: t- c3 s4 F
9 |! }4 t- R2 D! A! }5 F
. u4 j8 [9 V$ K+ H7 r/ Y6 v) ^( \
9 [6 n2 \0 R: O# |" x HLS工程導(dǎo)入, ~. E, _$ \9 }% r
) Q' g% n/ ], a' y8 V: C雙擊桌面如下圖標(biāo)打開Xilinx Vivado HLS 2017.4,并在彈出的界面中點擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點擊“確定”導(dǎo)入HLS工程。3 M: B0 t+ h% r6 D
+ O9 P' k( c# m2 h7 f+ E. n& j5 \4 E9 @9 o: s2 S
​1 l( ]4 v8 c/ f% p! y% z' B
圖21 O9 y/ Q# _- @8 j7 v3 K
7 S+ I, g5 p: G5 \) C% s* U
) Z5 W3 N2 B9 ?: P
​
- c/ n# Z& t. e: s3 K3 r4 }圖3
' u! F: ]* {: j, o
1 D% P, F7 q8 `4 m/ t+ h/ k. M
3 @: f* Q+ E: U% d% V​2 N( h4 }3 x1 w. J3 H# g2 P' y
圖4
( _( D0 g- m+ r& U亦可新建HLS工程,并使用C/C++等語言進(jìn)行程序編寫。6 }1 Q7 L3 L1 a1 h) z
u( {; {) U$ {) l2 Z t
1 M# Z0 V5 r, V4 X% U
9 c' }+ v1 v& j# H# i3 |
, r$ n0 D9 B' y! R1 m 綜合
' M+ r1 m& u, G3 Y2 }1 Y# e! c
$ {+ W6 J8 C9 }! ?5 F本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計,并生成綜合報告。* j& D( ]; g+ K
點擊界面右上角Synthesis返回至工程界面,然后點擊進(jìn)行綜合。
' @0 Q$ S4 E2 X2 v& c+ l' D! V$ A$ q6 h% Q9 o6 w( w5 F3 \
% O c1 F( Z$ h5 v8 ^0 k​9 c& @, l+ j+ s( b, T
圖8
; U: `# H r! F; H- ^) |9 D& X! z9 X7 _/ S% p$ P4 B: I
1 Z" w' W, c; L8 c) Z. {5 H. `
​
( G, D; ?( u8 o0 u# a! _
$ R# g; Q2 G7 ^* y n) x- Y: t
, V9 s6 X7 t! \7 M, C+ E$ \圖9& u) J9 f1 p% }# X7 L) T
' b+ f" t( ?2 W: J7 M( o i% k! ]; t7 ]& |1 n% k3 ]7 Q
綜合完成后,報表文件將自動打開。
0 G5 N/ G$ k" g% P% A: n. _
( G, C6 u' f+ e; v4 t" N
, s; r/ H5 D |; Z! y​ B6 D6 p' K0 { h& i
圖10
- i2 E1 {: d2 N6 X0 {3 ~: O" l- B! V1 z9 t+ r
4 ^& ~( U; X" p* O% E( d$ a; }& R
通過報表文件可查看本設(shè)計的時延、資源占用等信息。/ D" C5 u9 [8 ]
! @, _* ~! ]! q( _
) m: W2 g/ Q' T7 v
​& g9 q/ X2 l; b- \6 L, |4 y
$ Z' x) g1 q9 [; z j
0 ]# g4 ?& m) a8 q% H圖11
* X" f. I( s- N3 B2 v
2 O8 ^) M* d/ D) b2 a. c' \" P {, d* r5 o# G
編譯和仿真C代碼/ v8 h6 K8 P& x4 A& L! S
/ \& F7 \1 U9 V7 H, }$ u
仿真程序位于工程的test_bench目錄下,用于驗證src目錄下的HLS工程源碼。1 z. E8 N! q1 l- [
導(dǎo)入HLS工程后,點擊(Run C Simulation)進(jìn)行編譯與仿真。
+ r: G) C3 L2 M! e J( I) N0 C, J- T- o) G7 v
. f6 Z4 c4 Y0 H2 J2 c* D* F
​
' B! d' w0 w& R8 r圖5
4 N- y8 g/ b3 @- }" d9 Y4 F
6 g0 {# Y$ x. q
2 Z! @' t, m- Q彈出如下界面,勾選“Launch Debugger”,并點擊OK。; o2 B& @8 G$ l3 g4 F! } x" n8 x/ N
1 ?( l M# v5 ?
4 _% z4 c3 t2 j​ p, d! C) H. }/ u% v. i
圖6( G; P6 J. g4 ^' ?) @* ?; w
8 h: c3 Z+ J6 G; l$ v, s i
$ v1 C- z5 F! n% Q4 n編譯完成后即可全速或單步運行仿真代碼。% g; w- K+ L+ k
​
) ?9 @4 J- e0 z2 w( J圖7
% Y: F& ]. S) g# Z
9 n7 `: e; a* y* j$ ~* k- i1 F8 s2 i- T' ~; h4 T; R
% k+ k1 H5 Z, F1 M+ `- ]" j IP核測試
/ V# d N" k1 g/ `2 S/ d9 ?6 L5 x w5 {% }: D
進(jìn)入案例“hls_ip_demo\project\”的IP核測試程序Vivado工程目錄,雙擊.xpr文件打開工程,工程默認(rèn)已添加待測試的IP核。4 c h+ m9 D: v7 U
$ {3 G; W; N. Y0 I
& V# y1 s8 m, k( C4 T, L- p' J( H
​
+ W* h6 \& l2 ~, o: |: J; @, p' S# R1 l/ x1 N; z
% |' Y3 T# k( k1 r2 |圖17
* `7 G f* r' q1 Y8 [如需自行導(dǎo)入IP核,請參考如下步驟。: Q/ x2 L; p: s' Q d1 t
4 y( a' t' S9 ^* R) T7 {
1 g+ E& o3 l7 V9 x
(1) 請點擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點擊OK。
# o! ~' F+ b! f8 y​
; x% G- V& G, b' \! `2 g, X3 V; u% T3 T* Z. l7 a0 t8 D3 V
$ ~+ l3 g5 F# m( x
圖18
- F8 ]# o; a1 e! k5 p​
! {: y9 q$ V+ D8 J8 h ?圖19/ O* `! b2 F% `3 T
(2) 右擊“User Repository”后點擊“Refresh Repository”,即可看到添加的IP核。
8 n& q- \2 u7 D6 r​
& W0 m% u0 m9 n; q, B$ B/ B) c
' a# y) W, ] h# b. }# j1 s/ v. Z- |' D9 W& W9 N$ ]2 { B
圖20
7 i! e) i$ U8 r; a+ _; K​
! D* g, k5 b! f( g圖21" W/ s. M% y0 C4 X; B6 D
. a `% q& K1 b) i6 a) F2 O! Z
& H, x5 r8 M7 q4 o(3) 如需添加Vivado自帶的IP核,點擊“Open Block Design”,在彈出的界面中點擊,并選擇所需IP核將其導(dǎo)入工程。3 h4 E( u/ i' c9 d, k) h& N
% _- _6 q7 O5 |- B8 u0 [
& f n6 e0 X. I1 q3 t
​
1 t" v7 \1 g) t" Z" h" a
' M+ E3 U$ z X$ e' Y+ `" R0 J- o3 F" w, {4 \9 q
圖228 S( G3 a5 j6 D( \8 ^
​# P& j9 Q5 Q* L" |8 f- |
圖23
" A+ K7 n6 S/ W5 X0 q點擊Vivado界面左側(cè)的“Generate Bitstream”選項,在彈出的界面中點擊OK進(jìn)行IP核測試程序Vivado工程編譯。# \2 \ M1 o& m2 f
​, G* G4 z2 E. I7 Q: s/ y/ m
. I5 ~0 I0 n, w5 P: d6 _5 l* O6 q) ]) b: Z' f6 B" J
+ U8 B% }, t! ~8 G) g. l
- [- l" G/ V+ h- J圖24, U( i* a) M' P' ]- B: m" F
0 l. y+ ?1 Y8 N, y
+ X- V; k' J; C* w5 l6 X( d+ v​
g# I. X4 M0 m2 t" T8 \圖25
1 z9 u; N0 m2 u7 j0 h
6 L# A8 |& d1 ]. P9 G+ K/ A- z% y% A# W
編譯完成后,將會在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。' v; H; F! ^ ^5 y( W" \
( P4 I' y7 f E+ O' \( e" p; M5 C
​
# J6 {' n4 q$ V
( T) U f; v7 A" z/ p
4 V$ f7 R: J$ D* a圖263 }% W U# D% o+ r
% S9 z! S- v& p; `5 e# C. T' ~/ `/ j) e4 b2 w
請參考基于Vivado的FPGA程序加載與固化手冊加載.bit格式可執(zhí)行文件,即可看到評估底板的LED2進(jìn)行閃爍。
+ h( y+ R) I3 B6 D' R) zIP核封裝: m: \7 Y9 k# d8 M4 a
C P k. ^2 Q( a綜合完成后,點擊生成IP核。. R0 D0 ~' e2 H f- }
​
) h# F0 ~1 K9 Z% y; D) ^+ s3 y
- b1 W) k5 v# i% K4 @. T6 c1 S* A9 A$ Y
圖12; a4 R8 B% m/ Q
" m6 l/ Q& m4 d) `9 e8 U, P9 v6 C' H
& {7 y$ \! ~. T& A" ?6 b7 O; t​
0 j4 r' V0 _' \ t0 v3 v圖13
2 L; G$ ^" g' O; ~​# J3 j* }' } M. K2 J6 |/ Q' }# [) a
圖14
" q' R6 S* Z# G) I" q運行完成后,將會在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
; [& y6 t$ X! P' b! C​
$ q0 B1 R* Z! b3 B% D* u) M9 Y6 [9 Z1 O2 F+ M
+ }& ]! k' f/ T2 r& k, z; Q圖15
; P4 c- A+ w) F& d. F( m​
& K8 ^1 X" h1 r' B6 T) j8 I3 X) o圖16- e3 n% |# |" t- I! v4 B3 T. s2 R. j
' w$ }- p, N$ q1 K7 W2 O( t
* u8 @) r. W! O7 u2 Ul 更多推薦6 z# ~2 ]5 m% G1 g- {. }
. \ i# s0 n! x8 J+ ^​/ j1 c4 H# C, D* ]/ \2 p, [$ C
* t9 A* f8 c7 X- }/ X. Z7 J# z- M; k( D6 v2 E2 E. U
圖27
$ h. E( O1 o4 J; B$ t
' |4 Q8 L3 z l# W8 _ |
|