Skip to content

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 TMS320DM6437 的音频信号滤波实时实现

华东交通大学 · 信息与软件工程学院 · 通信工程专业 DSP 课程设计(2026.6.22 – 2026.6.29)

Real-time audio FIR filtering on TI TMS320DM6437 with TLV320AIC33 codec.

本项目基于 TI TMS320DM6437 定点 DSP 与 TLV320AIC33 音频编解码芯片,在 8 kHz 采样率下实现了音频信号的实时采集 → FIR 数字滤波 → 回放闭环系统,支持低通 / 高通 / 旁路三种工作模式,并通过 CCS 内存抓取与 MATLAB/Python 频谱重建完成了实板闭环验证。

License: MIT


目录


项目简介

对包含低频鼓点(500 Hz 以下)与高频哨声(1500–2500 Hz)的混合语音信号,本项目:

  1. 使用 MATLAB 对实际音频做 FFT 频谱分析,定位频段分布;
  2. 采用**窗函数法(Hamming 窗)**设计 63 阶低通与高通 FIR 数字滤波器(Fs = 8000 Hz,截止频率 Fc = 1000 Hz);
  3. 将浮点系数量化为 Q15 定点格式并导出为 C 头文件;
  4. 在 DM6437 上配置 McBSP(多通道缓冲串口)与 TLV320AIC33I²C 控制接口,实现音频实时采集与回放;
  5. 对 FIR 卷积算法做编译器级与架构级优化,满足 8 kHz 采样率的硬实时要求(每样本 125 μs,双声道共 126 次乘加);
  6. 实板验证:低通模式抑制高频哨声、保留低频鼓点;高通模式抑制低频鼓点、保留哨声。

主要特性

  • 三种滤波模式:低通 / 高通 / 旁路(FIR_ACTIVE_MODE 编译期选择,filter_mode 变量支持 CCS 调试时热切换)
  • 立体声独立 FIR:左右声道各维护 63 点环形延迟线
  • CCS 内存抓取capture_pack(1024 帧 × inL/outL/inR/outR)可由 CCS Save Memory 导出
  • 闭环验证脚本:MATLAB(verify_capture_pack.m / verify_all_modes.m)与 Python(plot_verification.py)双实现,重建时域波形与 FFT 频谱
  • 完整课设文档:任务书、课程设计报告、硬件调试指南、答辩指南(Markdown / PDF / Word 多格式)

系统方案

PC 音频(口哨音乐.mp3)
        │
        ▼
     LineIn ──▶ TLV320AIC33 (ADC, 8 kHz) ──▶ McBSP
                                                  │
                                                  ▼
                                   DM6437 实时 FIR 滤波
                                                  │
                                                  ▼
     LineOut ◀── TLV320AIC33 (DAC) ◀── McBSP ◀────┘
        │
        ▼
  耳机/音箱  +  CCS Save Memory 导出 capture_pack
                              │
                              ▼
            MATLAB / Python 重建时域波形 + FFT 频谱对比

仓库结构

DSP_class-design_2026/
├── ccs_export/                        # ★ 核心 CCS 导出包(实板部署用)
│   └── AD_FIR_DA_package/
│       ├── AD_FIR_DA/                 # CCS 工程:main.c / fir_filter.c/.h / fir_coeffs_*.h / dm6437.cmd
│       ├── MATLAB/                    # verify_capture_pack.m / verify_all_modes.m / temp_verify.m
│       ├── common/                    # 板级支持包(include / lib / ccxml / gel)
│       ├── README.md                  # 包内使用说明(导入、构建、验证)
│       └── LAB_VERIFICATION.md        # 实板验证记录模板
│   └── AD_FIR_DA_package.zip          # 打包压缩档,可直接拷贝到实验室 PC
├── fir_design/                        # MATLAB 滤波器设计脚本 + 仿真/对比图(fig1~fig10)
├── 实验4/                             # 实验4「音频数据的采集和回放」CCS 工程与文档
├── 课设材料/                          # 课程设计全部文档
│   ├── 课设报告_基于TMS320DM6437的音频滤波实时实现.{md,docx,pdf}
│   ├── 25.2dsp课设任务书(17周).{md,docx,pdf}
│   ├── DM6437_实板硬件调试与验证指南.{md,pdf}
│   ├── 答辩指南_基于TMS320DM6437音频滤波.{md,pdf}
│   ├── 报告草稿-MATLAB部分.md
│   ├── DSP课设参考资料/               # AIC33 / McBSP 数据手册、课程 PPT、MATLAB 参考
│   └── common/                        # 板级支持包源码(与 ccs_export/common 对应)
├── 课设实验验证/                      # 实板抓取数据与验证脚本
│   ├── {allpass,lowpass,hignpass}_pack.dat   # CCS 导出的三种模式抓取数据
│   ├── dm6437_{allpass,lowpass,highpass}_compare.png
│   └── plot_verification.py           # Python 版闭环验证绘图脚本
├── README.md
├── LICENSE                            # MIT
└── .gitignore

