EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
今天给大侠带来基于 FPGA Vivado 示波器设计,开发板实现使用的是Digilent basys 3,话不多说,上货。$ l0 |& u* z. N; m/ |" p; D* \
需要源工程可以在以下资料获取里获取。
* W# ]. z& O8 w- D2 x. h# m
资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.07.09更新)
6 L# V x" A; w" G9 l0 w3 z
6 y! v i8 l8 N' }- z; b# \! L. P/ X5 K) ?5 Q
本篇掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习示波器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“示波器设计源工程”。 1 w% D8 q. a, \
0 M. l1 p. R6 z. O5 y( u
原理介绍
" c7 j8 a d, k$ J4 m) V
数字存储示波器能够将模拟信号进行采样、存储以及显示。本系统在DIGILENT Basys3上构建了一个简易数字存储示波器,简化框图如下:
( S& r- `+ `; d3 Z: o
b2 T$ c5 Y, j% ^. h% Q3 D4 A& n9 }& B L; d; U
原理:首先,AD模块对模拟信号进行采样,触发电路根据采样信号判断触发条件(例如:上升沿触发)。满足触发条件后,连续采样一定数量的点(本系统中为640个点),存储到RAM中。峰峰值、频率计算模块对RAM中储存的波形数据进行计算,得到波形的频率以及峰峰值;VGA模块将波形显示出来,并显示计算得到的峰峰值和频率数值。
) a y5 v. _+ u
本篇通过调用DIGILENT Basys3板上芯片中的ADC模块,对外部电压信号进行采样、存储,并通过VGA显示器将波形显示出来。在DIGILENT Basys3上电之前,需要提前将DIGILENT Basys3与VGA连接好,并准备好一台信号发生器。
7 C- x5 ~, }! Z5 q1 A3 p# a% z" r
/ E& s4 J. @$ S( a2 Y- V
操作步骤
, W+ M$ t% S7 o* T; u- F) Z/ w9 C
一、基于添加文件和IP
, W0 L* v8 b- e7 H! C' ?
* |) @4 v+ t5 b
1. 新建工程项目 5 w) h9 ?/ }/ Z0 j6 i7 A, z
1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;
8 E- K1 @, X4 w- X+ G. ~6 g9 |, i
2) 点击‘Create Project’,或者单击File>New Project创建工程文件; 3 V& I( t. U [( G: d
3) 将新的工程项目命名为‘lab4’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续; ) y5 ^. _, ^! e+ S1 n
4) 选择新建一个RTL工程,勾选Do not specify sources at this time(不指定添加源文件),先不添加源文件。点击 Next继续; 5 U$ Z& C; F! v+ Q+ ^; [; F( W
5) 选择目标FPGA器件:xc7a35tcpg236-1或Basys3;
, ?' p' P; q. N7 p& v. z
6) 最后在新工程总结中,检查工程创建是否有误。没有问题,则点击Finish,完成新工程的创建。
/ f5 z% \1 l: T' Q. p. N w
2. 添加已经设计好的IP和源文件 2 j: C* y/ B; p) `8 F$ }; F5 O, [
工程建立完毕,我们将设计所需的IP文件夹(IP_Catalog)和实验需要使用的HDL(Verilog)文件复制到已经创建的工程文件夹根目录下: * ^/ M9 |4 B. v9 z
源文件位于Basys3_workshop\sources\lab4\Src\HDL_source
+ Y+ e4 K9 N7 s" C
复制完成后,如下图所示: 3 Y# Y9 M; V( d8 q e
: ?+ ]+ F, z! H( Y5 \: C2 O' M+ i
; x$ J7 x6 s0 P
: H# k6 `8 h D6 y! X
1) 在Vivado界面左侧Flow Navigator中展开PROJECT MANAGER,选择‘Settings’;
- _; ~3 Y7 a. G5 y8 I3 v
8 T) F) M- q5 e# |4 y) w+ X* [! W
1 U5 [6 |1 I! E( A
! e+ \# w3 a$ }0 ~2 Y# p" I# ^2) 弹出窗口中,在左侧Project Settings中展开IP一项,选择‘Repository’,点击右侧的添加IP;
! W( ^" o- S, f9 o0 U8 p- B# h8 B, w% ^
0 b' ^. \5 Q4 l3 x9 x; t
0 F& n. {+ \# L0 P9 B/ Y, B: O, @# }* i7 ~1 H
; m! t, W* P" o7 {% Y0 m
% q! x _0 h5 W3 d C E$ N . Q! d# U6 x* a; }; X: |5 {
" \! D% @ s* h# `; _3 ^' e! `$ ]. S9 j
9 v2 u H. \5 J 3) 选择复制到工程文件夹根目录下的IP文件夹;
) G2 V* f, B+ K8 ^7 M5 t$ b& @6 b" g8 F5 c" i
4 l8 c- a+ ?& t% D5 w
$ K1 G) w# h2 {9 H$ q
( _0 k4 B) ?3 R" r . r$ N) z, \6 c9 g9 R4 v
4) 点击OK完成添加。 9 {- h' n* ^3 s$ X, B
5) 添加IP至工程 ' i. Q% }1 @) ~8 J1 v
5.1 在Flow Navigator中展开PROJECT MANAGER,选择IP Catalog;
8 B k; o: m0 C/ d: E
9 L* R1 a; j) E1 j, D7 X# a! d2 `, O4 _0 B6 c
5.2 在右侧IP Catalog窗口的搜索框中搜索‘clocking’,双击‘Clocking Wizard’开始配置IP;
! C% z( x# j. u% q; v' w. e: L3 U
; w1 b+ `1 W+ L9 T, W9 V) W
' c! _- {) a8 f' |" T; z$ y5.3 配置IP
' I3 v R! K& b+ @0 X3 q0 ]3 y5.3.1 将IP的名字由‘clk_wiz_0’修改为‘clock’ 7 ^6 K" t9 ~3 A% S% }, Z/ H$ `
5.3.2 选择‘Output Clocks’,设置7路输出时钟(100MHz、25MHz、12.5MHz、25MHz、50MHz、75MHz、100MHz) ' U. p1 p" O% X* G
5.3.3 在Enable Optional I/O for MMCM/PLL一项中取消勾选‘reset’和‘locked’选项
T* C! M3 h- ?9 c9 t( y
; P5 w5 Q3 }# W. |, G
8 h5 }8 u! g- A$ t7 \5.3.4 Vivado会创建新的文件夹保存配置完成的IP,点击OK继续
" g( }! c; I7 u3 p' q/ T! M
, t- y7 g4 W! F# `# R. _
. r& K! `! y* ?: V
) |$ I4 F, E/ S# t5.3.5 弹出Generate Output Products窗口,在Synthesis Options中选择‘Global’,点击‘Generate’继续。 1 [7 O' q. a* \
/ o5 D, @9 `# B. [7 Z, B2 X- n, W8 U
2 W2 n$ c% G0 ?& y+ k% j' b6 H: Q6 j
. e4 }4 x3 w9 W c8 i& c' t; n0 D% f/ K
+ O% i7 N* ^' A+ ^0 d( o. K( x& \$ M8 l! @9 `- J5 g4 S
2 z. T+ C2 u, Y+ V9 d
5.4 同样的,依次在IP Catalog窗口中添加debounce、vga和xadc三个IP,使用默认IP设置,无需另外配置,并且Generate Output Products,完成后Sources窗格中如下图所示:
, d$ `: L3 C. Q2 e, ]- [5 G5 e
$ k; x% \4 }/ U" d1 a. s
! h0 w0 F' [) V0 I2 Q. \
4 X$ R/ F- b9 A8 }" A8 S! E
: U& t9 r6 d* a9 M2 E0 K* s
; I# U, B+ c! l7 k6) 添加HDL文件至工程
1 ^# |" t+ F3 k' ~& |1 n% F* \( P6.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources ' V7 @& A/ O0 ~" X7 c h; k
' A, q8 i u/ T+ o
! h/ P4 q) H- R! p. ~
6.2 在导向窗口中选择‘Add or create design sources’,点击Next继续 5 ]4 d' j r$ d0 i7 }
, d0 o$ x) S6 U2 y- q6 N; e/ B
" N5 J; ]6 ~6 o1 x; r/ X
6.3 在Add or Create Design Sources页面中选择‘Add Files’ ) a$ c4 m# F& p1 A5 Q/ M* v
6 Q w. X& j) L& D( m( U2 q& a7 e
$ `) a7 G" N* ~6 Z( m( r9 w6.4 找到lab4根目录,选中添加所有9个Verilog文件。 4 `4 M- K6 P( m% O6 a: J
- v4 E# G& ^$ m
! \; J. j2 e' b+ E% e
6.5 勾选‘Copy sources into project’,点击Finish完成添加。
/ F' \" o3 B5 X- Y
1 y+ P9 ]& F& [9 n/ g1 M9 y9 H9 c8 l, y5 }; L1 U, Z
6.6 完成后Sources窗格中如下图所示:
# {5 `* z! @' F. a6 C' X( s* U0 u
9 c% f! }& F% `- x
" }3 s- m: `2 L- h9 V9 ^
7) 添加物理约束(XDC)文件 7.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources; \# [- e9 @% r! u6 q
7.2 在导向窗口中选择‘Add or create constraints’,点击Next继续; 9 |4 U4 U8 X; c- X0 P# @
7 \/ J f9 u: h7 Z! ]) Q: M
: _8 E( s# Q# b" a8 C
8 n1 G! ~1 [" z7 M7 J U
7.3 在Add or Create Design Sources页面中选择‘Add Files’; " [' k5 b* Z9 T4 s
7.4 找到约束文件路径Basys3_workshop\sources\lab4\Src\Constraint,选中并添加‘oscilloscope.xdc’文件;
% a% i; l( W. k+ Q- N9 z
! e9 ^5 Q. d: K7 u8 q- s9 C
( D* J# \( w2 ?
7.5 勾选‘Copy sources into project’,点击Finish完成添加。 & h% q. F7 r0 {# }
3 j, y$ M+ T+ a6 c& l8 \
9 F5 S. o2 O5 K4 \/ Y
3. 综合、实现、生成比特流文件
& w+ `) V. G. B9 x) Z1) 在左侧Flow Navigator中依次点击‘Run Synthesis’、‘Run Implementation’和‘Generate Bitstream’执行综合、实现和生成比特流文件操作。或者,可以直接点击‘Generate Bitstream’,Vivado工具会提示没有已经实现的结果,点击‘Yes’,Vivado工具会依次执行综合、实现和生成比特流文件。 7 c- X' f1 B5 O& N6 c6 B
% c/ [4 z) I5 g! b# o8 D" g
; F" W5 j' c! Q) v7 q% e9 b/ o
' o( ?: S5 ]+ q b: q! u
( u% y5 z4 v' t* u4 x0 ~- K3 e2) 完成后,选择‘Open Hardware Manager’打开硬件管理器。
1 U2 M* [5 U8 T/ o3 H) Y; s
5 T) S( y3 _# }8 k5 E7 a9 ~
% c) {0 i4 ]9 M! t
" a. k5 F6 t1 G+ a3) 连接Basys3开发板,点击‘Open target’,选择‘Auto connect’。 3 H" {3 @2 o$ @5 V2 N3 L
P3 W" ^, U0 ~' r. |
7 z' T+ P- A6 _4 L5 Q9 D
4) 连接完成后,点击‘Program device’。
& y. F) _+ _$ |& ]$ x, V% C& i
" Y: x/ I$ q* r4 B
$ L3 g7 s4 i/ e6 k7 [" R3 _; ?2 f) E5) 检查弹出框中所选中的bit文件,然后点击Program进行下载。 6 b7 |& o" |: n
4 h8 O% J; `" U5 [! Y$ t4 `% U$ E R0 ^8 q$ X8 H. Y
2 i H; q: M. f, s1 @
二、 基于Tcl 1. 运行Tcl,创建新的工程
; \, `. ]. q$ |( O1) 打开Vivado 2017.2,在界面底部Tcl命令框输入命令;
' s% k3 I9 a/ ]3 V9 x
4 `2 ~7 H/ B9 ~! i# {0 J
9 C L5 t% p D1 U. E3 x2) 使用‘cd’命令,进入Oscilloscope.tcl文件所在路径。参考路径:C:\Basys3_workshop\sources\lab4\Src\Tcl,在Tcl命令框输入:cd C:/Basys3_workshop/sources/lab4/Src/Tcl (注意:Vivado使用‘/’);
, D6 y; h2 w$ o d4 R3 ?3) 在Tcl命令框中,输入命令:source ./ Oscilloscope.tcl。输入完毕按回车,运行Tcl;
5 V$ ~1 N" Z) N1 s& g# G4) 等待Tcl综合、实现、生成比特流文件;
3 `. U% i4 y& m5) 在Flow Navigator中,展开PROGRAM AND DEBUG,点击Open Hardware Manager,点击Open target>Auto Connect 连接Basys3;
$ ]0 O: [4 Q: A+ G& f6) 点击Program device,选择生成的比特流文件开始下载。
* {9 k/ }# p8 f- _9 H
; l' k0 A* A5 d, ~, i设计验证 4 C3 y' y. W/ N. S3 l! O
待比特流文件下载完成后,可以将信号发生器的探头连接至Basys3 的JXADC的P极,并将JXADC的N极连接信号发生器的地。本实验,简易示波器的可测电压范围为 0-1V,频率为 4KHz 以下。可以在VGA上观测波形。如果波形显示比较密集,那就需要更改采样时钟,通过按Basys3开发板上的BTNC按键来改变采样时钟,以此来改变波形显示密集程度。 9 q+ h# g& V8 I) J: R
1. 基于Analog Discovery2 : R" ]$ H8 Z# r8 v
按照下图连接方式,将Analog Discovery2的波形发生器的输出引线W1(黄色)和W2(黄白色)与Basys3的JXADC的pin1和pin7相连接。 4 j( P7 Q7 ~: Q: [0 w
' I! q; ?* Q- Z) f: ~9 y8 {3 \
3 W( {( s+ Q. c' B* v
, E( d0 d* d* p! I! k2 T
* G; W: H4 V9 C7 Z# {1) 打开WaveForms软件,连接Analog Discovery2设备
+ T9 P7 ?4 N+ l0 O2) 在左侧的功能选择栏选择‘Wavegen’,使用波形发生器。
1 z3 ]4 o( t6 n* ]5 _# B3) 根据本实验示波器设计的输入标准,将波形幅值设置为400mV,直流偏移量设置为500mV,输入的频率可以选择为100H~5kHz之间 , K" N; E. C* n" e
, _" | Y7 w" V: d( m
4 m* ?' O8 |4 ?6 k b
- e! N' n7 C8 f X, a/ V O
. e4 G0 G/ r/ ?2 V6 E! j4) 点击左上角‘Run All’开始运行。按下Basys3开发板上BTNC按钮进行采样频率调节,在VGA显示器上观察输出结果
! u6 X. p& W9 s& T% P) T( e
6 F) @- B# Y2 L9 Q$ H
' H* i M- b& N8 [
% U0 _% V5 g4 L
7 q( o0 s+ A; H% L+ r2. 基于OpenScope
7 c u3 R4 j S4 d1 \
按照下图连接方式,将OpenScope的波形发生器的输出引线W1(黄色)与Basys3的JXADC的pin1相连接。 ) h* w @( J- t# u3 [
1) 打开Digilent Agent 2 f6 @3 X5 W4 b6 F d" T' y
2) 在Windows工具栏右侧,右键Digilent Agent图标,选择‘Launch WaveForms Live’,在浏览器中打开WaveForms Live。
8 c! g0 c" R B7 m' b3) 选择在实验二中已经添加的设备,点击连接该设备 * x/ w4 {8 C) }0 P0 I8 g
! S' }2 W- ^9 x7 o" w# L# I1 q7 l3 K' u3 L
7 z/ E' T% C1 }1 k# [' `& d0 q; H
4) 在右侧找到并展开Wavegen(波形发生器),按以下参数进行配置: 选择正弦波 & Y& c0 b4 g! k b8 ~8 X( K
Frequency:2 kHz Amplitude:1 Vpp DC Offset:1.4 V & i, I4 c0 ?5 \( g$ O
5) 点击右上角开关按钮,打开波形发生器。
@1 d8 u+ V3 z! y5 i: W- n/ ^
' O6 w x$ V( N3 e b+ [ B3 s
+ N! k9 j W# H2 O) n* {# ~# r$ U
/ p+ r5 C* |0 E- X: [6) 在VGA显示器上观察输出结果,可以使用Basys3开发板上BTNC按钮进行采样频率调节。 7 k7 ~9 w8 B9 f: o7 s% l
( _5 T" w/ A! N: E4 z2 D% k
6 T( V3 l- u7 _! `/ B. d
[6 Y7 |% `( ~* }9 d+ \. _. d |