源码下载  源码-信号发生器和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 ;
 |