基于vivado+Verilog FPGA开发 — 基于AD9767高速DAC的DDS信号发生器

本文详细介绍了Verilog代码编写规范,涉及dds_ad9767模块的实现,包括双通道DDS系统与AD9767配合,以及FPGA开发流程中的功能定义、设计输入、DDS模块、按键滤波器和测试平台的使用。还涵盖了综合优化、布局布线和时序仿真的步骤。
摘要由CSDN通过智能技术生成

代码规范:Verilog 代码规范_verilog代码编写规范-CSDN博客

开发流程:FPGA基础知识----第二章 FPGA 开发流程_fpga 一个项目的整个流程-CSDN博客 

源码下载:GitHub - Redamancy785/FPGA-Learning-Record: 项目博客:https://blog.csdn.net/weixin_51460407

 一、功能定义

二、设计输入 

1、主模块

这段代码是一个Verilog模块,名为dds_ad9767,它实现了一个双通道的直接数字频率合成器(DDS)系统。DDS是一种用于生成模拟波形(如正弦波、方波等)的电子技术,广泛应用于信号发生器、通信系统等领域。这个模块特别为与AD9767这类数字信号处理器(DSP)芯片协同工作而设计。

/*
    Tips:
    1、可分别于A、B通道同时输出两路波形 
    2、每次按下 f_switch_button_a_i , 通道A输出频率在预设的四种情况切换;通道B同理。
    3、每次按下 p_switch_button_a_i , 通道A输出相位在预设的两种情况切换;通道B同理。
*/
module dds_ad9767(
    reset_n_i,
    clk_i,
    mode_switch_button_a_i,
    f_switch_button_a_i,
    p_switch_button_a_i,
    mode_switch_button_b_i,
    f_switch_button_b_i,
    p_switch_button_b_i,
    data_a_o,
    data_b_o
    );
    
    input  reset_n_i,clk_i;
    input [1:0]mode_switch_button_a_i,mode_switch_button_b_i;
    input f_switch_button_a_i,p_switch_button_a_i,f_switch_button_b_i,p_switch_button_b_i;
    output  [13:0] data_a_o;
    output  [13:0] data_b_o;
    
    // A通道dds例化
    reg [31:0] u_f_word_a;
    reg [11:0] u_p_word_a;

    dds U_dds_a( 
        .reset_n_i(reset_n_i),
        .clk_i(clk_i),
        .f_word_i(u_f_word_a),
        .p_word_i(u_p_word_a),
        .mode_i(mode_switch_button_a_i),
        .data_o(data_a_o)
    );
    
    //  A通道频率切换
    wire f_switch_button_a_press_key_flag;    
    key_filter U_f_switch_button_a_i(
        .clk_i(clk_i),
        .reset_n_i(reset_n_i),
        .key_i(f_switch_button_a_i),
        .press_key_flag_o(f_switch_button_a_press_key_flag)
    );
    
    reg [1:0] f_switch_cnt_a;
    
    always@(posedge clk_i or negedge reset_n_i)
    if(!reset_n_i)
        f_switch_cnt_a <= 0;
    else if(f_switch_button_a_press_key_flag == 1)
        f_switch_cnt_a <= f_switch_cnt_a + 1;
    
    always@(*)
    case(f_switch_cnt_a)
        0 : u_f_word_a <= 65536;
        1 : u_f_word_a <= 65536*2;
        2 : u_f_word_a <= 65536*3;
        3 : u_f_word_a <= 65536*4;
    endca
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值