我喜欢音乐,也喜欢电子产品。多年来,我一直在制造音乐电子设备,主要是为我的电吉他演奏服务。在构建和修改了几个电子管放大器和效果踏板之后,我决定涉足音频合成领域。我经常梦想创建自己的 Eurorack 合成器,一次一个模块,但对于我的第一个合成器项目,我决定从一个独立的键盘开始。我的成品——一个改装过的玩具键盘——如图 1 所示。
在这个项目中,我移除了现有的电子设备,并用一个以Arduino Nano为核心的基于数控振荡器 (DCO) 的音频合成器取而代之。虽然我使用的是 Arduino Nano,但也可以使用Arduino Uno 。让我们深入探讨如何制作基于 DCO 的合成器。然而,在走得太远之前,让我们先谈谈在合成器中使用振荡器。
任何合成器的关键要素是其振荡器电路。模拟合成器通常有两个或多个独立可控的振荡器。但是,任何进入过模拟压控振荡器 (VCO)原理图的互联网兔子洞的人都知道它们通常很复杂且杂乱无章。一些混乱来自可以优雅地处理的功能,例如多个控制电压输入。然而,即使最简单的振荡器电路在原理图中被隔离,剩下的部分仍然很复杂,因为热反馈技巧使振荡器在其组件预热时保持调谐。
当我考虑创建自己的合成器时,VCO 电路的复杂性和混乱一直是我的绊脚石,即使我喜欢模拟合成器,我也无法克服它凌乱的电子软肋。当我欣赏Roland Juno 系列合成器时,这一切都改变了。
Roland 的 Juno-6于 1982 年上市,作为当时其他和弦合成器的更实惠的替代品。它也是第一个使用 DCO 代替传统 VCO 的合成器。与替代品相比,这显着提高了仪器的调谐稳定性,因为 DCO 使用数字电路来控制振荡器模拟信号的频率。考虑到这一点,使用 DCO 而不是 VCO 当然需要权衡取舍。许多人喜欢两个略微失谐的 VCO 齐声演奏的“温暖”声音,这是很难用基于 DCO 的合成器模拟的。然而,调制效果可以应用于 DCO 的干输出信号,以产生丰富、优美的声音。
总的来说,Arduino Uno 和 Nano 开发板的普遍性和低成本,再加上这些数字平台预装了 16 MHz晶体振荡器,使得创建便宜的 DCO 变得异常容易。
查看任何现代微控制器的数据表,您会在其外围设备中找到定时器模块。定时器模块允许嵌入式设计人员在独立于CPU(中央处理器)的嵌入式系统后台设置运行计数器。此外,定时器模块可以在多种情况下中断 CPU,例如当它们溢出计数寄存器或达到特定计数时。嵌入式设计人员可以配置中断条件以满足其特定应用的需要。
对于这个项目, ATMega328P的定时器模块——Arduino Nano 和 Uno 的大脑——充当合成器的 DCO。通过配置定时器模块的时钟源和最大计数值,可以实现音频触发定时器模块中断。DCO 输出是通过在这些周期性中断的中断服务例程 (ISR) 期间操纵微控制器的 GPIO 引脚来实现的。
在接下来的部分中,我将讨论这个项目背后的硬件和软件设计,然后展示这个自制合成器的一些音频片段。
在深入了解该项目中涉及的不同硬件以及它们如何协同工作之前,表 1 显示了 BOM(物料清单)。
数量 | 成分 |
---|---|
1个 | Arduino 纳米 v3.x |
4个 | 470 nF电容 |
1个 | 2.1 毫米筒式千斤顶 |
1个 | 1/4" 单声道开关插孔 |
2个 | 4.7k电阻 |
3个 | 47k电阻 |
7 | 100k电阻 |
1个 | 100k电阻 |
2个 | 100k电位器 |
1个 | 1M电位器 |
23 | SPDT微型瞬时开关 |
1个 | 开关式DC-DC 转换器(5 V 输出) |
1个 | Microchip MCP23017 I/O 扩展器 |
1个 | LF411 运算放大器(运放) |
接下来,让我们看一下图 2 的系统图,它显示了这个合成器的各个部分是如何组合在一起的。
键盘部分由一组 23 个 SPDT 开关组成,每个开关一个。其中 16 个键被路由到 MCP23017 I/O 扩展器,其余 7 个键直接路由到 Arduino Nano 上的 GPIO 输入。MCP23017 然后通过I2C连接到 Arduino Nano 。
Arduino Nano 从这里开始处理来自键盘的输入,并根据这些按键在 D11、D12 和 D10 上生成三个独立的振荡器输出。Arduino Nano 上这些数字引脚的输出被路由到加法放大器电路,其原理图如图 3 所示。
求和放大器包含三个电位器。它们独立控制振荡器 2 和 3 的音量以及乐器的主音量。放大器电路的输出直接路由到 ¼” 单声道音频插孔,可以轻松直接插入吉他放大器。
为了给这个乐器供电,我使用了一个标准的 2.1 毫米 9 V DC 吉他踏板桶形插孔。此外,来自该插孔的 +9 V 被路由到小型 DC-DC 开关电源转换器以生成 5 V 电源连接。+5 V 电源为 MCP23017 供电。Arduino 由 +9 V 电源通过其 Vin 引脚供电。运算放大器的 V+ 和 V- 由桶形插孔的 +9 V 和接地连接提供,5 V 电源用作运算放大器的浮动接地连接。
图 4 显示了该系统的所有部分如何连接的示意图。
该项目软件的主要任务是解释来自键盘按钮的输入并相应地操作定时器模块寄存器(有关代码,请参见此处的 Arduino 草图 PDF)。在草图中的 setup() 函数之前,声明了几个全局变量,包括两个大型二维数组的定时器模块寄存器值对应于音符。setup() 函数的过程遵循图 5 的流程图,其中仅涉及:
设置 GPIO 输入和输出
启动 I2C 通信
初始化三个定时器模块
启用中断
选择定时器 B 模块的时钟源作为定时器 A 的时钟
启用全局中断
图 6 显示了表示 Arduino 草图的 loop() 函数的流程图。
循环函数执行三个主要任务:
检测键盘上按下的键
根据特定键的音符设置定时器模块参数
设置门变量以允许将振荡器信号转发到它们各自的 GPIO 引脚
循环函数一次评估连接到键盘的每个 I/O 端口,直到检测到按下的按钮。端口的评估顺序是键盘上从最低音符到最高音符,这意味着较低的音符实际上具有较高的优先级。当我考虑使用 GPIO 和 I2C 中断来处理键盘按钮按下时,我最终使用了连续轮询方法,并且我没有注意到任何不利的性能结果。
最后,图 7 表示 ATMega328P 中三个定时器模块中每一个的中断服务例程。
如果设置了门变量,这些 ISR 中的每一个都会切换其输出引脚值。这种切换是为每个振荡器生成音频输出的原因。
您可以在下面找到该项目的两个音频样本。请务必单击播放按钮图像进行播放 - 请注意,音频将在单独的窗口中打开并播放。
正如您从第一个音频样本中听到的那样,该合成器产生了一种漂亮的斯巴达式低保真声音。该样本首先演示了根音振荡器,然后是根音和八度向下振荡器,最后是根音、向下八度和 7 个半音向上振荡器。
第二个示例通过一些延迟和相位效果展示了合成器,并覆盖了多个轨道。所有旋律声音都来自 Arduino 合成器,但鼓声来自 Roland 808 风格的鼓机 vst 插件。
总而言之,我对这个项目的结果感到非常兴奋,但我确实认为这个基于 Arduino 的合成器可以实现许多潜在的改进。例如,我想为这个 Arduino 合成器实现一个 USB midi 接口。我还想使用这些方法创建一个可扩展的复音合成器。然而,就目前而言,这个项目的玩具屋已经变成了一种有趣、适合舞台的低保真乐器,具有非常坚韧的低音。
从基础到高级的ADC讲座,将涵盖高速ADC设计的原理、传统架构和最先进的设计。第一部分首先回顾了ADC的基本知识,包括采样、开关电容和量化理论。接下来,介绍了经典ADC架构的基础和设计实例,如闪存、SAR和流水线ADC。然后,本教程将对混合型ADC架构进行总体概述,这就结束了第一部分。在第二部分,首先描述了ADC的度量。然后,介绍混合或非混合架构的各种先进设计。该教程最后将以数字辅助解决技术结束。
>>>点击图片了解课程详情!
今天小编带来了:ISSCC2023套餐,里面有文章、PPT、Tutorial等,同学可以拿回去自己学习研究。
1、深入理解SerDes(Serializer-Deserializer)之一
2、深入理解SerDes(Serializer-Deserializer)之二
3、科普:深入理解SerDes(Serializer-Deserializer)之三
4、资深工程师的ESD设计经验分享
5、干货分享,ESD防护方法及设计要点!
6、科普来了,一篇看懂ESD(静电保护)原理和设计!
7、锁相环(PLL)基本原理 及常见构建模块
8、当锁相环无法锁定时,该怎么处理的呢?
9、高性能FPGA中的高速SERDES接口
10、什么是毫米波技术?它与其他低频技术相比有何特点?
11、如何根据数据表规格算出锁相环(PLL)中的相位噪声
12、了解模数转换器(ADC):解密分辨率和采样率
13、究竟什么是锁相环(PLL)
14、如何模拟一个锁相环
15、了解锁相环(PLL)瞬态响应
16、如何优化锁相环(PLL)的瞬态响应
17、如何设计和仿真一个优化的锁相环
18、锁相环(PLL) 倍频:瞬态响应和频率合成
19、了解SAR ADC
20、了解 Delta-Sigma ADC
21、什么是数字 IC 设计?
22、什么是模拟 IC 设计?
23、什么是射频集成电路设计?
24、学习射频设计:选择合适的射频收发器 IC
25、连续时间 Sigma-Delta ADC:“无混叠”ADC
26、了解电压基准 IC 的噪声性能
27、数字还是模拟?I和Q的合并和分离应该怎么做?
28、良好通信链路性能的要求:IQ 调制和解调
29、如何为系统仿真建模数据转换器?
30、干货!CMOS射频集成电路设计经典讲义(Prof. Thomas Lee)
31、使用有效位数 (ENOB) 对 ADC 进行建模
32、以太网供电 (PoE) 的保护建议
33、保护高速接口的设计技巧
34、保护低速接口和电源电路设计技巧
35、使用互调多项式和有效位数对 ADC 进行建模
36、向 ADC 模型和 DAC 建模添加低通滤波器
37、揭秘芯片的内部设计原理和结构
38、Delta-Sigma ADCs中的噪声简介(一)
39、Delta-Sigma ADCs中的噪声简介(二)
40、Delta-Sigma ADCs 中的噪声简介(三)
41、了解Delta-Sigma ADCs 中的有效噪声带宽(一)
42、了解Delta-Sigma ADCs 中的有效噪声带宽(二)
43、放大器噪声对 Delta-Sigma ADCs 的影响(一)
44、放大器噪声对 Delta-Sigma ADCs 的影响(二)
45、参考电压噪声如何影响 Delta Sigma ADCs
46、如何在高分辨率Delta-Sigma ADCs电路中降低参考噪声
47、时钟信号如何影响精密ADC
48、了解电源噪声如何影响 Delta-Sigma ADCs
49、运算放大器简介和特性
50、使用 Delta-Sigma ADCs 降低电源噪声的影响
51、如何设计带有运算放大器的精密电流泵
52、锁定放大器的基本原理
53、了解锁定放大器的类型和相关的噪声源
54、用于降低差分 ADC 驱动器谐波失真的 PCB 布局技术
55、干货!《实用的RFIC技术》课程讲义
56、如何在您的下一个 PCB 设计中消除反射噪声
57、硅谷“八叛徒”与仙童半导体(Fairchild)的故事!
58、帮助你了解 SerDes!
1、免费公开课:ISCAS 2015 :The Future of Radios_ Behzad Razavi
2、免费公开课:从 5 微米到 5 纳米的模拟 CMOS(Willy Sansen)
3、免费公开课:变革性射频毫米波电路(Harish Krishnaswamy)
4、免费公开课:ESSCIRC2019-讲座-Low-Power SAR ADCs
5、免费公开课:ESSCIRC2019-讲座-超低功耗接收器(Ultra-Low-Power Receivers)
6、免费公开课:CICC2019-基于 ADC 的有线收发器(Yohan Frans Xilinx)
7、免费公开课:ESSCIRC 2019-有线与数据转换器应用中的抖动
8、免费公开课:ISSCC2021 -锁相环简介-Behzad Razavi
9、免费公开课:ISSCC2020-DC-DC 转换器的模拟构建块
10、免费公开课:ISSCC2020-小数N分频数字锁相环设计
11、免费公开课:ISSCC2020-无线收发器电路和架构的基础知识(从 2G 到 5G)
12、免费公开课:ISSCC2020-从原理到应用的集成变压器基础
13、免费公开课:ISSCC2021-射频和毫米波功率放大器设计的基础
14、免费公开课:ISSCC 2022-高速/高性能数据转换器系列1(Prof. Boris Murmann)
15、免费公开课:ISSCC 2022-高速/高性能数据转换器系列2(Dr. Gabriele Manganaro)
16、免费公开课:ISSCC 2022-高速/高性能数据转换器系列3(Prof. Pieter Harpe)
17、免费公开课:ISSCC 2022-高速/高性能数据转换器系列4(Prof. Nan Sun)
点击下方“公众号”,关注更多精彩
半导体人才招聘服务平台