EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Heaven_1 于 2023-8-16 15:17 编辑
: D3 v* L+ A# D! V8 a& r
6 s) T7 w1 [+ `5 `# _9 p# D2 f
) V( i4 O& a5 n8 e( k7 |
. q* h( v0 l) N! U% ~+ r7 Y6 C. z5 I+ Z3 ]: i
本篇掌握基于 FPGA Vivado 信号发生器设计(附源工程),掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习信号发生器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“信号发生器设计源工程”。 * n# s- M/ C h
信号发生器能够产生频率波形可调的信号输出,目前仅限于1Hz~4999Hz频率范围,波形可选择三角波,方波,锯齿波,以及正弦波。本系统在Basys3上构建了一个简易信号发生器,简化框图如下: 5 o! e5 u# ^ n$ M1 V
8 h* i3 V: \$ c& W
原理:首先,通过按键设置波形的频率,并通过拨码开关设置波形的种类(一共有正弦波、三角波、方波、锯齿波四种)。频率值可以通过数码管显示。片上的输出时钟计算模块能够根据设置好的频率值,计算波形查找表的输出时钟,以及生成查找表的地址。查找表根据波形选择模块,决定输出何种波形数据,并在输出时钟的驱使下,输出波形数据。最后,片上的DA模块将波形数据发送给外部DA。本设计通过Basys3外接Pmod-DA1模块,进行DA输出。 5 O! V; j2 y I; n9 R9 q
基于添加文件和IP
& ]% \; v. A- r1 ~! x! { o: r1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;
$ D. v4 @4 R1 U3) 将新的工程项目命名为‘lab5’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续;
' U$ N8 x4 Y$ M' w5) 选择目标FPGA器件:xc7a35tcpg236-1或Basys3; 0 a( |2 R, p6 u/ P3 r) N5 A) c
2. 添加已经设计好的IP和HDL文件 f% ]: `, _3 t
源文件位于Basys3_workshop\sources\lab5\Src\HDL_source
: G9 N& `6 _+ d6 s& f+ P) v& p, T+ \( V9 `" d1 F9 x* t: ?
& n+ j3 M/ {4 Y% Z8 n& I x4 T, ]& Q& e& x6 i$ Y
+ I" Q E2 M0 W. r: `6 ]
- |: }2 @ h& Y$ X
9 Q5 n/ E9 M. i9 K6 E1 j4) 点击OK完成添加; # ]0 }7 T T7 D6 e+ M6 V2 T
5.1 在Flow Navigator中展开PROJECT MANAGER,选择IP Catalog; 7 l8 d% c0 s) ], J. m: T# x
5.2 在右侧IP Catalog窗口的搜索框中搜索‘clocking’,双击‘Clocking Wizard’开始配置IP; ! B, L+ c( F+ @" F) {5 _# ~
; n* ?4 J. L' _# z8 t% F, E5.3 配置IP。
& p4 {6 M' J: q; A0 ~- z5.3.2 选择‘Output Clocks’,设置2路输出时钟(100MHz和50MHz); ' p! @/ J# ]1 [3 n7 W' e2 s2 H
4 W5 Y& |* q+ R
, z. k' `! D9 T* y9 U
. s/ H/ |! o! |6 `" P# O
/ c6 |; M2 L* Y" M7 s' x
* T- R1 S3 X. I6 k. s7 ^# i
" b: R5 e5 y, T! P% h' s5.4 同样的,在IP Catalog窗口中添加Divider Generator,配置如下图如下图所示: . h+ i( D& @7 G9 n1 v* c/ y
5.5 同样的,依次在IP Catalog窗口中添加debounce和seg7decimal这两个IP,使用默认IP设置,无需另外配置,并且Generate Output Products,完成后Sources窗格中如下图所示:
0 y: h0 y7 {" z- c/ m6) 添加HDL文件至工程 0 F4 p+ ?3 g! {8 a! @ g
' c0 |. r8 n* c" k
" f( u# S; O F4 K/ P
6 X* c9 i1 p0 d2 R6 ^
- G9 o; g U* e4 r" ]# k; c2 r" a1 l0 p8 R5 _
( ~/ F$ P! x" i; o- U8 R0 ^+ ~
* } e& ~/ z+ M: N
7 R! O n, z! F" ?
3 G" B# f6 n9 `7 O7 A' [' Y# X. X9 T# H$ `4 l2 P& O; p% j
4 v, b7 _* a/ }( a, T8 J9 b" k) b- I
j, M' {- f/ J% u
' d" T' W% x, M2 M$ o" B5 m5 Y9 t9 S8 {, a' \
7.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources;
( [+ q" h# B4 h, ~+ Q/ W" S [8 C4 T9 H0 Z
; e1 Y. H& r* X! {& O
M" Z8 r. D2 z6 q: ?# L7.4 找到约束文件路径Basys3_workshop\sources\lab5\Src\Constraint,选中并添加‘signal_gen.xdc’文件; - @* D ?; n3 Q) H5 p
7.5 勾选‘Copy sources into project’,点击Finish完成添加。
% q" w8 I* H+ d* h% o3. 综合、实现、生成比特流文件
3 o+ B1 d' F( k$ [( g1 r2 E) N7 r, c. E, ?! Z
1 g9 B. S1 Q( c& n7 z1 t
8 Z/ W! M5 _( H' v- t; U4 ]) u$ q
# }3 ?* M0 ^) B! p8 e) ^
+ G4 _2 v# _ o1 d5 ?: E
$ a# W7 B# | G3 S" X0 D8 ]2 {; @. r5 E3 O
8 Z! v: h9 k0 ]7 d' o- k
- O( r4 z% X; z' Y/ D' ^9 S; e6 u& R/ r1 u( ~
% w. `/ c; C( K9 I$ @
1. 基于Analog Discovery2
0 \+ N9 _9 b7 N4 V- @0 v; s# f, w! n8 u V. r4 j
6 A0 S. P% n! x5 l; k" {
: {, z5 z. _7 L+ E% o2 _' y# \4 r7 t2) 在左侧的功能选择栏选择‘Scope’,使用示波器 ( n6 o0 O E5 N) H
' p1 |6 v. K: ~$ I0 B0 N8 N) m% n L) _- [$ l2 `
4 b" {$ }1 [0 @; ~( X3 E F1 |按照下图连接方式,首先将Pmod-DA1模块插入在JC口上方,同时将OpenScope的示波器CH1的输出引线1+(橙色)和1-(橙白色)分别与Pmod-DA1模块的A1和GND相连接。 7 O' K; Q# w4 w2 Z! j; T
2) 在Windows工具栏右侧,右键Digilent Agent图标,选择‘Launch WaveForms Live’,在浏览器中打开WaveForms Live;
* y: A% c( v. T$ U% e3 K! @7 V# t: n! o% O l G
, Z' P0 _- K$ C/ J
/ }. u" _* {, M) E j: }% N: v9 g/ @. Y K
& b. |7 n1 F6 Z4 ]) [5 h# j# s
9 [) W" }2 g& I8 q ?" d& k
. c# ~# @ K: J4 S2 E2 [# b5 |1 L7 {$ W6 g8 V, X, T) P4 b, B
: E) l G% w. C+ F+ s
$ O! x' g9 z; a# G$ o9 G |