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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

今天给大侠带来基于 FPGA Vivado 示波器设计,开发板实现使用的是Digilent basys 3,话不多说,上货。( d$ T5 B! X9 Y7 X% A# {

需要源工程可以在以下资料获取里获取。

2 K& \% k/ O- W! o- }9 k5 M( b

资料汇总|FPGA软件安装包、书籍、源码、技术文档…(2023.07.09更新)


, K2 o/ s# u+ {


5 j/ {- ~+ a- F& ?( D$ P

  L' }5 f, Y8 J. D( i% |2 ~/ P3 }* [

本篇掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习示波器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“示波器设计源工程”。

6 z  p# x# ]+ M0 |+ j& e2 ^, J! C

2 c$ z7 ]% t" h2 v+ S0 Q6 ?. u& f4 h

原理介绍  

' ?: T( X' f2 y

数字存储示波器能够将模拟信号进行采样、存储以及显示。本系统在DIGILENT Basys3上构建了一个简易数字存储示波器,简化框图如下:


3 o1 e' ?! }$ i4 X5 y/ _4 J

. [* E0 y0 N4 f5 |7 v

! C4 x; d2 K' L( E- U; I/ {

原理:首先,AD模块对模拟信号进行采样,触发电路根据采样信号判断触发条件(例如:上升沿触发)。满足触发条件后,连续采样一定数量的点(本系统中为640个点),存储到RAM中。峰峰值、频率计算模块对RAM中储存的波形数据进行计算,得到波形的频率以及峰峰值;VGA模块将波形显示出来,并显示计算得到的峰峰值和频率数值。

- J) L% v7 j) _

本篇通过调用DIGILENT Basys3板上芯片中的ADC模块,对外部电压信号进行采样、存储,并通过VGA显示器将波形显示出来。在DIGILENT Basys3上电之前,需要提前将DIGILENT Basys3与VGA连接好,并准备好一台信号发生器。


# M; F" b) e7 H( h6 A


4 e: b; g/ r3 C  E) [% H  v

操作步骤

% R9 r, m" I6 {- y

一、基于添加文件和IP" S! ~0 e3 }/ ^) \# M) b


8 n! J5 D1 ^$ I* b- Z4 I

1. 新建工程项目


: x/ d( m4 B# g/ @

1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;


& t, ^/ j5 n% k, s

2) 点击‘Create Project’,或者单击File>New Project创建工程文件;


4 `/ W3 n6 Z5 \; [9 `3 _; b! l+ ~

3) 将新的工程项目命名为‘lab4’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续;

5 t+ S7 ?1 x( q! E2 Y

4) 选择新建一个RTL工程,勾选Do not specify sources at this time(不指定添加源文件),先不添加源文件。点击 Next继续;


" V. |8 |* k6 l) H' y2 P

5) 选择目标FPGA器件:xc7a35tcpg236-1或Basys3;

6 @5 a1 _( _0 s; I* f4 f

6) 最后在新工程总结中,检查工程创建是否有误。没有问题,则点击Finish,完成新工程的创建。


8 s5 f7 j/ z& g0 C( T* F

2. 添加已经设计好的IP和源文件


& @$ d# H+ b8 `

工程建立完毕,我们将设计所需的IP文件夹(IP_Catalog)和实验需要使用的HDL(Verilog)文件复制到已经创建的工程文件夹根目录下:


: T7 b% T7 H* s* }) W, z

源文件位于Basys3_workshop\sources\lab4\Src\HDL_source


) U! m4 X% d. S1 e, o% v  C

复制完成后,如下图所示:

3 W# a0 d& l1 W' c


1 U! ^/ i, D% ^, v, a2 e# w5 y$ k


$ \+ x1 _) x; X" J- X

+ M: a. |& `1 a1 ?! k

1) 在Vivado界面左侧Flow Navigator中展开PROJECT MANAGER,选择‘Settings’;

) r/ C! R! Q8 F# x


$ ^2 Y& E, ~/ ?! O

/ P% ^$ {2 j7 y

$ b$ a7 z, r0 i; h! g9 W; R4 O

2) 弹出窗口中,在左侧Project Settings中展开IP一项,选择‘Repository’,点击右侧的添加IP;


' \7 L9 G! ]$ q9 @' H
8 C* P3 x. u- W) P8 t, l/ ?, O, B
/ U; z! ~) A0 H- {7 _# w' i; Y; U( v9 C2 [
9 E  R: I4 W8 m% [
- }) f, _, M+ Y: e8 D; W
- l! f: Y& b- @: V& V" ~8 |4 V
6 y' e$ E8 g" e+ w/ i- b

/ e* e5 Y% K+ b. `

