马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册  
 
×
 
技术交流请加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 ; |  
  |