DIY DSP 项目的想法

信息处理 matlab Python 嵌入式系统 项目理念
2022-02-16 00:52:19

我拥有 DSP 硕士学位,但我在那里学到的只是理论。我想在家里完成一些项目,我可以将这些项目添加到我的简历中,以展示我的技能并获得行业工作。但是谷歌搜索后我没有找到任何东西。那么这里有人可以指导我该怎么做吗?

PS:

  1. 我对图像处理不感兴趣。

  2. 我想在 Matlab/Octave 或 Python 上启动项目,然后在 Embedded C 中为 DSP 硬件编写相同的代码。

2个回答

您可以做无限数量的项目......扩展取决于您想要(或您可以)将您的家变成实验室多少?

音频项目的范围从软件合成器、多媒体播放器到音频压缩算法、基于麦克风阵列的高级成像,以及各种声学魔术。但是,对于这些项目,除了 DSP 之外,您还需要大量的电子和声学技能。

与纯软件项目相比,硬件项目还将花费额外的金钱和混乱……

此外,即使您已获得硕士学位,仍然需要提高的 DSP 技能,并确保您不会错过任何重要的基础主题。最好的方法是将概念编码在诸如离散时间信号处理之类的书中。在那里实现(或验证)各种算法和定理。注意卷积、LCDE 递归、滤波器设计、采样、DFT 和 FFT 主题。编写您自己的函数、模拟和库。做出理论预测,并尝试通过模拟来验证它们……在这个阶段使用 Matlab 或 Octave。

你做过一些自适应过滤吗?为什么不在实际应用中实现它们呢?尝试通道均衡、回声消除、降噪、系统识别、线路增强、预测、压缩等。尝试 LMS、RLS 或它们的变体。

在底层软件方面,尝试提高你的 C/C++ 和汇编程序编程调试技能。选择平台,例如 Intel/AMD 或基于 ARM 的 CPU。我敢打赌,您将从学习如何对这些 CPU 的 MMX、SSE、AVX SIMD 向量扩展进行编程中受益。并大致了解编译器、交换机、库、开源开发、各种技巧和硬件属性以及 PC 的限制。

也学习一些操作系统编程。Windows、Linux、OS,以及最近但更有吸引力的移动 Android。了解如何为这些平台使用基本编译器及其工作机制。

从最简单、最干净的硬件开始:Arduino了解如何在其 IDE 中对其进行编码。这是有史以来最用户友好的 MCU。虽然,它是一个有限的,但你仍然可以用它做很多事情。它有一个ADC-DAC;您可能希望尝试对一些来源进行采样并对其进行处理。最好是带一个简单的麦克风防护罩(Arduino的附件板)。录制音频,对其进行处理,并根据它输出一些信号。您将学到很多关于 USB 连接、串行 (RS-232) 通信、SPI、I2C 通信协议、电机驱动示例、涉及 9DOF 加速电机-陀螺-磁传感器、距离测量传感器、光测量传感器、温度、压力传感器、气体传感器...您将与它们有很多关系...您还可以学习实用的卡尔曼滤波来完善您的测量结果。

您应该使用一些基本的外部硬件来支持您的 Arduino,例如缓冲器、过滤器和执行器。对于实际的嵌入式 DSP,学习将它们连接/连接到 mcu 是很好的。

使用Raspberry PI扩展您的硬件,这是最友好的电交互 PC 平台,其中包含基于 ARM 的多核 CPU 和基于 Linux 的操作系统。

将一些简单的可编程 SDR-RTL(软件定义无线电)套件添加到您的 Raspberry Pi 中,将其变成射频接收器和数据处理机器。您可以接收来自无线电台、卫星、AirPlanes、无线电话或其范围内的任何射频源的信号!您可以编写 C 代码来实现您的模拟/数字解码算法。这就产生了一组简单的高级 DSP 项目。

您还可以使用更多来自 ST、NXP、Texas、ADI 或任何类似供应商的工业 MCU。他们正在生产兼容 ARM 的内核。因此,一旦您学习了 ARM 架构,您就会对所有这些平台充满信心。

一件好事是,Arduino IDE 还支持基于 STM32 的开发卡,就像它支持原生 Arduino UNO 卡一样。因此,您可以从 Arduino IDE 过渡到 ST 编程,并在以后更专业地进行 ST 原生开发。

您可以进一步添加基于 ADI BlackFin、SHArC 或 Texas TMS 的 DSP 处理器。

此外,过去十年在使用 GPU 计算的大数据处理方面取得了长足的进步;所以你将受益于学习一些使用 Nvidia CUDA 或 openCL 的并行编程......

所有这些都需要一些时间和耐心。

回答我的问题是因为我找到了一个很好的资源来开始在 DSP 中编程并帮助与我处于相同情况的人:

http://greenteapress.com/thinkdsp/thinkdsp.pdf

作者使用基于编程的方法来教授DSP。