1 i0 m# c% i5 n

+ l2 v- }- u/ Y  s
       3) 选择复制到工程文件夹根目录下的IP文件夹;
3 U, {- o! N  A+ j; l6 c

' ~8 ]. U+ @' |9 R
+ l* |5 G7 ?6 M: u2 o6 ~

4 ^  i6 W& x( C( Y, e# v( U
1 Q2 B6 {8 ?' s- |

5 w. F; L, x& o. g* u0 K: W( W

4) 点击OK完成添加。

$ e. \* ]& ^6 d+ F4 U

5) 添加IP至工程

. {  x2 I0 t: k$ ]- p1 [% S

5.1 在Flow Navigator中展开PROJECT MANAGER,选择IP Catalog;

  r$ y% j5 X/ O1 G) }8 k

3 e% B9 m9 f- E2 ?

. s9 r& O6 b% x9 g

5.2 在右侧IP Catalog窗口的搜索框中搜索‘clocking’,双击‘Clocking Wizard’开始配置IP;

2 ^+ _1 T! h1 Q3 q! M/ i

+ o9 _6 ^0 Q0 W# c1 f

- \- n1 O9 p4 T5 v* L' F

5.3 配置IP

) `/ x% o* N0 O' Q- i6 e% \5 ~

5.3.1 将IP的名字由‘clk_wiz_0’修改为‘clock’


3 w# ?' H, c' e2 O: w* v5 Z

5.3.2 选择‘Output Clocks’,设置7路输出时钟(100MHz、25MHz、12.5MHz、25MHz、50MHz、75MHz、100MHz)


" d3 e1 l6 L, @7 [0 Q* e+ ~

5.3.3 在Enable Optional I/O for MMCM/PLL一项中取消勾选‘reset’和‘locked’选项


6 @, r# a! m! V3 a9 ?


; j4 N- e: A* @
+ T  N- D0 m: n$ w  ~7 u* {# P# c3 Y+ B

5.3.4 Vivado会创建新的文件夹保存配置完成的IP,点击OK继续


- t- e1 W' |; t( q6 a& y/ _

( @6 c' V: h; P+ G
) a0 h, m, I1 S' }' ]

, @" s9 f  B. p4 [# W. K$ E' J

5.3.5 弹出Generate Output Products窗口,在Synthesis Options中选择‘Global’,点击‘Generate’继续。

5 z7 G; w' k1 T1 R
$ }* M- [1 e) r; U* m0 I
! \. [+ @% h5 J. [' A( X. O8 y! V
% s( X* U& ^% I

, E! @  `! Q$ u8 J9 M4 ?3 X

