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_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
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » DDS 波形发生器 FPGA 设计 VHDL Quartus Verilog