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

基于fpga的信号发生器和DA转换

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-3-24 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
基于FPGA的信号发生器和DA转换
# P) `2 |& k" u! v2 |3 Q
: e& V' V: O$ U$ X8 E( e  u
3设计实现
3.1顶层接口
新建目录:D:\mdy_book\dds_da。在该目录中,新建一个名为dds_da.v的文件,并用GVIM打开,开始编写代码。
我们要实现的功能,概括起来就是FPGA产生控制AD9709,让其中的通道A产生正弦波所对应的电压。为了控制AD9709的通道A,就需要控制AD9709的MODE、SLEEP、CLK1、WRT1、DB7~0P1管脚。根据设计目标的要求,整个工程需要以下信号
1.使用clk连接到晶振,表示50M时钟的输入。
2.使用rst_n连接到按键,表示复位信号。
3.使用DAC_mode信号连接到AD9709的MODE管脚,用来控制其工作模式。
4.使用dac_sleep信号连接到AD9709的SLEEP管脚,用来控制其睡眠模式。
5.使用dac_clka信号连接到AD9709的CLK1管脚,用来控制通道A的时钟。
6.使用dac_wra信号连接到AD9709的WRT1管脚,用来控制通道A的写使能。
7.使用8位信号dac_da连接到AD9709的DB7~0P1管脚,用来控制通道A的写数据。
综上所述,我们这个工程需要7个信号,时钟clk,复位rst_n,dac_mode、dac_sleep、dac_clka、dac_wra和dac_da,其中dac_da是8位信号,其他都是1位信号。下面表格表示了硬件电路图的连接关系。
器件
- E" X/ |/ c6 q, r% N. `
AD9709管脚
+ c5 F* L; p4 w& ~
原理图信号
9 Q2 I5 [" q7 p, }
FPGA管脚
8 S2 K# t" C# |" V3 r# g+ q  h
FPGA工程信号+ t' k* i& _& U4 K4 A# p
U87 B! m# E% s- g* Z. e
MODE5 B) c1 Y; z3 x2 X9 L3 b
DAC_MODE
8 I5 ~8 T2 b2 \
Y4
, b  z' Q  }3 ]9 I
dac_mode5 L- ]$ ^: [6 f* O: m- }
SLEEP
! S8 U+ V9 e0 |$ E: v: R
DAC_SLEEP! q- r" W5 @3 [+ Z" q8 J0 e6 m+ d
H2
$ X! w2 C- D- s( R# M
dac_sleep& `" R( O6 ^) D6 |- ^- G
CLK16 g1 j6 c* L. D4 e4 I- H
DA_CLKA
+ D4 |2 [9 ]# ^8 U
R2
4 I- S! L1 Q, a& C5 g
dac_clka9 D; M( W: m- }1 @
WRT12 O) h$ _, s3 S7 P9 T
DA_WRA* _7 \0 M7 K1 |
U15 O  g1 c8 R- ], [  l% k& e5 c
dac_wra8 `2 W* l6 F# L& a$ g6 j
DB7P1
- [# Z. @9 |0 P3 U1 Z
DAC_DA7' f. E9 c( J- m# m" Y7 ?
AA18 l; Z* R$ @9 G* J" D
dac_da[7]
7 B$ o; V9 ^$ s& Z7 u
DB6P1, @, r( D7 ^2 a7 H( S( m
DAC_DA6
7 f; }. E3 x' v
Y29 J/ b/ ~7 i" {( p9 B  o
dac_da[6]2 M' p' D2 K8 V7 t4 H5 t
DB5P10 n4 s" X( P$ V6 o' ~/ J
DAC_DA5, a! ^9 `2 ], q* m$ n$ P
Y18 Q3 N% i/ m1 W9 M( D
dac_da[5]( J0 Q* R4 W1 |4 l3 C) E
DB4P1. w8 a: g; W$ q: H2 x
DAC_DA4
2 s- v0 w" o0 @  _
W2
9 T; ~# [# a% L0 j) z0 }4 N- w
dac_da[4]2 H" q* b9 J) q" F
DB3P1
% K% i  E' W5 t5 _! D
DAC_DA3
1 P7 c5 N/ @  H3 y
W1
; }( l4 Q" r1 D  y6 ~0 K
dac_da[3]
; {* C: U7 {" p3 l( {! R4 {6 H
DB2P1
! _' c% {6 p  }- V" b/ w
DAC_DA27 \4 o9 s! y7 T+ l/ F; o
V2) N4 L' d* C/ K( R" n- n
dac_da[2]
& ?2 A$ \# ?" r/ M% f5 j$ D  `
DB1P1
7 b- u" a0 J% d6 H2 ?7 b, N
DAC_DA1
) @! c  @4 H! A* p" |: E
V1
& q) H* G, H, N# p1 h/ H4 D
dac_da[1]
1 J1 u8 ^) W! T( S- q/ u
DB0P1
# u. R( i* G+ k. r
DAC_DA0
' S- I! C1 w! c; j1 E" O) s
U2
/ _# I( E- M% C
dac_da[0]
' X2 T/ B8 B8 j5 g) ]
CLK2
% }: v: P5 {$ w! Y
DA_CLKB
+ o# y5 N- l- R- D3 m4 g
R1, V: }$ ^, J" n
0 H) L) x0 a  o" j! T, |
WRT2
% P% f% K+ B: ?& w1 U" x
DA_WRB
6 \- [: I. X( n
P2
1 e& F; c, M! ]9 [2 P$ d! \
+ N, g& }" s* `0 l8 {
DB7P2
2 ]. b$ \) Z$ q. {+ z9 [  U) N5 N
DAC_DB7
' M( Y* y9 }% p3 `% I' l( C. U
P1$ u0 r7 m2 |" \+ w( D1 w
+ }& m' c, K3 H5 L  E. \3 b
DB6P22 h$ L0 M+ n: @7 A" _, O
DAC_DB6% i: V$ ^/ |9 ?( D
N2
) t+ ~, t# \; u5 E8 v# k
# b! J1 w2 O+ C1 k
DB5P2
6 j; g$ c% T- n. U. G
DAC_DB5
+ N0 s. {3 `. Q. E
N1
2 o5 E" |8 I4 w" Y6 W
/ N* t% d) c0 `; i7 t# d' X
DB4P2
7 p" b- ?4 }0 x( J8 f6 ]
DAC_DB4# H3 A; X/ Y2 U/ m$ R
M2
6 p! b% a- O. T7 J, G
# l8 k& w+ [4 X, `& ?0 Z* o( Q
DB3P2
4 C  C% F7 Y# R0 |+ q* F
DAC_DB31 N: j# Z* S& W) `, E& ]! G
M1. p' i* ]4 C1 b( Y# H: Z: t

) |- l7 b) A% }- V" d
DB2P2
2 J& ]7 p4 B8 M" ~& u. S$ r) W
DAC_DB2
# [% p7 J' _, g% f# N: n- F, L1 r
J1
  b7 {' _! z% b7 s

8 ], C- F2 s( m% |
DB1P2
. Y' Z1 k4 l8 m+ h$ Z, p
DAC_DB1
& n4 a4 B- i( _" q8 R
J2
# U4 ^. H0 o5 v+ q" g3 T* `& V
, r( r2 j0 |; r$ r# c2 i" g
DB0P2
3 u& g2 m- n' Z4 Z+ Q
DAC_DB0  x3 T# H9 G9 L8 X0 z# Q! T
H1
+ g! v0 J4 q4 m6 V' o/ h- e

( Y8 O" q( i  v6 C- }0 [4 B1 M
X1
! i# a' s4 m3 u" N' q( o% k

% f& U5 I" j1 Y( B8 x0 V
SYS_CLK
# l/ j- S+ ~. `: O# C
G1
* _9 k" z1 F, L
clk' M& |0 I. ~0 q% g' {- p
K1
! \4 s/ r7 F* Q% x1 P4 U1 [% d0 l

5 ?- S' L6 h4 F" a) J
SYS_RST# i& F, z  t* [1 K, m) Q
AB12
8 O8 k3 e- x* L" E2 ^0 M7 Y7 q2 c* v
rst_n
, y2 z! ^5 M. h. i  I' d8 i  m
将module的名称定义为dds_da,代码如下:
1- {7 Z2 [7 `: ]9 C
2
" a% h1 q% F! n* h. S  [3/ M# a$ e+ v, T3 I! c9 c9 b5 M
4  ?4 Z8 {% S  Y
5$ U5 g) w; B; v& I
6) F! |. O# k+ H9 r8 S0 `2 c! j
7
' a( y: [6 @% ]$ H8
* Z$ o6 v. i9 n9- ]  {9 C9 G, M& O1 _5 Y, J6 e
moduledds_da(
6 Y. K5 A- o. @6 I$ Q0 E* fclk       ,$ W$ m+ o2 s' ]- V0 a5 U7 g2 ~
rst_n     ,
5 S6 q9 ?: y6 ddac_mode ,
/ e$ f! [3 Q) ]8 xdac_clka  ,
% m8 W8 d+ F9 i7 {4 Jdac_da   ,9 {8 O9 l+ G. t
dac_wra  ,0 G. N2 Q3 \3 R/ a' j% H( K) @2 w1 ?
dac_sleep
* ~" ~* {6 x* K);8 W5 D& S* u( g% |, h$ G
2 I. t& r9 s0 l8 E# O+ s/ r
其中clk、rst_n是1位的输入信号,dac_da是8位的输出信号,dac_mode,dac_clka,dac_wra,dac_sleep是一位输出信号。
12 R; z( A$ v$ \% d- C9 ^
2( a" c) w' T6 H0 i+ n, b4 U
3
8 w6 u1 D2 [5 D7 l4 C* f* ?1 Q+ b# ]* L4* R. \+ h& P" c8 m& }
5
: x) D% T0 X  ?. q8 F' q3 h; W6: |4 \) q2 U$ R8 b9 H2 q
79 h) O" d( r% u+ ?) \5 r8 o/ w
input             clk        ;4 K  r7 T0 \$ P
input             rst_n      ;5 S/ E; r% j6 N5 B
output            dac_mode ;$ T) {; w- {' A# L
output            dac_clka  ;" h5 {5 u" C( E; T9 j& X4 F
output [ 8-1:0]    dac_da    ;
) P5 m" m" K7 b' _3 Noutput            dac_wra   ;
5 r/ u2 _( ~6 s. m9 goutput            dac_sleep ;
$ J# A" Z0 R" i6 @4 z9 W$ x- [+ }
: e' V! ?- X1 ?. }- A6 F% j; R
\dds_da。在该目录中,新建一个名为dds_da.v的文件,并用GVIM打开,开始编写代码。
我们要实现的功能,概括起来就是FPGA产生控制AD9709,让其中的通道A产生正弦波所对应的电压。为了控制AD9709的通道A,就需要控制AD9709的MODE、SLEEP、CLK1、WRT1、DB7~0P1管脚。根据设计目标的要求,整个工程需要以下信号:
1.使用clk连接到晶振,表示50M时钟的输入。
2.使用rst_n连接到按键,表示复位信号。
3.使用dac_mode信号连接到AD9709的MODE管脚,用来控制其工作模式。
4.使用dac_sleep信号连接到AD9709的SLEEP管脚,用来控制其睡眠模式。
5.使用dac_clka信号连接到AD9709的CLK1管脚,用来控制通道A的时钟。
6.使用dac_wra信号连接到AD9709的WRT1管脚,用来控制通道A的写使能。
7.使用8位信号dac_da连接到AD9709的DB7~0P1管脚,用来控制通道A的写数据。
综上所述,我们这个工程需要7个信号,时钟clk,复位rst_n,dac_mode、dac_sleep、dac_clka、dac_wra和dac_da,其中dac_da是8位信号,其他都是1位信号。下面表格表示了硬件电路图的连接关系。
器件% w: g$ y' ~+ [6 t, q! j: ~
AD9709管脚
' ?7 k! L! Z( u0 x- M
原理图信号
' V( n+ w8 C8 {( ~2 f3 Y2 j+ l9 e, A
FPGA管脚% k9 \6 p! R* m$ L
FPGA工程信号8 `2 j) ~3 K" x. u
U8
/ _* y- q; U- {* h+ |
MODE
7 l& S4 E7 Q- {! L4 ^, Y* M  Q
DAC_MODE2 o3 g2 O* w6 v: w% H
Y41 y& M+ L+ ?' L( {. D  B9 D
dac_mode: d) }4 j1 v; R. T  A2 N
SLEEP# y' h2 }6 w; i7 F* |; P9 N% @
DAC_SLEEP, f" c- R" O3 Q; f5 ?# _. i9 V
H2
/ J; ~' l& F' ~# W* X6 q
dac_sleep7 |5 S8 \1 R7 ]. Y
CLK1
( C' L; ~; w* t0 I+ [
DA_CLKA) Z* L* [' y7 M) P
R2
3 v4 T# W2 b7 H& u! P1 k
dac_clka5 J+ J" h, p4 D! b5 I
WRT1$ v0 a. P) I9 C& c" }
DA_WRA& u; C& R/ y/ n  G
U19 ~& w- c! z7 `# s1 d
dac_wra
) u% ]. U& M8 ~; q
DB7P1
! q& P8 f2 h! s0 s% |
DAC_DA7
2 s' Y! x+ ]# q/ d$ i9 A
AA1$ X) `: Q* n( J1 M  p+ h( k8 a7 s
dac_da[7]
2 O- T( e1 v( \! N, {, b" P
DB6P18 j3 B" O- w- A- d/ O# O: z6 |# U
DAC_DA6
. k( l& m: w- {& Y
Y2
6 a# x0 G8 ?8 c. p  O7 c
dac_da[6]2 x( u: s2 ~3 q5 P; }
DB5P13 T% V4 M# Z1 U# b: s( z8 K
DAC_DA5
% m' I! w4 k: {( M: @$ n3 Z
Y1
, a9 i+ }/ [$ j- A3 x8 g
dac_da[5]
3 T8 {3 p$ ?! k/ L9 D
DB4P10 e+ s3 o+ o, P- S) Q
DAC_DA4
$ p$ y( ~4 q* W# Q+ b) s
W2
% G# [2 |2 a6 U( t3 z. m
dac_da[4]7 Z+ N4 C( y! a6 m' F6 f: T
DB3P1
/ I! Y0 C3 s7 E( b
DAC_DA3
) k* _9 v' ?4 l+ ~4 l7 j2 `3 ^
W1% t  X8 _- [. o& W+ {3 C
dac_da[3]* x/ g. |+ Q7 a- Z9 O
DB2P1$ T% K( X; _) k3 W) ^4 ^
DAC_DA2
. d/ V/ j9 ^, ]
V20 h: X% Y) b6 L% M3 d
dac_da[2]
7 r: Q0 C& H" G$ ~& B
DB1P1
8 {6 }* n2 P4 b( p; y5 T
DAC_DA1
; G6 _/ [8 a  L
V1
+ f" B* f& g& T/ o& S2 ^& h
dac_da[1]- |6 u: g  \) s$ B/ \- W3 n8 c
DB0P1
4 w6 q# u( z" o4 O$ z: ?
DAC_DA0  F+ g8 M& [& ~4 f, m$ m- ~
U29 L/ j5 d. B8 _8 y% a# b# [
dac_da[0]) B; N, `5 h3 \7 y% C' w, T' y
CLK2
% f) p0 p3 j5 j3 X+ E" a
DA_CLKB
, C5 X: p  s* O# k" W9 V+ L5 W! V
R1
* a$ ]# c7 s5 U% m
/ B6 b/ M# W7 }' j, n
WRT2
/ g% E3 q% r0 _8 {5 Q7 L8 S$ V
DA_WRB0 @' v, V" U5 v8 z
P2
/ C& }8 t6 T: k9 i- k

* y& f: F( R9 `# x2 D1 i
DB7P20 [' |2 E6 b/ f% `5 Z0 q  T
DAC_DB7. S3 ^3 t$ p% ~8 L  Q9 o6 y
P1& J2 d- z9 w5 k0 }. u8 c0 Y

$ F( {, P; r  G% I4 j  @  U
DB6P2; h! R7 M# `$ X+ Y, _: A7 @6 z
DAC_DB6: H  G3 |" U/ F) n1 N9 ^- }- X8 {
N29 _6 i  |% \0 G) E: ]- h0 z, c
: q! ~% N" `8 r/ [; i& @
DB5P2* _" g( \5 {! f  H5 i
DAC_DB5# D. N7 D1 t. H# y& S: I
N10 e/ m/ n3 g" y: _0 B* s& [
: x) a' Y/ v; q) ]
DB4P2
$ G3 O6 }6 V: K! o; c4 y
DAC_DB4
0 w' }1 Q+ w* H# s
M2
2 U8 l9 o/ U+ a8 K+ D8 N
! ]: W- Y( q/ H6 d7 @4 z/ l$ S
DB3P2
' @1 V/ H6 v7 O! O
DAC_DB3
% |! l) D5 E6 K
M1
! q) [& v% y* s  o! ]9 ^9 a

; O- v  A: e; p4 _% s0 R3 V
DB2P2
% ~: a& E( v- |/ M; y" P8 ~
DAC_DB2
7 H- o( o- m: V6 v8 {8 `6 z1 V5 G4 T* K
J1' e) M! S) w% c' P- i7 E5 Q& l/ @- X
  S1 a; l! G$ `/ L
DB1P2
* D, J8 Z& j8 Q, _
DAC_DB13 _, j; g5 `4 c
J2* o7 ?3 j( u3 R3 x

/ W8 y7 B; r% o8 Z
DB0P2! F8 x" O+ {6 |) ]* ^
DAC_DB07 ]9 @9 W: o/ X; B6 `8 h: ]
H10 e. x, K, y) K7 L. m1 ~1 i/ O

  L3 w% B7 I- u( e# [0 }
X1# p% D) @+ q/ |0 ~: _  `
$ R3 }9 _9 c& b  V) y4 P+ \
SYS_CLK
6 |+ C& w( V, o# o* ]
G1
0 J! B. `# z$ K  b" u
clk
6 @' |1 ^8 }5 h4 l" G
K1
1 i1 ~5 G8 D4 P; \  n+ h" _( ^) t

; T. D5 D! ]. F) |; N
SYS_RST
6 s7 C. {! C; o  t: ?* J& G0 s
AB12
0 P! v! [  D8 c/ s
rst_n
4 b: g0 l: q* ^' }- O' Y! L
将module的名称定义为dds_da,代码如下:
1, Y1 G: C  d! b  V! C* ?: t1 @' `
2) a2 P6 z( q- V( ?
3$ Y/ Z- [- M! s. E% v
4: S4 F) G4 L7 O. c" D3 ~, b
5( v' A3 o: J. g8 j0 t) Q! @% b
6( u  E9 {7 C$ h5 c
7
$ B- J. b& V6 N) O2 Q8
2 ~% n) @8 l. v2 K( a9& N: [) h; @& A) V
moduledds_da(5 @! |" ^4 l8 b& F) o  p
clk       ,: L1 l. A: {" f, U. E
rst_n     ,9 \5 _8 ^0 e! s+ j5 \7 h0 ^
dac_mode ,. ~* U) |; b4 c1 h& V
dac_clka  ,/ ]4 p' u0 W. N7 u
dac_da   ,+ f/ D0 L! |, r+ [
dac_wra  ,
  \" q; D- D% n7 m- Idac_sleep: _- B+ K0 z4 s  j
);
% o1 \# E! W, l9 |3 d* H

3 g, Q, @5 ?, f9 A- T* T' u
其中clk、rst_n是1位的输入信号,dac_da是8位的输出信号,dac_mode,dac_clka,dac_wra,dac_sleep是一位输出信号。
1* M4 S  o9 e5 Y0 ]1 t. v8 i; H  S0 M
20 [. L: Q* B: s- Y+ y
3# z' U$ @0 K' e% q
4, f; H) ?7 J% p( Y% v4 P8 }5 E
5
/ L. ^3 c6 d# Q- n7 G6! N. q+ r& x! M, i5 u: j+ _$ a- P
7% e, D+ r* h) U/ m
input             clk        ;8 B' I6 q; G/ m
input             rst_n      ;
4 C- e" _4 U) Z, P$ _+ poutput            dac_mode ;& ~+ `4 x- B- n# N8 z; I
output            dac_clka  ;2 w' G1 J% j2 R& C! c, z8 [  @# A
output [ 8-1:0]    dac_da    ;
. Q7 U0 N, q5 g# L- a+ r' A- toutput            dac_wra   ;
9 \0 A+ ?4 h, w4 c- Uoutput            dac_sleep ;' c0 Q# A8 Q0 Y; r# j
游客,如果您要查看本帖隐藏内容请回复

该用户从未签到

2#
发表于 2019-3-25 16:22 | 只看该作者
妈妈再也不用担心我不会转换了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-8 16:19 , Processed in 0.171875 second(s), 26 queries , Gzip On.

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

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

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