. U0 E" \! Q, s0 u$ w( I" M+ Y. M! R9 S8 {6 G
( l( G- D6 e  _0 C; i: |* `# l
5.4 同样的,依次在IP Catalog窗口中添加debounce、vga和xadc三个IP,使用默认IP设置,无需另外配置,并且Generate Output Products,完成后Sources窗格中如下图所示:

3 X+ J0 H+ x9 w& N! l) ]6 e* h- ~$ i

* C. q& s; @+ y* J9 [% Y0 W% ]7 T: {  {
, M! }" [; M% P( [+ N% B/ s2 x. {

% J5 Z$ C7 y" ?' |9 W

6) 添加HDL文件至工程


9 p* G3 p1 h1 y3 v6 p: X7 _

6.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources

  m0 I7 _: l* G, T  I( e


" H! [  w6 O* M/ o: d, \9 r- u
6 n0 U# x) N% t8 f9 _2 N2 U0 K! Q

6.2 在导向窗口中选择‘Add or create design sources’,点击Next继续

7 a6 f4 j: z9 Z1 y% k/ Q5 o: p+ l


" f6 o  M; v5 X/ J" d; X& X& m. N# j, ^2 w

6.3 在Add or Create Design Sources页面中选择‘Add Files’


4 l* U5 U, N7 }0 k: g2 U% @! z

% g4 K6 Z# r' [' @- R. ~, ^( O

+ I1 {5 T' {/ t% m2 _

6.4 找到lab4根目录,选中添加所有9个Verilog文件。

$ z9 a8 V& H8 j( E9 B3 z

, Y7 h5 q/ ~" D1 H6 L

8 _* S1 Y) b6 h5 M1 Q$ v9 H

6.5 勾选‘Copy sources into project’,点击Finish完成添加。


6 `6 {# u+ s( R5 w

/ q2 M6 R+ d7 E0 Q3 D9 M& \
1 q8 ]0 m1 z( Z7 h2 q  S! g

6.6 完成后Sources窗格中如下图所示:

1 Q0 N9 F+ v" H  c" N  y


9 n& F3 I7 |2 _- E, H# B1 Q0 D# R5 Y& n9 B# g* z

7) 添加物理约束(XDC)文件

7.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources;

/ O* ^) s5 G1 H# A$ f/ R

7.2 在导向窗口中选择‘Add or create constraints’,点击Next继续;


* }0 \( v; F# V2 Y  y% T5 o+ ]7 T/ B
5 m1 J: F. l' G/ o. M6 ~/ A. X& E# R

7 D# m& p! ^( C# t
9 W  W. @2 q, T

7.3 在Add or Create Design Sources页面中选择‘Add Files’;


# G' i4 C. N. |/ v! ]9 A8 S

7.4 找到约束文件路径Basys3_workshop\sources\lab4\Src\Constraint,选中并添加‘oscilloscope.xdc’文件;


' Y5 f8 h  B0 j- q! C! \

. |! N2 C- a: k) E" Z

. L6 O* x1 Z* [! W7 `

7.5 勾选‘Copy sources into project’,点击Finish完成添加。

/ C: ?2 q+ s7 L! p

7 P, a6 c' B5 e' ?

7 `" m# m8 `  R

3. 综合、实现、生成比特流文件

; W) C# T( Y. d/ p# [" f2 ?( A

1) 在左侧Flow Navigator中依次点击‘Run Synthesis’、‘Run Implementation’和‘Generate Bitstream’执行综合、实现和生成比特流文件操作。或者,可以直接点击‘Generate Bitstream’,Vivado工具会提示没有已经实现的结果,点击‘Yes’,Vivado工具会依次执行综合、实现和生成比特流文件。

$ K5 l( X$ c. e2 w/ f! y, X

# }( N; h: ~: G% Q5 x& C0 g


" c/ s8 p4 k* S! w3 g. T
+ j, E- e7 U! P; T- P8 C% ]
  M9 U# y6 |* p  m: M

2) 完成后,选择‘Open Hardware Manager’打开硬件管理器。


* U0 t' R  s1 g$ r# p+ N7 l5 F


" R8 y( I% e5 j7 U6 u- s, o) z7 L# \

2 @( R: T& }! N8 r  G/ b

3) 连接Basys3开发板,点击‘Open target’,选择‘Auto connect’。


! _6 `# E/ Z7 N- @! ?, g5 {

6 o9 y9 O! ^" y% k6 y
' ?8 c% e. Y: ?+ q+ K3 l

4) 连接完成后,点击‘Program device’。


# @+ @" q# x* H, L: v+ E. e


0 l/ Z9 m3 t' f( L& y
& l3 i$ k; I3 x% q( ?

5) 检查弹出框中所选中的bit文件,然后点击Program进行下载。


# ^" ?% h5 }/ H( q( y/ [


3 C; U; \3 m( t. i& `- `: f* r- z2 t% V# `

5 i6 l6 V$ j* ~5 d1 n6 T

二、 基于Tcl

1. 运行Tcl,创建新的工程

, Q9 {9 S( ?  ^! k

1) 打开Vivado 2017.2,在界面底部Tcl命令框输入命令;


. V8 p# |" Z# {+ P5 I


* s  ?- i: L7 b$ H" P5 d/ g5 P2 a6 ?% i3 H/ a  I$ r. K

2) 使用‘cd’命令,进入Oscilloscope.tcl文件所在路径。参考路径:C:\Basys3_workshop\sources\lab4\Src\Tcl,在Tcl命令框输入:cd C:/Basys3_workshop/sources/lab4/Src/Tcl (注意:Vivado使用‘/’);


8 ~+ W( K6 J  H

3) 在Tcl命令框中,输入命令:source ./ Oscilloscope.tcl。输入完毕按回车,运行Tcl;

