DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog

名称:DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog

软件:Quartus

语言:Verilog

功能介绍

本设计实现一个基于 DDS 思想的 FPGA 波形发生器,顶层模块为 DDS_top。系统通过相位累加、波形查表和输出幅度处理,实现可控数字波形输出,适合用于学习 DDS 基本结构、FPGA 波形产生方法以及 DAC 前端数字接口设计。 设计支持三种波形输出选择:正弦波、方波和三角波。wave_select 为 01 时输出正弦波,10 时输出方波,11 时输出三角波,便于在同一工程中对比不同波形 ROM 和选择逻辑的实现方式。 接口提供初始相位、频率控制字和幅度控制字输入。init_phase 用于设置相位偏移,frequency 用于控制输出波形频率,数值越大输出频率越高;amplitude 用于控制输出幅值,数值越大输出幅度越大。最终数字波形通过 12 位 DA_out 输出,可作为 DAC 数字输入参考。

运行环境

开发软件:Quartus。 设计语言:VHDL。 工程顶层:DDS_top。 仿真相关:包含 test 测试文件及 ModelSim 仿真目录,可用于查看 DDS 波形选择、频率控制、幅度控制等逻辑效果。

设计思路

DDS 的核心思路是通过数字相位控制实现周期波形输出。系统根据输入频率控制字改变相位推进速度,相位变化越快,查表地址变化越快,输出波形频率也随之提高。初始相位输入用于给相位通路增加偏移量,从而改变输出波形的起始相位。 波形数据采用 ROM 查表方式实现,工程中包含正弦波 ROM、方波 ROM 和三角波 ROM,并配有对应的 mif 初始化数据。不同波形使用独立 ROM 存储采样点,顶层根据 wave_select 对三路波形数据进行选择,使同一 DDS 框架能够输出多种常用波形。 幅度控制部分对查表输出进行幅值调节,amplitude 控制字越大,最终输出幅度越大。该结构将频率、相位、波形类型和幅度控制拆分为相对独立的功能模块,便于阅读、仿真和后续扩展。

模块结构

主要模块包括: DDS_top:工程顶层,连接时钟、初始相位、波形选择、频率控制、幅度控制以及 DA_out 输出。 phase:相位相关控制模块,用于 DDS 相位通路处理。 Frequency_ctrl:频率控制模块,用于根据频率控制字影响波形输出频率。 wave_sel:波形选择模块,根据 wave_select 选择正弦波、方波或三角波输出。 sin_ROM、fangbo_ROM、sanjiao_ROM:分别为正弦波、方波、三角波查表 ROM。 mult:幅度相关乘法模块,用于输出幅值调节。 test:Testbench 仿真文件,用于工程功能验证。

演示视频

包含仿真演示视频,可用于查看 DDS 波形发生器在仿真环境中的运行效果,重点观察波形选择、频率变化和幅度控制对输出结果的影响。

仿真图/仿真说明/设计文档图片

设计文档内容覆盖工程文件、程序文件、程序编译、RTL 图、Testbench 和仿真图等部分。配套图片可用于了解 Quartus 工程结构、编译结果、RTL 结构以及仿真波形展示。

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image9.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image8.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image7.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image6.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image5.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image4.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image1.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image2.png

DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog 设计文档图片 image3.png

部分代码

以下展示顶层模块 DDS_top 的部分代码,完整源码请下载压缩包查看。

ENTITY DDS_top IS
   PORT (
      clk_in      : IN STD_LOGIC;--时钟
		init_phase   : IN STD_LOGIC_VECTOR(12 DOWNTO 0);--相位偏移输入
      wave_select  : IN STD_LOGIC_VECTOR(1 DOWNTO 0);--01输出sin,10输出方波,11输出三角波
      frequency    : IN STD_LOGIC_VECTOR(9 DOWNTO 0);--频率控制字,控制输出波形频率,值越大,频率越大
      amplitude    : IN STD_LOGIC_VECTOR(7 DOWNTO 0);--幅值控制字,值越大,幅值越大
		DA_out    : OUT STD_LOGIC_VECTOR(11 DOWNTO 0)--DA输出
   );
END DDS_top;

代码文件(付费下载)

📥 付费后此处显示完整工程压缩包下载链接。
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog

注册为本站会员,充值100得150,详情咨询客服

目前为止共有 *** 位优秀的会员加入! 立刻加入会员