源码下载源码-信号发生器和DA转换.rar
技术交流请加FPGA交流群:97925396 交流
文章原文:www.mdy-edu.com/product/809.html
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位信号。下面表格表示了硬件电路图的连接关系。
器件
|
AD9709管脚
|
原理图信号
|
FPGA管脚
|
FPGA工程信号
|
U8
|
MODE
|
DAC_MODE
|
Y4
|
dac_mode
|
SLEEP
|
DAC_SLEEP
|
H2
|
dac_sleep
|
CLK1
|
DA_CLKA
|
R2
|
dac_clka
|
WRT1
|
DA_WRA
|
U1
|
dac_wra
|
DB7P1
|
DAC_DA7
|
AA1
|
dac_da[7]
|
DB6P1
|
DAC_DA6
|
Y2
|
dac_da[6]
|
DB5P1
|
DAC_DA5
|
Y1
|
dac_da[5]
|
DB4P1
|
DAC_DA4
|
W2
|
dac_da[4]
|
DB3P1
|
DAC_DA3
|
W1
|
dac_da[3]
|
DB2P1
|
DAC_DA2
|
V2
|
dac_da[2]
|
DB1P1
|
DAC_DA1
|
V1
|
dac_da[1]
|
DB0P1
|
DAC_DA0
|
U2
|
dac_da[0]
|
CLK2
|
DA_CLKB
|
R1
|
|
WRT2
|
DA_WRB
|
P2
|
|
DB7P2
|
DAC_DB7
|
P1
|
|
DB6P2
|
DAC_DB6
|
N2
|
|
DB5P2
|
DAC_DB5
|
N1
|
|
DB4P2
|
DAC_DB4
|
M2
|
|
DB3P2
|
DAC_DB3
|
M1
|
|
DB2P2
|
DAC_DB2
|
J1
|
|
DB1P2
|
DAC_DB1
|
J2
|
|
DB0P2
|
DAC_DB0
|
H1
|
|
X1
|
|
SYS_CLK
|
G1
|
clk
|
K1
|
|
SYS_RST
|
AB12
|
rst_n
|
将module的名称定义为dds_da,代码如下:
1 2 3 4 5 6 7 8 9
|
moduledds_da( clk , rst_n , dac_mode , dac_clka , dac_da , dac_wra , dac_sleep );
|
其中clk、rst_n是1位的输入信号,dac_da是8位的输出信号,dac_mode,dac_clka,dac_wra,dac_sleep是一位输出信号。
1 2 3 4 5 6 7
|
input clk ; input rst_n ; output dac_mode ; output dac_clka ; output [ 8-1:0] dac_da ; output dac_wra ; output dac_sleep ;
|
\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位信号。下面表格表示了硬件电路图的连接关系。
器件
|
AD9709管脚
|
原理图信号
|
FPGA管脚
|
FPGA工程信号
|
U8
|
MODE
|
DAC_MODE
|
Y4
|
dac_mode
|
SLEEP
|
DAC_SLEEP
|
H2
|
dac_sleep
|
CLK1
|
DA_CLKA
|
R2
|
dac_clka
|
WRT1
|
DA_WRA
|
U1
|
dac_wra
|
DB7P1
|
DAC_DA7
|
AA1
|
dac_da[7]
|
DB6P1
|
DAC_DA6
|
Y2
|
dac_da[6]
|
DB5P1
|
DAC_DA5
|
Y1
|
dac_da[5]
|
DB4P1
|
DAC_DA4
|
W2
|
dac_da[4]
|
DB3P1
|
DAC_DA3
|
W1
|
dac_da[3]
|
DB2P1
|
DAC_DA2
|
V2
|
dac_da[2]
|
DB1P1
|
DAC_DA1
|
V1
|
dac_da[1]
|
DB0P1
|
DAC_DA0
|
U2
|
dac_da[0]
|
CLK2
|
DA_CLKB
|
R1
|
|
WRT2
|
DA_WRB
|
P2
|
|
DB7P2
|
DAC_DB7
|
P1
|
|
DB6P2
|
DAC_DB6
|
N2
|
|
DB5P2
|
DAC_DB5
|
N1
|
|
DB4P2
|
DAC_DB4
|
M2
|
|
DB3P2
|
DAC_DB3
|
M1
|
|
DB2P2
|
DAC_DB2
|
J1
|
|
DB1P2
|
DAC_DB1
|
J2
|
|
DB0P2
|
DAC_DB0
|
H1
|
|
X1
|
|
SYS_CLK
|
G1
|
clk
|
K1
|
|
SYS_RST
|
AB12
|
rst_n
|
将module的名称定义为dds_da,代码如下:
1 2 3 4 5 6 7 8 9
|
moduledds_da( clk , rst_n , dac_mode , dac_clka , dac_da , dac_wra , dac_sleep );
|
其中clk、rst_n是1位的输入信号,dac_da是8位的输出信号,dac_mode,dac_clka,dac_wra,dac_sleep是一位输出信号。
1 2 3 4 5 6 7
|
input clk ; input rst_n ; output dac_mode ; output dac_clka ; output [ 8-1:0] dac_da ; output dac_wra ; output dac_sleep ; |