' ^0 }1 p9 x/ C- A6 I/ R9 Y2 a

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

( Q/ {4 a, U0 z  l2 `

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

2 x; }( r" i- |1 k# H1 T# F

6) 点击Program device,选择生成的比特流文件开始下载。

" b. t4 `3 S, v

. n3 m" Z; Q4 Y8 t/ h* ?+ |

设计验证


8 I& t7 f4 R6 U( r  x. e

待比特流文件下载完成后,可以将信号发生器的探头连接至Basys3 的JXADC的P极,并将JXADC的N极连接信号发生器的地。本实验,简易示波器的可测电压范围为 0-1V,频率为 4KHz 以下。可以在VGA上观测波形。如果波形显示比较密集,那就需要更改采样时钟,通过按Basys3开发板上的BTNC按键来改变采样时钟,以此来改变波形显示密集程度。


' }7 l1 I8 b, u, e! e

1. 基于Analog Discovery2


, Y) n- f# j% Y; I( d

按照下图连接方式,将Analog Discovery2的波形发生器的输出引线W1(黄色)和W2(黄白色)与Basys3的JXADC的pin1和pin7相连接。


% K' a! T# Y6 B* O; B5 K0 V
: ]% {7 P4 M7 o1 s

4 s  ?$ a$ b0 B, @7 g4 |8 c
8 H0 s' W- g+ K% s) Y1 J

  K3 r. W+ _7 Y* ~4 T

1) 打开WaveForms软件,连接Analog Discovery2设备

1 J7 i' A& O8 Y

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


% S/ k. F! T1 B; R' ^+ b: y. O: p) ]

3) 根据本实验示波器设计的输入标准,将波形幅值设置为400mV,直流偏移量设置为500mV,输入的频率可以选择为100H~5kHz之间


0 e" ]# R2 f# \# h" }6 Q. g& O) s  C4 ?% }& q8 I7 K- K


/ K# T! u' E9 Q- e% f$ G" ]& Z$ g9 Y4 p. @- q) C5 ^
8 V: N' {- r7 Y( V

4) 点击左上角‘Run All’开始运行。按下Basys3开发板上BTNC按钮进行采样频率调节,在VGA显示器上观察输出结果

; Y' ?& ~" E9 G! R/ ]2 m5 i
0 }: [7 @2 f/ `' \; {3 W


' }/ T0 r* a9 ]6 c2 [4 f* c3 S# m0 l
+ p, K( |! @+ |% }

2. 基于OpenScope

" _3 t  f( J. \4 i4 r; T% T) P# Q$ k

按照下图连接方式,将OpenScope的波形发生器的输出引线W1(黄色)与Basys3的JXADC的pin1相连接。


7 J0 y1 [. G4 c6 d7 g  P+ O" L0 h

1) 打开Digilent Agent

" z( X& e0 ^+ s* @5 x! U& C' F9 S4 r

2) 在Windows工具栏右侧,右键Digilent Agent图标,选择‘Launch WaveForms Live’,在浏览器中打开WaveForms Live。


) x- H% H1 Y) q3 k' u

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

6 T6 o. g1 v; Z6 ~; M


, O0 m$ u' v5 m1 M: Z' y( I" }" t7 L& F/ R& ~. z- w
' v! a6 R' t2 M8 _0 h8 x/ S: x- L

4) 在右侧找到并展开Wavegen(波形发生器),按以下参数进行配置:

选择正弦波


- L" t5 D' H! H

Frequency:2 kHz

Amplitude:1 Vpp

DC Offset:1.4 V


& V3 [9 B7 b# }0 e$ C0 Q

5) 点击右上角开关按钮,打开波形发生器。


4 Z; ?1 M& k" ?; h0 o: ?4 }4 f! T9 T
5 z" }4 _7 Y0 y) k0 H& C2 X8 H


, n+ G# o7 _) X9 a' ]. f$ z; \; W7 r

6) 在VGA显示器上观察输出结果,可以使用Basys3开发板上BTNC按钮进行采样频率调节。

% Z# x9 N( X: _( [% X" x

/ `1 X* x& ?5 w7 [, [* [9 b% f# v1 e+ ^+ @) A; Q5 s2 ]
8 S+ N) ^( c, R2 n: C! D

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-28 18:41 , Processed in 0.203125 second(s), 27 queries , Gzip On.

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

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

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