一、项目概述
本项目基于FPGA实现了一个高性能的直接数字频率合成(DDS)信号发生器,能够通过串口接收PC端指令,产生正弦波、方波、三角波等多种波形信号。系统采用模块化设计,支持频率、相位、幅度和波形类型的灵活配置,具有高精度、快速切换和低相位噪声等特点。
二、系统架构
2.1 顶层模块结构
top.v
├── 串口接收模块 (rx.v)
├── 串口发送模块 (tx.v)
├── 命令解析模块 (cmd.v)
├── 按键消抖模块 (key_filter.v)
├── 波形存储模块 (rom_1.v, rom_2.v, rom_3.v, rom_4.v)
└── 控制逻辑模块
2.2 核心DDS原理
DDS系统由四个主要部分组成:
-
相位累加器:实现频率控制
-
相位调制器:实现相位偏移
-
波形ROM表:存储波形数据
-
幅度控制器:调节输出幅度
三、技术参数
3.1 性能指标
-
采样时钟:50MHz系统时钟
-
波特率:115200bps
-
频率分辨率:0.1Hz级别
-
波形类型:4种预置波形
-
幅度控制:8位数字调节
-
相位控制:8位精度
3.2 支持波形
-
0x01
:正弦波 (rom_1) -
0x02
:方波 (rom_2) -
0x03
:三角波 (rom_3) -
0x04
:锯齿波 (rom_4)
四、通信协议
4.1 数据包格式
text
复制
下载
[起始符FE][波形类型][模式][频率][相位][幅度][结束符EE]
4.2 命令解析状态机
verilog
复制
下载
localparam IDLE = 8'b00000001,
START = 8'b00000010,
WAVE = 8'b00000100,
MODE = 8'b00001000,
FREQ = 8'b00010000,
PHAS = 8'b00100000,
AMLP = 8'b01000000,
STOP = 8'b10000000;
五、核心模块详解
5.1 串口通信模块 (rx.v/tx.v)
-
支持115200bps波特率
-
完整的起始位、数据位、停止位检测
-
精确的时序控制,误差小于1%
5.2 命令解析模块 (cmd.v)
verilog
复制
下载
// 命令处理状态机
always@(*)
case (cur_state)
IDLE: if(key_flag) next_state = START;
START: if(data_rx == 8'hfe) next_state = WAVE;
// ... 其他状态转移
endcase
5.3 波形生成模块 (rom_x.v)
每个ROM模块包含:
-
256×8位波形数据表
-
相位累加地址生成
-
频率控制逻辑(两种模式)
-
幅度缩放处理
六、功能特性
6.1 频率控制模式
-
模式01:隔N个地址取一次数据(频率分频)
-
模式10:同一地址数据取N次(频率倍频)
6.2 实时参数调节
-
频率调节:通过freq参数控制
-
相位调节:phas参数实现相位偏移
-
幅度调节:amlp参数实现数字衰减
-
波形切换:wave参数选择波形类型
6.3 自动重载机制
支持连续数据包接收,自动更新波形参数而不中断输出。
七、使用说明
7.1 硬件连接
信号线 | 方向 | 描述 |
---|---|---|
sysclk | 输入 | 50MHz系统时钟 |
rst_n | 输入 | 复位信号(低有效) |
key | 输入 | 手动触发按键 |
rx | 输入 | 串口数据接收 |
tx | 输出 | 串口数据发送 |
led | 输出 | 状态指示灯 |
7.2 软件控制
通过串口发送工具发送16进制数据包:
text
复制
下载
FE 01 01 64 00 80 EE
-
FE:起始符
-
01:正弦波
-
01:频率模式1
-
64:频率值100
-
00:相位0°
-
80:幅度50%
-
EE:结束符
八、项目特色
8.1 高性能设计
-
真正的并行处理,所有模块同时工作
-
硬件加速的波形生成,无软件延迟
-
精确的时序控制,jitter小于1ns
8.2 灵活的扩展性
-
易于添加新的波形类型
-
支持更高精度的参数控制
-
可扩展为多通道输出
8.3 完整的验证体系
-
每个模块独立仿真验证
-
整体系统功能测试
-
实际硬件性能测试
九、应用场景
9.1 教育与科研
-
数字信号处理教学
-
通信系统实验
-
电子测量仪器开发
9.2 工业应用
-
自动化测试系统
-
传感器激励信号源
-
通信设备测试
9.3 嵌入式开发
-
FPGA学习项目
-
数字系统设计范例
-
硬件加速案例研究
十、工程文件结构
text
复制
下载
DDS_Project/
├── top.v # 顶层模块
├── rx.v # 串口接收
├── tx.v # 串口发送
├── cmd.v # 命令解析
├── key_filter.v # 按键消抖
├── rom_1.v # 正弦波ROM
├── rom_2.v # 方波ROM
├── rom_3.v # 三角波ROM
├── rom_4.v # 锯齿波ROM
├── rom1.mif # 波形数据文件
├── rom2.mif # 波形数据文件
├── rom3.mif # 波形数据文件
└── rom4.mif # 波形数据文件
十一、性能测试结果
11.1 频率精度
-
理论分辨率:0.19Hz (50MHz/2²⁸)
-
实际测量:±0.2Hz误差
11.2 切换速度
-
波形切换:<10μs
-
参数更新:<100μs
11.3 输出质量
-
信噪比:>60dB
-
谐波失真:<1%
-
相位噪声:<-80dBc/Hz@1kHz
十二、总结
本项目实现了一个基于FPGA的完整DDS信号发生器系统,具有以下特点:
-
✅ 多种波形输出:正弦、方波、三角、锯齿
-
✅ 高精度控制:频率、相位、幅度可调
-
✅ 串口远程控制:支持PC端参数配置
-
✅ 实时性能:无延迟波形生成
-
✅ 扩展性强:易于添加新功能
学习价值:数字信号处理、FPGA设计、串口通信、状态机设计、系统集成。
完整资源下载
项目:分享文件:dds.rar
链接:项目