|
FPGA的HLS案例開(kāi)發(fā)|基于Kintex-7、Zynq-7045_7100開(kāi)發(fā)板
1 @: U; D$ Z) v* h+ d. d. |9 F' q$ }( `/ R! y; x7 n
r1 d# g' S6 { t6 X
, A! B+ E# C S" {- q5 o前 言
) D, N0 X7 x3 ~. O% t f
: D4 ?' X6 c) s, X, ] V本文基于創(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)境。
5 ^3 H a9 F$ O& `& m, u- u評(píng)估板接口資源豐富,引出FMC、SFP+、PCIe、SATA、HDMI等接口,方便用戶快速進(jìn)行產(chǎn)品方案評(píng)估與技術(shù)預(yù)研。* Q7 D& A4 y, M1 d2 D& I
) I$ K# c3 I# P( j* e8 O
! O$ O8 y- Q4 {: V: @3 r9 _6 b' B: l3 H
# K0 H' z8 K: O6 h( ~
​1 A$ J. R+ A+ k% ]/ E
! V4 i" H6 }, ?4 `' W
; I* R: r0 k3 l# u圖1 TLK7-EVM評(píng)估板
9 U& S' J. w+ U' D; h) j0 J8 F" O& u9 D5 p" \
$ E0 G, C, g: O% F% I" b0 u! a* m
開(kāi)發(fā)案例主要包括:
; R- i; W+ `9 y ] D& {l CameraLink、SDI、HDMI、PAL視頻輸入/輸出案例3 w" y& y) ?" k6 _
l 高速AD(AD9613)采集+高速DA(AD9706)輸出案例& e9 ~2 O! e& C* v
l AD9361軟件無(wú)線電案例: y7 r3 {/ ~+ D: Z# B
l UDP(10G)光口通信案例2 N) X$ k5 V, S" B& c
l UDP(1G)光口通信案例5 U$ S$ k2 U/ K; a7 I$ ], A! k
l Aurora光口通信案例
- s) P+ ^% d: V; q( ql PCIe通信案例- ]' n) E$ X" p( S% Z" Z5 J
l 案例源碼、產(chǎn)品資料(用戶手冊(cè)、核心板硬件資料、產(chǎn)品規(guī)格書(shū)):site.tronlong.com/pfdownload
& B/ ?2 x1 |2 ^0 p6 P
" x& a5 S6 e& B1 ^; {8 e+ d4 N( b+ C! o) v2 O) L% [# u, C
3 l0 [. |: e0 `+ J& F
+ j( A; W8 A% T( }6 O* h5 d: o6 v0 F
本文主要介紹HLS案例的使用說(shuō)明,適用開(kāi)發(fā)環(huán)境:Windows 7/10 64bit、Xilinx Vivado 2017.4、Xilinx VivadoHLS 2017.4、Xilinx SDK 2017.4。* M2 s" f. ^3 l) V
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í)間。
+ ]* c* |6 T4 W5 H$ Q. g+ Z
) [2 n5 [, }* F9 e; E' a- v7 a* ?, B o4 U& G1 [, _
HLS基本開(kāi)發(fā)流程如下:- U Q8 K; r( U7 f
(1) HLS工程新建/工程導(dǎo)入! h, x h3 z* F# |% p5 B' {! N
(2) 編譯與仿真 Z0 M: I- u- {& U( `6 R) w5 k
(3) 綜合$ I" g1 d. C3 \3 D
(4) IP核封裝& k6 z5 X5 h4 y) ?* b
(5) IP核測(cè)試
. `; M+ c- `& U* d7 ]9 ]& h+ I& u& c& O: H/ X# |
6 C `! L! T, R$ S' s- b! O0 P& s0 ^HLS案例位于產(chǎn)品資料“4-軟件資料\Demo\FPGA-HLS-demos\”目錄下,案例目錄詳細(xì)說(shuō)明如下表。9 K- q9 Z( E, N% A" D; k* y! @' S
6 X$ o, T- @) i$ W" [
' M2 ~& I5 i9 q- K2 [+ ]# W表1
! O1 O. n6 Y0 b! }' q$ hhls_ip_demo
1 e3 `7 ]3 d9 D, X. s | bin
5 P c! N; l4 \8 f: [+ w | IP核測(cè)試程序可執(zhí)行文件
% R* b, {, u) v* l) A | project! e9 R. G& K3 a# X6 ]
| IP核測(cè)試程序Vivado工程
+ _; k/ U* m1 {( w8 `4 U | vivado_hls
. G% ]; J7 q/ x D | ip_package
6 ?; A0 z1 m/ h | IP核
+ W$ j, r# m6 i" v | poject
' J% f: ~4 ^/ V8 W, k | solution1
2 S, g( W/ g, v$ C* e | 仿真方案0 C3 K C: A+ Q& y- g; p
| src, Y0 Z% ]3 m* R
| HLS工程源碼! n7 o/ u, U2 N2 _ v! z1 \. Z0 X7 N
| test_bench
/ _. H e& x# ? | HLS工程仿真程序或測(cè)試文件
4 v/ E) g3 N: x U2 g5 c | vivado_hls.app4 j$ X* G5 e, r0 Z# ~/ `
| HLS工程文件. l% Y1 w# _4 S3 t
| 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》。* t- z; ^ J1 ?) ]8 e
- j# x/ V9 W e [. ^% y) N
3 s8 X7 V3 ^$ V0 W0 q
1 G# K0 u z* ^4 G; a) R3 D
+ ]$ [( v* a$ C; A, x% |8 P2 A
HLS工程導(dǎo)入
$ R( F- H1 b* Z
9 D3 |, G0 d6 V* Y7 t雙擊桌面如下圖標(biāo)打開(kāi)Xilinx Vivado HLS 2017.4,并在彈出的界面中點(diǎn)擊“Open Project”選擇案例“vivado_hls\project\”目錄,然后點(diǎn)擊“確定”導(dǎo)入HLS工程。& `* f% R1 F4 V- U
6 v# p& W9 A6 Z2 ]2 [
3 o6 w/ \! [' a; o​: `/ R! ?/ l$ |: H9 X
圖2
/ `0 X3 ]7 p+ a+ l6 k; f
( p+ |6 X# c; t) e$ T0 B+ H/ m2 e, F2 Q
; l+ S0 f; F9 d$ n$ h! z& R' E​
- o4 u. |' F0 {/ v3 O+ f3 N圖3$ w5 z% j5 A1 H5 o, W1 G q/ [! `+ e
: i" A" s I- L& w! j
- Z& j: f( Y" K​/ O$ D4 Q4 K r" D$ n' l% ^' n
圖4
7 k6 _! b9 m& @8 x* a! r亦可新建HLS工程,并使用C/C++等語(yǔ)言進(jìn)行程序編寫(xiě)。- o8 \6 s8 u) o
) a3 o4 b; N& A2 z
6 ^# L( H; e5 ]) r2 t- }% J
: |% Q1 F! a* B2 F/ j8 c
7 I% e; X% }" |" A! T# @1 H 綜合
% [0 B! b, H# m# s) d5 v; \( t3 n; c0 i2 p6 |
本小節(jié)演示將C/C++等程序綜合成為RTL設(shè)計(jì),并生成綜合報(bào)告。. k( p' {3 M% A% \3 a7 t6 X
點(diǎn)擊界面右上角Synthesis返回至工程界面,然后點(diǎn)擊進(jìn)行綜合。" V: E G; \7 c- |5 y
: W5 ?" a; J) h0 X
1 S/ z+ N% }: M. s0 N​
: \2 K; Q: I r4 q2 T4 ~9 [; K圖8& i: m* t/ [7 j5 T& H6 d: y
% I2 |3 s, ^& Q$ t
, C: u& f) p) T: p4 T$ Y0 I) w1 e​
" L, y2 g B/ t m2 M7 f! B- k/ Q
, { ]& l7 X: h& {0 Q圖9
0 w* h# i9 ]( k; e0 Z: Z) h, a# b) ~; n
* S) _* B" P4 s4 N. {" L綜合完成后,報(bào)表文件將自動(dòng)打開(kāi)。# [& J" s7 Q$ z6 M+ u
/ J! K* k6 k* \
" x7 d8 D9 h/ D7 v. v
​
' d6 \7 J. E. W6 h圖10! x. E9 M5 v @% n# S9 u' {
! T" r' G4 W$ ~) R1 \4 n
3 y/ }/ u! ~2 Y8 n7 e* V1 ?通過(guò)報(bào)表文件可查看本設(shè)計(jì)的時(shí)延、資源占用等信息。# O7 P2 }, `2 Y8 b% F
# n9 }3 {2 b J% r- m
, L; X9 l! g& j​
' z4 m9 h/ E7 ]. s' B9 I* p: j
0 s3 D3 Q8 Y; s2 J% X. G) L" J. n- [+ a4 w6 n! R/ e3 \* W
圖11
; c! t8 `: f8 C6 l1 ^+ y6 d
2 o# P# A" A) G
( i! k/ F5 X. G R+ J; R編譯和仿真C代碼
# A$ _: U$ ?2 @: s: W, ]1 f3 D! P+ s
仿真程序位于工程的test_bench目錄下,用于驗(yàn)證src目錄下的HLS工程源碼。+ K5 w5 i' T8 f v. p6 P$ P
導(dǎo)入HLS工程后,點(diǎn)擊(Run C Simulation)進(jìn)行編譯與仿真。& n1 U- m- x. `& B! ~7 p$ C: G% k9 |
2 h. F# W0 V \/ }/ a' f
% Q' k$ ]# Z4 |3 q* U​
% H# N0 G0 q( b圖53 t0 w# t+ |* R. x5 p
7 c( O4 x# e, v' e; `) K) Q: n. a4 n( @/ ` s! u
彈出如下界面,勾選“Launch Debugger”,并點(diǎn)擊OK。. E# n9 x! ^' l2 p
* X) m- m5 T# p8 B2 A4 b0 k3 J8 S/ K* w4 f/ B' N
​
6 J& K. h( b0 g% @圖6% C/ x3 a4 |3 Q9 ~! v' G
1 k9 L; s+ V/ \
5 g! ?# g n% l/ t8 p& E/ u編譯完成后即可全速或單步運(yùn)行仿真代碼。
9 x" | B( W @" a$ p. c0 U​
% t/ O* B2 c! W8 L8 }; a# X& g圖75 h5 ~6 [' \% D7 b i
, r8 r) H' D- j2 B- U" {- d2 B4 k4 m- G9 }0 K$ L: I4 S
* p( q( N2 `- \2 f IP核測(cè)試3 u/ K& k; c- S$ b$ p% l
6 b* k& _7 l4 b' J: q
進(jìn)入案例“hls_ip_demo\project\”的IP核測(cè)試程序Vivado工程目錄,雙擊.xpr文件打開(kāi)工程,工程默認(rèn)已添加待測(cè)試的IP核。
/ e2 ?/ }' H" r/ u% |( B5 W4 A1 ]) ^$ ^# z
. e F/ g; P1 f2 E​ [5 z' R. Q# V( p
* J/ b. W3 u) R- {) @* o9 R( t. E( N. `
圖17
2 [! \1 e) q7 Y3 d l3 Y: y如需自行導(dǎo)入IP核,請(qǐng)參考如下步驟。
* R9 x' u- f& N4 u* k R }) k* g) b6 o7 ^( L
7 J, H* S: p* W8 L0 v4 z(1) 請(qǐng)點(diǎn)擊“IP Catalog -> User Repository -> Add IP to Repository…”,在彈出的界面中選擇IP核后點(diǎn)擊OK。
7 W! p1 \- x: D, r! j" E7 j$ h3 ]​$ D0 e8 L" K' A. J$ G
* y( J, ^% ?, \- y! a/ `' e2 A6 I0 i5 o5 A5 O: M* n
圖18
# j- P% C0 E! t* I$ C​6 R! Q# j) S! k ^
圖19
# a) S+ s) M* N7 h, x7 ?, L4 A& h(2) 右擊“User Repository”后點(diǎn)擊“Refresh Repository”,即可看到添加的IP核。& ?1 c, V0 t' E: [) D% _
​( ]1 V" b7 \/ l
. l3 }" K, I% K4 {5 A) U' W i7 P \0 r% V/ `' Q
圖20 o' Q2 u; l, P$ ~0 e6 L! L
​
2 E- u4 w& f7 O0 K9 o圖219 l: T4 z1 y; W& j
# v+ p' H3 L* o* H/ i5 A+ A! T
0 U" |+ ^) V3 p; P1 [8 p1 \(3) 如需添加Vivado自帶的IP核,點(diǎn)擊“Open Block Design”,在彈出的界面中點(diǎn)擊,并選擇所需IP核將其導(dǎo)入工程。
' @* v$ D! w2 u2 a. R% b" A9 D' C! m# S1 h& f0 l1 x
2 d& C3 l3 m5 g​; O6 g2 [1 K2 t [( F2 I( L. E
" l- o$ q0 B. E V$ o- v1 B
( c7 A0 f% i2 L2 o6 b9 T7 w
圖22
6 L( |* G; k, ~ ~​
- r8 m$ s: y9 y: F ^( Z圖23
' r. w3 ^% N I4 c% x1 W4 V點(diǎn)擊Vivado界面左側(cè)的“Generate Bitstream”選項(xiàng),在彈出的界面中點(diǎn)擊OK進(jìn)行IP核測(cè)試程序Vivado工程編譯。
5 O( c5 S9 \3 t5 `: k( M​
& T2 w, D9 n# c0 K" m6 t
# V2 r9 k; |4 ` e4 g
# [8 i3 O6 I6 J3 R5 b6 S0 g+ _8 {9 c" Z
! `5 o- G. y |% ]3 Y圖24
. w7 A9 c+ e6 `; N% ^( d3 [
* F) _3 [3 A% ~
+ ~: ]9 D/ o @% G% u8 Y​
* ~5 i' o7 W# F |" D' M圖25
# J$ d p) W/ E. W, v; O0 }2 I; i6 Y( G' [
6 K2 ~6 @* o' A3 m3 o: k* t
編譯完成后,將會(huì)在工程“l(fā)ed_flash.runs\impl_1\”目錄下生成.bit和.bin格式可執(zhí)行文件。
9 |! K) k6 u! n. P4 F& x. |8 ?
* I" g& K. O) D" H0 j
& e$ q# U7 i$ P- u. ?9 j​
5 R* H, a5 U. m9 u
: m4 H/ T* P: p8 d
" u. [" y$ t0 i, R2 s6 w圖26
# D* m# Z7 `$ M, y# d
$ c1 Z* F% G' m# q* { B5 q Q9 L; O% J, |; H+ x; x% R, K( p
請(qǐng)參考基于Vivado的FPGA程序加載與固化手冊(cè)加載.bit格式可執(zhí)行文件,即可看到評(píng)估底板的LED2進(jìn)行閃爍。8 R( e, ~& k& ]5 |1 s- |8 H/ x
IP核封裝
" o5 C- ? s/ Q( Y- r
- \' l: |0 E- j. o1 j5 I6 {綜合完成后,點(diǎn)擊生成IP核。
% J0 Q, }1 ]1 q' ]​
0 _. B* x1 F' [1 ~
" T" S2 E; [# h9 _ y$ ^: o5 q6 S: g6 ^7 J/ H
圖12
# M. v& R7 t* `$ U. S b* y6 P1 t; z% c, i; i( _2 A
" ~: [* g8 u4 W }8 Y​
: g. v1 l4 x' C4 I6 [4 v圖138 T. Q/ D8 Z6 y$ B& C& D
​" H. c; X- U" @ K) W! v5 F
圖148 e8 C( P$ p, G8 z9 y9 a! Q1 W# C
運(yùn)行完成后,將會(huì)在案例“vivado_hls\project\solution1\impl\ip\”目錄下生成IP核。
7 q: [) U+ u" v w1 C! t4 p​
5 k& U) J: F& H+ C' t- p7 \: Q7 a9 c( T$ k. f% W
6 `/ I O3 T- {* _圖15
8 R! T, N) M/ X r& Y​( E5 q) O4 d* X& e. _
圖16
6 {% L6 g- Z/ o/ M$ n+ ^/ `* I; y. v; W
3 X2 ]" g; r. Sl 更多推薦
8 ?. ]9 @5 U( t! }" `1 y6 T- X
. ?/ e; ~' D+ G/ ^, i​
" d* S0 C* f- v# w5 S! k$ r5 U' w8 `/ H. W6 {# b
+ D; l+ j c! m) }& B7 W' U0 f9 }圖27. C/ E2 I: a9 p6 `; V( G; D3 [
6 V/ A+ D4 K6 Q1 k6 p |
|