本文是Roland Juno的数字控制模拟振荡器(DCO)的综合指南。我在合成器之旅的早期就爱上了Juno,并且花了大约一年的时间对其设计进行研究,以便可以创建自己的Juno风格的DCO,即Winterbloom's Castor& Pollux。
本文将介绍Juno的一些历史,讨论数字控制振荡器背后的工作原理,分析Juno 6/60& amp; amp;的电路设计。 Juno 106,并讨论使用DCO的实际方面。本文篇幅较长,此处有很多信息。我已尽力使此方法对任何具有基本电子知识的人都适用,因此,如果您感到困惑或不知所措,请与我们联系,我很乐意提供更多详细信息或更改某些内容,以便对此进行处理39;更容易理解。
罗兰(Roland)于1982年推出了令人难以置信的Juno-6和几乎相同的Juno-60。Juno是6声音位的复音合成器,考虑到其一系列功能,其价值令人难以置信。
Juno特别具有数字控制的模拟振荡器。 DCO旨在克服它们在当代复音合成器中常见的压控振荡器(VCO)的调谐不稳定性。 DCO使用相同的基本模拟电路工作,但区别在于它们由微控制器控制。这为Juno系列赋予了独特的声音,并成为许多音乐家的最爱。
罗兰(Roland)于1984年推出了Juno-106。它在其前身的基础上进行了一些功能升级,例如弯音,调制和对MIDI的支持。它仍然使用与6和6相同的数字控制振荡器概念。 60,但其实现略有不同。
本文将讨论和分析这两种设计,但是在深入了解细节之前,我们先来了解Juno的总体声音生成设计。同样,本文将把这三个合成器(6、60和106)称为Juno,但是请注意,这不一定适用于以后的模型。
朱诺有六个声音。每个声音都有一个可以产生三个不同波形的振荡器。这些振荡器由微控制器控制。这是一个框图,应该有助于可视化播放中的不同部分:
声音的产生是由微控制器控制的方波开始的,然后经过一系列的波形器,这些波形器会生成斜坡/锯齿波形,子波形(是频率的一半的方波)和脉冲波形。时钟的频率确定振荡器播放的频率/音符。
这与不需要CPU的压控振荡器(VCO)的常规设计相反。相反,它使用模拟电路来创建控制电压,该电压确定振荡器的频率:
现在,您已经对这些合成器内部的声音生成有了一个高层次的概述,让我们更深入地了解声音生成所涉及的组件。
在深入探讨DCO和VCO之间的区别之前,讨论相似之处是很有用的。如上面的框图所示,VCO和Juno DCO的几种设计是围绕产生锯齿(斜坡)波形的斜坡发生器(有时称为斜坡核心)设计的:
斜坡发生器是振荡器如何将频率输入信号转换成用于产生音乐声音的各种有用波形的开始。对于VCO,频率输入信号是控制电压,因此是“电压控制的”。对于DCO,频率输入信号是数字时钟,因此是“数字控制的”。
输入信号类型的差异对电路设计有重大影响。在探讨这些差异之前,让我们看一下两种设计之间共享的斜坡发生器的核心:积分器。
积分器是执行积分数学运算的电子电路。这是微积分中的花哨词,但请不要害怕-实际上在实践中非常简单。
积分器的目的是产生一个输出信号,该信号以与输入信号的幅度和持续时间相对应的速率变化(增加或减少)。在这种情况下,输入和输出信号均为电压。如果将恒定电压施加到积分器,它将随着时间的推移在输出电压中产生一致的上升或下降(斜坡):
更高的电压意味着斜坡将具有更陡的斜率。这将有助于生成锯齿波形-积分器斜坡恰好产生锯齿波形的一个周期。诀窍是使其重新启动,以便创建重复(或周期性)的锯齿波形。
运算放大器积分器的基本思想是,如果向电容器施加电压,则需要花费一些时间才能充电,实际上,它的充电速率与输入电压成正比,这听起来很像积分!无需过多讨论运放理论,您可以假设积分器电路将产生一个以输入电压以及R和C的值确定的速率增加或减少的电压。R和C的值确定了积分器的RC常数-或更简单地说,是电路充电需要多长时间。记住这个概念,因为它在本文中起了很多作用。
您可以通过交互式插图来解决这个问题,以了解改变电压,电阻或电容如何改变积分器的输出:
在给定时间用于确定具有恒定输入电压的积分器的输出电压的公式为:
在进一步介绍之前,需要了解积分器行为的一些有趣且值得注意的属性:
首先,请注意有三种改变输出斜率陡度的方法:改变电容,改变电阻或改变电压。升高电压会使电容器更快充电,并增加斜率的陡度。降低电阻或电容会导致电容器更快充电,并会增加斜率的陡度。
其次,输出反相-正输入电压产生向下的斜率,负输入电压产生向上的斜率。当我们研究Juno-6 / 60设计与Juno-160设计之间的差异时,这将发挥作用。
第三,请注意,斜率越大,输出将饱和(停止增加或减少)。这是因为实际的运算放大器没有无限量的电压要输出,并且电容器不能容纳无限量的电荷,因此当任一输出电压超出运算放大器时,电源或电容器不能再容纳任何电荷,则输出电压将饱和。
在这一点上,您应该希望对运算放大器积分器如何从恒定的输入电压形成斜坡有很好的了解。因此,现在我们将了解如何更改电路,以便它产生一个重复的(周期性)锯齿波形,而不是单个斜率。
一个简单的解决方案是仅重新启动电路-将其复位。这将使斜坡从零开始返回,并使其再次开始上升(或下降)。如果您以固定的时间间隔进行重置,则电路将继续生成斜坡,并形成锯齿波形的周期。
但是复位电路意味着什么?好吧,这意味着将其恢复到初始状态。考虑一下积分器电路随时间的变化:电容器的电荷。电路首次启动时,电容器没有电荷,输出电压为零,但是随着时间的流逝,电容器的充电越来越多。因此,重置电路意味着使电容器放电。
使电容器放电的最简单方法是使电容器短路:将其两根引线连接在一起,因此没有什么东西可以阻止电容器放电。您可以通过在电路中放置一个小开关来做到这一点:
当开关断开时,积分器的行为与以前相同-积分器的输出根据输入电压而上升或下降。当开关闭合时,它会形成一个电路,该电路连接电容器的引线并使它放电:
再次断开开关后,积分器将重新启动,并再次使其输出斜升。
尝试下面的小模拟-按开始让电容器充电一点,然后按关闭开关将其重置:
请注意,以恒定的间隔按下按钮时,输出为锯齿波形,其频率取决于按下按钮和重置电容器的频率。
显然,那里没有任何需要您以所需音符频率手动点击开关的合成器! 1因此,该电路应采用某种形式的频率输入信号并将其用于电子地闭合开关,而不是要求人们按下开关。
开关是最简单的部分-可以用作电子控制开关的众所周知的组件:晶体管。因此,斜坡发生器将使用晶体管代替开关:
请注意,我没有明确指定要选择哪种晶体管(PNP,NPN等),这取决于其他一些因素,因此现在我将其抽象化。请注意,电容器和晶体管之间还有一个新电阻。这通常是一个低值电阻,当电容器放电时,它会限制流经晶体管的电流,因为太多的电流会损坏晶体管。
因此,现在该电路可以通过电子方式重置电容器。下一步是创建一个电路,该电路接收频率输入信号并将其转换为复位信号以控制晶体管。这是VCO和DCO分开的地方,因为到目前为止,它们的理论是相同的,但是频率输入信号的形式和其使用方式在两者之间存在很大差异。接下来的几节将探讨VCO和DCO设计采用的不同方法来控制晶体管和电容器,从而控制锯齿波形的频率。
尽管本文的重点是探索DCO设计,但还是值得花一些时间研究VCO背后的操作原理。该分析将提供对DCO设计某些方面的一些见解。
模拟VCO设计使用控制电压作为其频率输入信号。产生此控制电压非常复杂3,在这里讨论太多了,但是您应该知道,控制电压产生电路对温度敏感-一旦仪器预热振荡器,就将失调!这是DCO设计背后的激励因素之一。
这个想法是,增加斜坡发生器的输入电压将使电容器更快地充电-您已经在交互式积分器动画中体验到了这一点。
下一步是使用晶体管重置斜坡发生器。没有立即显而易见的方法来使用控制电压来驱动晶体管。但是,增加控制电压会增加斜坡的斜率。我们可以添加一个电路来监视斜坡发生器的输出,并在达到特定输出电平时使用晶体管将其复位:
较高的控制电压将意味着斜坡更快地达到目标电压,因此会更频繁地复位并导致较高的频率。
比较器可以比较!它需要两个电压:输入电压和阈值电压。当输入电压低于阈值电压时,比较器输出一个低电压。但是,如果输入电压高于阈值电压,则比较器将输出高电压。您可以在此处进行操作:
请注意,这是一个高级理想比较器,而实际比较器2需要更多工作才能使用。
您可以添加一个比较器来监视斜坡发生器的输出电压,并在输出超过所需幅度电压时通过打开晶体管来重置电路。当晶体管导通时,电容器放电,并且斜坡发生器的输出电压最终将下降到比较器的阈值电压以下,并且它将使晶体管关断,从而允许循环重新开始。看一下这个电路和动画:
现在这是一个工作的压控振荡器电路。播放动画中的控制电压,并注意,当控制电压增加4时,波形的频率也会增加。
但是为什么会这样呢?以及如何确定控制电压将产生的确切频率?相反,您如何确定给定频率的合适控制电压?
请记住,控制电压用于直接为电容器充电。考虑一下随着控制电压的增加会发生什么:
因此,现在您知道了控制电压如何增加频率,但是仍然需要知道在给定电压的情况下如何计算频率,反之亦然。请记住,有三个因素会影响电容器充电所需的时间:电容,电阻和输入电压。斜坡发生器部分给出了用于计算运算放大器积分器的输出电压的以下公式:
可以重新安排以解决充电时间,从而解决频率问题。由于考虑了充电时间,因此波形的周期和频率是周期的倒数:
如果选择R和C的分量值并选择所需的输出幅度,则可以将它们插入等式中,这样就可以得到用于在给定控制电压的情况下确定频率的公式。在这种情况下,我选择了200kΩ,1nF和-12V(不要太担心这些值,我将在稍后介绍如何选择这些值):
R = 200kΩC = 1 nF Vout =-12 V def frequency_for_control_voltage(Vin):时间=-(C * R * Vout)/ Vin频率= 1 /时间返回频率
您可以使用此交互式计算器尝试不同的控制电压,并查看它们如何映射到频率:
通过重新安排公式来求解时间(从而求解频率),可以更有效地计算特定频率所需的电压的倒数:
R = 200kΩC = 1 nF Vout =-12 V def control_voltage_for_frequency(频率):时间= 1 /频率Vin =-(C * R * Vout)/时间返回Vin
好的,这是您真正需要了解VCO的全部知识,然后再查看DCO。当然,本文省略了实际VCO的所有繁琐细节,因此请认为这是一个非常简化的VCO,实际上只是在这里用来帮助说明VCO和DCO之间的差异。如果您想了解有关构建VCO的更多信息,可以看一下本教程,这一系列精彩的视频或这本出色的书。
VCO的频率输入信号是控制电压。控制电压确定积分电容器的充电速度,从而确定频率。
由于斜坡的输出电平用于确定何时复位电路,因此VCO的振幅始终是恒定的。
VCO设计的最大问题是,决定频率的控制电压是由对温度漂移和制造公差非常敏感的复杂电路产生的。这意味着生成的控制电压可能与所需音符可能不完全匹配,最终听起来会不合时宜。更糟糕的是,即使您对此进行了调整,随着仪器变暖,您仍需要重新调整!
对于DCO,可以使用不同的方案来控制频率。与由控制电压确定频率的模拟VCO方法不同,DCO的频率由数字时钟信号控制。数字时钟信号是以特定频率运行的方波。为了演奏不同的音符,使用微控制器来改变时钟信号的频率。
那么如何将输入的时钟信号连接到斜坡核心并控制频率呢?记得回到基本的斜坡发生器原理图:
现在,假设比较器的输入电压为某个恒定电压。晶体管确实是确定频率的关键组件-它导通并重置电路的频率确定频率。时钟信号是一系列的开/关周期,因此您可以使用该信号在每个时钟周期内打开和关闭晶体管。
如果您将时钟直接连接到晶体管,那么一切将无法正常进行。由于时钟在其半个周期内保持高电平,这意味着晶体管也将在半个周期内保持导通状态,并且电容器将无法在一半时间内进行充电:
因此,时钟与晶体管之间必须有一些电路,以确保晶体管在时钟周期内仅在很短的时间内导通,以使电容器放电。
您可以构建一个电路来检测输入信号的急剧变化(例如时钟的上升沿或下降沿)并输出短电压尖峰。该电路被称为RC微分器5。这是一个花哨的词,但却是一个非常简单的电路。查看下面的电路和动画,查看其对时钟输入的影响:
当时钟信号出现上升沿或下降沿时,微分器将时钟的方波(紫色)变成一系列电压尖峰(蓝绿色)。请注意,如果更改电阻或电容,则尖峰会持续较短或较长的时间。尽管我现在还不会讨论确切的值,但总体思路是,尖峰应该持续足够长的时间才能使电容器放电。如果尖峰持续太长时间,则晶体管将导通太长时间,并且输出会使每个波形周期的开始失真。如果脉冲太短,则电容器将不会完全放电,这将在结果波形中引起不必要的不一致性和偏移:
实际上,微分器的RC常数应略大于斜坡发生器的放电电路的RC常数:
因此RC微分器> RC放电。有两个原因。首先是电路需要对电容器完全放电,以使波形正确。微分器的RC常数稍高些,因为实际组件值会有所变化,因此有更多的误差空间。第二个原因是直到基极-发射极电压V BE大于其额定的基极-发射极饱和电压V BE(sat)为止,晶体管不会导通。对于大多数普通晶体管,V BE(sat)在0.6伏至0.7伏之间。由于来自微分器的尖峰迅速上升,然后呈指数下降,因此在尖峰期间有一段时间,其电压太低而无法导通晶体管。微分器输出的此可视化显示了何时晶体管将以红色导通:
以下示意图添加了通过微分器输入的时钟以控制晶体管。请记住要假设积分器的输入电压是某个恒定电压:
最后,输出上有锯齿波形!请注意,在微分器和晶体管之间还存在一个电阻器-用来限制电流s。
......