|
FPGA的HLS案例開(kāi)發(fā)|基于Kintex-7、Zynq-7045_7100開(kāi)發(fā)板! M4 x8 _ W a) D& D6 F
! R! b6 s8 i9 U$ Y; Q1 i6 f
8 V3 M* Z5 J7 @' N& r7 B* h
+ G. ]) h1 v' A4 m前 言- o) p) h( s2 J/ A" ~" E1 {, {
; H4 G6 ~, I& p) d本文基于創(chuàng)龍科技TLK7-EVM開(kāi)發(fā)板,是一款基于Xilinx Kintex-7系列FPGA設(shè)計(jì)的高端評(píng)估板,由核心板和評(píng)估底板組成。核心板經(jīng)過(guò)專業(yè)的PCB layout和高低溫測(cè)試驗(yàn)證,穩(wěn)定可靠,可滿足各種工業(yè)應(yīng)用環(huán)境。
l0 ^3 _% z) K o0 S- w+ l3 W評(píng)估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。% B8 \2 _1 o' s' B
& ?' z L- S5 F0 ]1 o9 |
( k5 W' a# c5 c# i0 q# j( y( [' b
8 w- B2 S7 k1 B8 J/ _5 M4 Q
1 {; Y* d* a4 _2 `​5 g+ a5 R! l: e: Y
2 [8 Q l, S8 I) L4 x
* V6 O9 P& T& {& t; |2 }圖1 TLK7-EVM評(píng)估板
1 `# Q. h& Q, Q4 ^7 l
9 ?; e9 C; \% F! a& Q6 p
0 w" R6 L3 L& r& ]* x1 A開(kāi)發(fā)案例主要包括:) {' y( l; g" Q$ ]" ]
l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例/ G1 |+ |" n7 N
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例- B% H2 Z, H# l: e( H. y
l AD9361軟件無(wú)線電案例3 T0 p8 H9 a( s) _
l UDP(10G)光口通信案例( J5 b- a4 u# V" M1 v8 o. V1 V6 d
l UDP(1G)光口通信案例
: m1 q5 g! p# i7 {' Jl Aurora光口通信案例
( l; B3 ~+ _, p. Vl PCIe通信案例9 J+ c. Y) h% V- D6 n4 d( U* w
l 案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書(shū)):site.tronlong.com/pfdownload7 h5 I3 R+ \! h4 Z N% q& k3 }
/ ]/ ]( g) I s+ Z- V' |
7 a- Z- {& F/ @ _/ g o
+ h; i. r1 S0 {( K
: r! H7 b1 S3 L) \) d本文主要介紹HLS案例的使用說(shuō)明,適用開(kāi)發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。( T8 a: i4 a d* p
Xilinx Vivado HLS(High-Level Synthesis,高層次綜合)工具支持將C、C++等語(yǔ)言轉(zhuǎn)化成硬件描述語(yǔ)言,同時(shí)支持基于OpenCL等框架對(duì)Xilinx可編程邏輯器件進(jìn)行開(kāi)發(fā),可加速算法開(kāi)發(fā)的進(jìn)程,縮短產(chǎn)品上市時(shí)間。
7 t" b1 D3 P- P) d* b( i; _1 K! {# d& M& J. N
7 } ^$ Z* D4 U6 GHLS基本開(kāi)發(fā)流程如下:
1 ]. O1 L6 X: H6 Q" Z(1) HLS工程新建/工程導(dǎo)入
" U5 W! X$ C: @(2) 編譯與仿真0 c, x0 E9 v/ @; {: M, h
(3) 綜合
( }: |* V/ w: S, T. |0 Z! W/ _(4) IP核封裝: i6 F6 q% L( ?" }0 a n
(5) IP核測(cè)試0 z- ^' Y. j- a
9 N: n T5 E* u! L
4 y; q5 J3 d) F* V4 ZHLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說(shuō)明如下表。
r+ `+ j% \& T# V" {: ?4 o. S6 D( E7 T' T a5 U: n1 [
. s! o+ v+ e9 S8 a( T) ^
表1) K q( ^) G& I! M1 g1 X4 K9 U) K8 @
hls_ip_demo
$ U/ }/ i. y$ Q8 l( Y" M | bin
2 F: W8 e% U) k5 h' p, H | IP核測(cè)試程序可執(zhí)行文件
/ }0 D% n* d; D R | project
! K1 b5 t3 @3 F) ?* u | IP核測(cè)試程序Vivado工程0 M0 x8 C. |0 j5 e6 n- r' U
| vivado_hls# h% @) q5 m* X8 I, T
| ip_package$ j3 C. S; k- K5 i
| IP核- i! [4 t7 O% K, v$ P
| poject# w7 e/ n4 p5 @( v
| solution1
! |% Y# A5 Z( ^- \$ \ M Y& y | 仿真方案1 G* a0 a8 q8 c& o9 n1 ]
| src
( S! v1 [8 ^* I; B: s' c0 I' }. L | HLS工程源碼
; F; ^& u( q; Z, ` | test_bench$ N$ N. b" B0 g5 ~$ X
| HLS工程仿真程序或測(cè)試文件9 Q2 F u3 T- G4 x+ f6 t
| vivado_hls.app$ S0 l$ _& W2 s# M |, d& [
| HLS工程文件
, n: T; Y3 t9 q! O | HLS詳細(xì)開(kāi)發(fā)說(shuō)明可參考產(chǎn)品資料“6-開(kāi)發(fā)參考資料\Xilinx官方參考文檔\”目錄下的《ug871-vivado-high-level-synthesis-tutorial.pdf》和《ug902-vivado-high-level-synthesis.pdf》。3 T, c' F# s# b7 d7 z# n) `
. W. K* b8 g& {, H( J
/ s/ {' I9 a+ ]1 K
7 S4 Z; L1 C/ H" F/ m* Y' L2 H' F8 P7 I6 u
HLS工程導(dǎo)入6 T. [# U4 F2 g! @! f" Z
4 c. M( a$ T5 Y5 c1 k雙擊桌面如下圖標(biāo)打開(kāi)Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。; _( @1 j" V7 x6 k2 t& Z1 v. X
3 ]# [" R4 R J) b( P
0 T8 N6 V/ B- e" e0 p! a w​
* }! b7 E. i6 R4 Y" E4 C圖2
% O/ L% i) b: O; T# o5 j" f
: ?7 ?5 a) P6 B9 e
" i7 O0 c/ p5 i, A; _8 R​
3 c2 e0 z2 k# J, O$ V# |" V7 R, m圖3- [8 V. m. [1 y v7 B& f4 Q% f
8 R* }3 ~4 h. ^* F7 @
" f' c1 r" g, b9 d" t* ~; p​+ |* E5 ~; s# i) O9 Q
圖44 X! y9 h S3 \! x' }6 e' L
亦可新建HLS工程,并使用C/C++等語(yǔ)言進(jìn)行程序編寫(xiě)。( p+ q" U1 p. Z/ V
* e6 l7 @) E! z+ D2 ~3 Q8 v6 u5 _% P3 A$ z
7 b; z, p% |/ }& ]7 j M4 x( l+ [& ?9 E6 }; O" C$ C- [
綜合
r; E* c3 B% [4 a- }/ F/ ^0 x
- y' ?* `* B( t+ A: u本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。
' s$ |" M/ w0 T. O& p% o0 ]2 H" k點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。
/ e0 G* d* H. [2 ]7 M+ P F5 A0 P1 x Z& W% Q2 q% X
( d1 M `' \% m, D4 G( k​5 C; k+ V4 Y3 b' A E q
圖8
% F$ `" u% h5 e3 p3 i7 c5 N2 D( T( H( c: v% s# k
- E4 V s D5 H$ ?+ F) d1 f0 T6 P! L* k
​
& z. r7 u$ K/ \3 M1 h+ h% a2 @1 p% q" N
8 ] x8 F8 u1 m% {
圖9
5 d- N7 h% H; f% x; i7 h8 H: U
9 ?1 d# y4 I2 z, }/ d! @7 Q
' C9 B+ u* B) u% |0 O ^$ e. l綜合完成后,報(bào)表文件將自動(dòng)打開(kāi)。
U9 u9 U" E8 l/ F3 L0 a/ G
$ M5 }5 B* {3 @: q8 \! H+ g1 r, E, r4 F Q) ]1 l7 w! ]
​. K9 x0 ?5 ^% x: S2 h9 _2 b
圖104 T R3 {0 l8 l
% ~% g' G! i! ?& d; G' w8 h1 n' Y8 N' D$ X4 _, J
通過(guò)報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。
+ j7 s- z$ M5 n$ U7 z1 b7 E5 r( F% [. C
: g6 G0 i: `+ a( a​
9 x! ^0 z2 ~6 c3 V
7 G0 p! b6 ?: u r& X7 \3 f. d" X# H. T# r2 Y6 @/ ~
圖11! ~) V$ A+ U q5 m0 H3 n
: ]; }: P) b2 B3 b6 Z
) ^7 B0 T! s) K) c1 H6 J" T0 `" c
編譯和仿真C代碼7 D8 e1 \1 h! L$ @" {5 ?
9 R' F* L: K+ `; a" H4 W仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。; W z8 c! n3 d: z }5 `
導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。
/ N, C( X, J3 `/ v5 `/ `
- O; j/ y7 C! i8 F- A. b, C- g" k; h& y1 g7 W2 p: ?2 _
​) p) e7 h, s+ Q- x
圖5
9 F. x6 ^. \/ t" s4 `+ ^ J A% q) {7 O3 a
0 \- c2 `1 J8 a' w8 Z0 n彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。. d, N2 ?( w/ L
2 K2 D* Q( M+ F- x( I
: ]. W ^* Q7 R% h​
! P3 X3 q. ?: [. O& H圖6
* e$ F S0 z6 s `2 [) v Z, c# }2 ~
. Y, Y [/ l& t" ^
編譯完成后即可全速或單步運(yùn)行仿真代碼。
& i* J8 c: |9 W! I. u k​
) {9 R) J. V: N X: ]' m; A圖7
: p, S% e0 M# q# L: }% U( u7 }! q* g- W3 r
% i: K9 b1 B' U# v, @( X
' w$ U& ~' u6 A IP核測(cè)試
; e% p7 B, z3 a3 s9 L% j7 y3 I( W, I5 Y6 b5 l2 I- D0 X& Q0 S
進(jìn)入案例“hls_ip_demo\project\”的IP核測(cè)試程序Vivado工程目錄,雙擊.xpr文件打開(kāi)工程,工程默認(rèn)已添加待測(cè)試的IP核。, P0 O1 @2 @, a9 J& k0 J
0 [3 e' [) z3 R/ U! `) G8 F" _! c; ~& T: ?; Z, @
​' }9 W# y- M5 }7 {
5 p. l' b7 _2 E+ h: j$ C
: v. o" n/ b. @# e- b圖17
1 d3 R. s1 T% F. w9 \1 ^如需自行導(dǎo)入IP核,請(qǐng)參考如下步驟。4 P x. w* L' P9 \) B
( Z! R3 G- U5 k7 V% P% _4 r0 M. ^
% y0 Q& m4 u8 I(1) 請(qǐng)點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。: d+ X3 y* S- d
​/ T5 t; t5 ]: G i
0 D6 G& H0 P2 s. G. O. Z
" j, ^" h7 ]: Q圖18& V5 h' `- n6 i$ Q! R
​/ r1 J; d8 v7 f0 r
圖198 l2 ?; b& R4 D% c9 @
(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。' q1 |6 V% M6 W, D" K! B
​
# ^$ d) J+ C& ^. E5 L; {8 ~5 C. k2 m9 q" c/ g
) V6 H% R1 D3 O8 H4 |) {圖20
( q$ \1 m8 @8 u: }. u% L​
+ E6 B) m2 X" H9 b8 o圖21
1 G/ h8 _9 ^! Q& g) E. r8 v
% |& ^, f( @ O! ]: a8 D( }- l7 ~- F' `4 T
(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。2 g6 M" U s9 N4 J
& I! W+ c+ Q/ n) O
9 ?; Y( C/ B; p: c
​) A+ G F( e* e
- J/ G; K6 x* {0 a U, R
2 @8 T1 X! a4 u, e2 d& d9 j
圖22
* T8 N1 x5 v9 w& a​' }% ]; V9 ^+ y! j1 U J$ n
圖23
, N0 l1 q, U; Z& R- M6 T8 c點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測(cè)試程序Vivado工程編譯。
4 @0 w, ?( L7 m( b' g& t7 W1 @$ p​' T0 v# ^: j& R, R! g
! V) \/ j8 j# b s" J. Q1 o5 L
0 C( U" ]! O/ u2 P. y! {
/ T) N& ]/ U: \* s3 M) o( F
: x$ e) x2 Q& b& g v5 V圖24
+ R. a* d& G& L h% J( P
" r9 C a- K- p# [ u" b" S" R- K8 j6 |0 d0 @4 M b. Z' V. t
​: f' i3 ^: N" t( Y$ s1 [
圖251 t$ y6 @# p. o8 F! {! M+ @; y
3 K% q1 }# }/ N" n& K/ X+ h- k# T% g# _3 H
編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
# d+ t, O: _3 y! ~4 B r$ a1 N* _# K* s$ f# x6 F( |0 L
1 p8 J- N/ Y4 ~7 s
​
8 _# ^4 e- {# e; ?# N2 a9 M/ `' A7 ]1 X3 U9 v% j% z
5 W5 r' I/ P1 w圖264 ]9 V+ F3 |; M# a: z
: w: E# T0 j3 Y5 k2 Y- y7 s2 |) u g9 Z/ g. G' Z3 b
請(qǐng)參考基于Vivado的FPGA程序加載與固化手冊(cè)加載.bit格式可執(zhí)行文件,即可看到評(píng)估底板的LED2進(jìn)行閃爍。1 S! n* C: F5 X! M0 {3 t, T
IP核封裝
) P8 v. r2 D& N9 l3 i" \# n/ Z Z# I
綜合完成后,點(diǎn)擊生成IP核。. z0 U6 q- L2 v1 z- h6 P
​
* r* D/ Z X& ~( o6 O) i) u
5 A- m. ?+ G- V3 e" y
L: w X. F8 {! b( l圖12, n& G6 K+ j4 N. k' [, ^+ k9 B5 n
4 F1 c. s1 {7 G0 z: y: M3 b. {/ E) i. v; O e6 u3 n
​
7 u8 J# }7 C9 |6 A; T4 |! j6 i圖13
1 V+ j0 h+ n& {: z: C) ~5 l​' M$ H. r L, W6 n' U6 v) H* i
圖14
7 V6 F2 h" H# c2 n: ^5 Y, I' n1 A運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。0 a6 T5 X" L1 _/ B3 H
​
/ F7 G; R$ E4 y" O3 J& {- W$ W9 y& g/ M( |, ]
k7 H8 p/ W/ W. D5 x
圖15
4 g: `7 t, x# k3 o5 V4 i' Z$ W3 j​
* b$ ~* `1 L, b* @# S2 u5 o/ a9 a( ~圖161 b) [) x# l- L6 ]+ n' M
o) V" T. Q1 `, {- Z0 y
2 w% b) \6 ]5 `9 J9 |l 更多推薦
! R0 j' ~5 ]6 }' X/ x- f) e1 R1 v1 W6 V! C- f! Y* y
​$ Z( \, P4 h7 \( h( k: t7 h
6 Y; X6 n' z1 E* T/ o1 K. S" M- S2 m
圖27
% K5 _4 U9 M# I: A1 ^! P# q% |# v( @7 Y7 E
|
|