当前位置:   article > 正文

AD9767的DDS任意信号发生器设计记录_ad9787的dataclk

ad9787的dataclk

功能描述:

一、以太网接口作为与上位机的数据交互接口

后续做

二、基于AD9767芯片两路固定波形及任意波输出

1、每路输出的固定波形允许选择正弦波、三角波、方波

      输出波形频率调节范围1-1MHz

      输出波形幅值调节范围0 - 10V

      相位可调

      固定波形扫频输出,允许输入扫频起始频率和截至频率

2、任意波形输出,后续做

功能实现

一、以太网

二、基于AD9767芯片两路固定波形及任意波输出

1、DDS顶层模块,输入所需幅值、频率、相位

module top_dds_1
(
     //differential system clocks
     input  wire          sys_clk               ,     // Differential input clock 50Mhz
     input  wire          sys_rst_n             ,
     //外部输入所需相位          
     input  wire  [11:0]  p_word                ,
     //外部输入所需频率     
     input  wire  [31:0]  freq_data             ,
     input  wire          freq_data_valid       ,
     //外部输入所需幅值     
     input  wire  [13:0]  amplitude_data        ,
     input  wire          amplitude_data_vliad  ,
     //AD9767控制字
     output wire          da1_clk                ,       //AD9767 CH1 clock
     output wire          da1_wrt                ,       //AD9767 CH1 enable
     output wire  [13:0]  da1_data               ,      //AD9767 CH1 data output
     output wire          da2_clk                ,       //AD9767 CH2 clock
     output wire          da2_wrt                ,          //AD9767 CH2 enable
     output wire  [13:0]  da2_data                       //AD9767 CH2 data output
);

 例化时钟模块,使用PLL IP核,输入50M系统时钟,输出50M和125M时钟,这里需要注意的是,系统时钟不能同时作为子模块的输入和PLL时钟IP的输入,所以需要再输出一路50M时钟供各模块使用。

AD9767_CLK AD9767_CLK_inst(
  .clk_out1(clk_125M),     // output 125M
  .clk_out2(clk_50M),     // output 50M
  // Status and control signals
  .reset(1'b0), // input reset
  .locked(),       // output locked
  .clk_in1(sys_clk) // input 50M
  ); 

 例化频率控制字模块,输入所需频率,输出频率控制字,原理是利用公式和除法器计算出存储器地址步进来控制频率

F_word_set inst_F_word_set(
  .clk             (clk_50M),
  .rst_n           (sys_rst_n),
  .freq_data       (freq_data),
  .freq_data_valid (freq_data_valid),
  .f_word          (f_word),
  .f_word_valid    (f_word_valid)
);

 例化幅值控制字,输入所需幅值,输出幅值控制字,原理是利用除法器按比例压缩输出的数据

amplitude_set amplitude_set_inst (
    .clk                      (clk_50M),
    .rst_n                    (sys_rst_n),
    .amplitude_data           (amplitude_data), //输入为14位的mV电压值
    .amplitude_data_vliad     (amplitude_adc_data_valid),
    .amplitude_adc_data       (amplitude_adc_data), 
    .amplitude_adc_data_valid (amplitude_adc_data_valid)
  );

 例化DDS模块,输入频率控制字,相位控制字,整合出需要的波形

DDS DDS_inst(
    .DDS_clk                    (clk_125M),
    .sys_rst_n                  (sys_rst_n),
    .f_word                     (f_word[31:0]),
    .p_word                     ('d0),
    .amplitude_adc_data         (amplitude_adc_data),
    .amplitude_adc_data_valid   (amplitude_adc_data_valid),
    .da1_clk                    (da1_clk),
    .da1_wrt                    (da1_wrt),
    .da1_data                   (da1_data),
    .da2_clk                    (da2_clk),
    .da2_wrt                    (da2_wrt),
    .da2_data                   (da2_data)
  );

 Q1:增加幅值控制字后出现问题

 初步判断是定点数量化位宽不够

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/974337
推荐阅读
相关标签
  

闽ICP备14008679号