找回密码
 注册
关于网站域名变更的通知
查看: 637|回复: 1
打印 上一主题 下一主题

基于 FPGA Vivado 示波器设计(附源工程)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
 楼主| 发表于 2023-8-17 19:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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$ y

5.3 配置IP


' I3 v  R! K& b+ @0 X3 q0 ]3 y

5.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# t

5.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 k

6) 添加HDL文件至工程


1 ^# |" t+ F3 k' ~& |1 n% F* \( P

6.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 w

6.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) Z

1) 在左侧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 e

2) 完成后,选择‘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+ a

3) 连接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) E

5) 检查弹出框中所选中的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$ |( O

1) 打开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 x

2) 使用‘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# G

4) 等待Tcl综合、实现、生成比特流文件;


3 `. U% i4 y& m

5) 在Flow Navigator中,展开PROGRAM AND DEBUG,点击Open Hardware Manager,点击Open target>Auto Connect 连接Basys3;


$ ]0 O: [4 Q: A+ G& f

6) 点击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 O

2) 在左侧的功能选择栏选择‘Wavegen’,使用波形发生器。


1 z3 ]4 o( t6 n* ]5 _# B

3) 根据本实验示波器设计的输入标准,将波形幅值设置为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! j

4) 点击左上角‘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+ r

2. 基于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' b

3) 选择在实验二中已经添加的设备,点击连接该设备

* 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

该用户从未签到

2#
发表于 2023-8-22 10:56 | 只看该作者
verilog太难学了,不知道怎么开始
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-19 14:01 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表