ccs_export/AD_FIR_DA_package/AD_FIR_DA/ 是本项目的权威源码位置;根目录不再保留源码副本,避免多份拷贝失同步。

硬件与软件要求

类别 要求
硬件 ICETEK-DM6437-A 实验箱 / 开发板,ICETEK-XDS100v2 仿真器,+5V 电源,耳机/音箱,音频转接线(PC ↔ LineIn、LineOut ↔ 耳机)
软件 Code Composer Studio v5(TI C6000 编译器),Windows 7/10
验证 MATLAB(含 Signal Processing Toolbox),或 Python 3 + numpy / scipy / matplotlib

快速开始

1. 导入 CCS 工程

  1. ccs_export/AD_FIR_DA_package 整个文件夹拷贝到实验室 PC(例如 C:\DSP_AD_FIR_DA\AD_FIR_DA_package);
  2. 打开 CCS,Project → Import Existing CCS Eclipse Project,选择 AD_FIR_DA_package
  3. 导入工程 AD_FIR_DA,选择 Debug 配置。

2. 选择滤波模式

编辑 AD_FIR_DA/fir_filter.h 中的宏(默认旁路,便于先验证 AD-DA 通路有声):

#define FIR_ACTIVE_MODE FIR_MODE_BYPASS     /* 旁路:输出 = 输入 */
#define FIR_ACTIVE_MODE FIR_MODE_LOWPASS    /* 低通:抑制高频哨声,保留低频鼓点 */
#define FIR_ACTIVE_MODE FIR_MODE_HIGHPASS   /* 高通:抑制低频鼓点,保留哨声 */

3. 构建与运行

  1. 右键工程 → Clean ProjectBuild Project,产物为 Debug/ad_fir_da.out(依赖 ..\common\include..\common\lib\evmdm6437bsl.lib);
  2. 连接仿真器与开发板,PC 音频输出接板载 LineIn,耳机接 LineOut;
  3. Debug 配置下连接目标、加载 ad_fir_da.out,循环播放 AD_FIR_DA/口哨音乐.mp3,听音验证滤波效果。

4. 数据抓取与闭环验证(可选)

  1. CCS Tools → Save Memory:格式 16-Bit Hex - TI Style,起始地址 capture_pack,长度 4096 字,导出如 C:\DSP_capture\lowpass_pack.dat
  2. MATLAB:cd ccs_export/AD_FIR_DA_package/MATLAB 后运行 verify_capture_pack(设置 modeNameallpass / lowpass / highpass);
  3. 或 Python:运行 课设实验验证/plot_verification.py,对三种模式批量生成波形与频谱对比图。

性能优化

针对 8 kHz 采样的硬实时约束(每采样周期 125 μs),DSP 端 FIR 卷积做了以下优化:

  • 消除取模:循环拆分(peeling)去掉内循环中的 % 取模运算;
  • 32 位累加器:由 Int64 改为 Int32 定点累加,消除慢速 __mpyll 库调用;
  • 单周期乘加:系数与数据均为 16 位 Q15,Int16 × Int16 → Int32 乘加可流水执行,双声道 126 次乘加远小于 125 μs 预算。

验证结果

实板测试(ICETEK-DM6437-A):

  • 低通模式:高频口哨声被极大衰减,低频鼓点完好保留;
  • 高通模式:低频鼓点被有效抑制,尖锐哨声清晰保留;
  • 闭环一致性:CCS 导出的 capture_pack 经 MATLAB 重建的 FFT 频谱与 MATLAB 仿真结果高度一致(波形与频谱对比图见 fir_design/课设实验验证/)。

三种模式抓取数据与对比图位于 课设实验验证/,复现脚本为 plot_verification.py

课程设计文档

文档 说明
课设材料/课设报告_基于TMS320DM6437的音频滤波实时实现.{md,docx,pdf} 完整课程设计报告(摘要、绪论、总体方案、FIR 设计、I²C/AIC33、McBSP、实时实现与优化、验证与总结)
课设材料/25.2dsp课设任务书(17周).md 课程设计任务书
课设材料/DM6437_实板硬件调试与验证指南.{md,pdf} 实板调试步骤与常见问题排查
课设材料/答辩指南_基于TMS320DM6437音频滤波.{md,pdf} 答辩要点梳理
实验4/实验4 音频数据的采集和回放实验-实验版.{md,docx,pdf} 实验4 基础实验:AIC33 + McBSP 音频采集回放

许可证

本项目以 MIT License 开源,欢迎学习与二次开发。


本仓库为课程设计学习项目,实板验证依赖实验室 CCS/DM6437 环境;MATLAB/Python 仿真验证可在任意 PC 上复现。

About

基于 TMS320DM6437 + TLV320AIC33 的实时音频 FIR 滤波课程设计(8kHz 实时采集-滤波-回放,低通/高通/旁路)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages