9  第九章 压控放大器

夜阑卧听风吹雨,铁马冰河入梦来。

9.1 OTA压控放大器

什么是压控放大器(VCA)?查看下图就很容易理解了:

图 9.1: 压控放大器示意图

VCA输入来自VCO或滤波后的信号,同时接受一个电压输入\(V_{\text{control}}\),输出\(V_{\text{out}}\)频率与\(V_{\text{in}}\)保持不变,但幅度会随着\(V_{\text{control}}\)的变化而变化。

OTA可以用来制作VCA,电路如下:

图 9.2: OTA压控放大器

OTA的电流大小是 \(g_m V_{\text{in}} \approx 20 i_{\text{abc}} V_{\text{in}}\),流过电阻 \(R\) 后输出电压 \(V_{\text{out}} = 20 R \cdot i_{\text{abc}} V_{\text{in}}\),改变 \(i_{\text{abc}}\) 大小就能改变输出幅度(注意 \(i_{\text{abc}} < 2\text{ mA}\)、\(V_{\text{in}} < 10\text{ mV}\))。

图 9.3: 罗兰130VCA

9.2 NMOS器件压控放大器

关于NMOS,我们知道当\(V_{gs} > V_{\text{th}}\) 且 \(V_{ds} \ll V_{gs}\)时可以把它当成开关来用,但开关并不意味着电阻为0,实际从漏(D)到源(S)之间存在一个等效电阻\(R_{on}\),\(R_{on}\)满足:

\[ R_{on} \approx \frac{1}{\alpha\left( V_{gs} - V_{\text{th}} \right)} \tag{9.1}\]

\(\alpha\)是与器件自身特性有关的比例系数,以2N7000为例,它的\(V_{\text{th}}\)在1~3伏之间,$V_{gs}\(10伏时,\)R_{on}\(大约为5欧,利用NMOS的\)R_{on}\(会随着\)V_{gs}$变化而变化这一特点,同样可以制作VCA:

图 9.4: NMOS VCA

当\(V_{\text{control}}\) < \(V_{\text{th}}\)时,NMOS没有导通,此时它是一个单位跟随器,随着\(V_{\text{control}}\)不断增大到10伏,增益最多可到500倍。

9.3 Blackmer单元压控放大器

Blackmer单元,也可以叫做Blackmer核心(Blackmer core),这个名字来自David E.Blackmer。他在1971年创立了dbx公司,这是一家专业音频设备制造商,同时在1970年到1973年集中研究了很多与VCA相关的东西,Blackmer单元也是在这段时间被发明出来的。为了使用它,我们得先从单象限对数-反对数电路说起:

图 9.5: 单象限对数-反对数电路

\(Q_{1}\)、\(Q_{2}\)是一对匹配很好的NPN三极管,\(V_{\text{control}}\)施加在\(Q_{2}\)基极,两个运放都处于负反馈下,所以反相端电压都在0伏。

当输入进来后,流过\(R_{1}\)的电流大小是\(\frac{V_{\text{in}}}{R_1}\),这个电流流向\(Q_{1}\)集电极,op-1的输出端会自动输出到一个合适的电压使\(Q_{1}\)导通(因为负反馈的存在),并满足:

\[ \frac{V_{\text{in}}}{R_1} = I_S e^{\frac{0 - V_{e1}}{V_T}} \tag{9.2}\]

这时候\(Q_{2}\)的电流大小有:

\[ I_{c2} \approx I_S e^{\frac{V_{\text{control}} - V_{e1}}{V_T}} = e^{\frac{V_{\text{control}}}{V_T}}\frac{V_{\text{in}}}{R_1} \tag{9.3}\]

\(I_{c2}\)由op-2的输出端提供,这个电流流过\(R_{2}\),输出电压有:

\[ V_{\text{out}} = e^{\frac{V_{\text{control}}}{V_T}}\frac{R_2}{R_1}V_{\text{in}} \tag{9.4}\]

此时\(V_{\text{in}}\)和\(V_{\text{out}}\)之间是指数放大的关系,单从 式 9.4 来看,这个电路已经是VCA了,不足之处是它只能处理\(V_{\text{in}}\)为正的情况,当\(V_{\text{in}}\)为负时,电路会失效。

改进方法就是再添加一对PNP三极管,用于在\(V_{\text{in}}\)小于0时提供额外的通路:

图 9.6: Blackmer压控放大器

上图中\(Q_{1}\)、\(Q_{2}\)组成一对,\(Q_{3}\)、\(Q_{4}\)与 图 9.5 中的三极管连接方式本质上并无不同,四个额外的二极管用于补偿三极管的精度。

\(Q_{5}\)和它旁边两个电阻的作用是在上下两端提供大约2.8伏的电压,当\(V_{\text{in}}\)为负时,电流由\(Q_{1}\)提供,\(Q_{2}\)会按照指数关系放大\(Q_{1}\)的电流(与 图 9.5 类似,但不满足 式 9.4,因为电路结构有区别),与此同时因为\(Q_{5}\)的存在,\(Q_{3}\)和\(Q_{4}\)差不多保持将要导通的状态(因为二极管和三极管的导通电压都在0.7伏左右),这样做的好处是当\(V_{\text{in}}\)由负变正的瞬间,\(Q_{3}\)、\(Q_{4}\)可以快速开启工作,减小输出端的失真。

同理当\(V_{\text{in}}\)为正时\(Q_{1}\)、\(Q_{2}\)也处于即将要开启的状态,\(Q_{3}\)、\(Q_{4}\)承担起电流路径。

图 9.6 的电路满足 \(V_{\text{control}}\) 每增加6毫伏,\(V_{\text{out}}\) 就会比原来放大1.12倍,当 \(V_{\text{control}} = 360\text{ mV}\) 时,\(V_{\text{out}}\) 大约是1000倍 \(V_{\text{in}}\),也就是 60dB,当 \(V_{\text{control}} = -360\text{ mV}\) 时,增益是 -60dB(一般要求 \(-10\text{ mV} < V_{\text{in}} < 10\text{ mV}\),\(-360\text{ mV} < V_{\text{control}} < 360\text{ mV}\))。

9.4 差分对压控放大器

想必大家已经意识到了,VCA等价于电压乘法器,模拟电路上乘法器通常是一个吉尔伯特单元,但我们并不需要去构建它,回顾 图 3.22 的差分电路,对于匹配良好的三极管对和电阻对,在小信号下输出\(V_{\text{out}}\)与输入\(V_{\text{in}}\)之间满足\(V_{\text{out}}\) = \(g_{m}\)\(RV_{\text{in}}\),其中\(g_m = \frac{I_c}{V_T}\)是三极管的跨导,\(I_{c}\)大小等于底部电流源电流(尾电流)的\(\frac{1}{2}\),从电压输入输出关系式中可以看出,只要我们能改变尾电流的大小,就能改变\(g_{m}\),从而制作VCA。

而制作压控电流源算的上是一件相当简单的事了(第7章有压控线性和指数型电流源),因此这种改变\(g_{m}\)的VCA在合成器里是很常见的。

图 9.7: 差分对VCA

上图输出端的运放接收差分信号输入,可以自己计算一下这种情况下有 \(V_{\text{out}} = \frac{100\text{k}\Omega}{20\text{k}\Omega}\left( V_{\text{in}}^+ - V_{\text{in}}^- \right)\),0到5伏的\(V_{\text{control}}\)能提供最大0.25毫安的尾电流,\(Q_{1}\)基极输入电压25毫伏内(保持在差分对线性区)。

9.5 压缩器

VCA可以单独作为一个模块在合成器使用,而它另一个使用场景是制作压缩器(compressor)。压缩器的发明最开始是为了防止广播播报员突然的情绪激动或靠近话筒导致的音量提升,后来人们发现了它在音乐上的乐趣,并把它运用在了混音上。

它可以降低声音信号的动态范围(也就是信号的电压幅度),虽然这听起来与VCA没什么两样,但不同的是,压缩器能够检测输入信号的电压峰值(或均值)并与某个阈值电压(threshold)进行比较。

当输入信号高于这个阈值电压时,VCA启动,对信号压缩,低于阈值电压则保持不变,其基本结构框图如下:

图 9.8: 压缩器框图

所谓峰值检测器,在压缩器里具体而言是检测信号的包络:

图 9.9: 信号包络

如上图所示,一般音频信号是关于0伏上下对称的,为了得到包络曲线,考虑如下结构:

图 9.10: 峰值(包络)检测器

电阻\(R\)的取值足够地大,当\(V_{\text{in}}\)为正时,二极管导通对电容\(C\)充电,电容电压会跟随输入信号的上升而上升,这时遇到输入电压下降,二极管截止,电容只能通过\(R\)放电,因为\(R\)较大,电容放电速度较慢,使电容电压不会跟随\(V_{\text{in}}\)的下降而下降。

直到下一个时刻\(V_{\text{in}}\)输入再次超过电容电压,二极管导通,电容再次充电跟随\(V_{\text{in}}\)的变化。不断重复这个过程,我们实现了一个简单的峰值检测器,为了减少二极管压降造成的电压损失,我们可以把 图 9.10 的普通二极管换成第7章介绍过的超级二极管:

图 9.11: 改进的峰值检测器

声音频率下10千欧和10微法是比较合适的取值,然后再把输出与阈值电压作比较(这儿的比较其实是取差值),比较器电路如下:

图 9.12: 阈值比较

这样输出端有 \(V_{\text{out}} = \frac{100\text{k}\Omega}{100\text{k}\Omega}\left( V_{\text{in}}^+ - V_{\text{threshold}} \right)\),峰值电压大于阈值电压时,输出为正,小于时输出为负值。

在这儿我们再引入两个概念,攻击时间(attack time)和释放时(release time)。

假设压缩器的VCA在0伏输入时不压缩,现在VCA的控制电压目标设定成3伏,所谓攻击时间就是指VCA的控制电压从0伏(不压缩)到3伏(目标值)所花费的时间。释放时间则是从压缩状态到停止压缩需要花费的时间:

图 9.13: 攻击时间和释放时间

一般压缩器的攻击时间设定很短,通常再毫秒内,但释放时间可以很长,例如1秒或2秒。

想要实现 图 9.13 的效果,且能分别调整攻击时间和释放时间,不难想象我们需要用上电容(因为电阻都是“即时响应”的,但电容有时间常数\(\tau = RC\)可以被人为地改变)。

回到 图 9.12,要让\(V_{\text{out}}\)以不同的速率上升或下降,关键点在于,负反馈下的运放输出一定会“竭尽所能”地让同相端和反相端电压保持相等,因此当\(V_{\text{threshold}}\)和\(V_{\text{in}}\)固定时,\(V_{\text{out}}\)(这里强调是反馈电阻右侧的电压!而不是运放输出端的电压)一定要达到(\(V_{\text{in}}^+\) − \(V_{\text{threshold}}\))才会保持稳定!所以在运放输出端与反馈导线之间无论添加什么结构,运放输出都会朝着使\(V_{\text{out}}\) = \(V_{\text{in}}^+\) − \(V_{\text{threshold}}\)去改变。

有了上述理解后,对 图 9.12 的电路进行修改:

图 9.14: 添加攻击时间和释放时间后的电路

当运放输入端电压确定时, 图 9.14 的\(V_{\text{out}}\)一定会朝着让它等于(\(V_{\text{in}}^+\) − \(V_{\text{threshold}}\))去改变,但修改后的电路\(V_{\text{out}}\)端存在一个电容(假设\(V_{\text{out}}\)后面接的是缓冲器,有无穷大的输入阻抗),运放就只能通过10千欧的滑动变阻器和100千欧的滑动变阻器对电容充电和放电。

调节这两个变阻器就可以改变\(V_{\text{out}}\)到达稳定值所需要的时间,也就是攻击时间和释放时间。

再然后就比较简单了,把 图 9.14 的\(V_{\text{out}}\)整流(只取0~ − 5伏的输出)并缩放到合适的值送入VCA,VCA选择Blackmer压控放大器,因为它可以接收负电压输入来缩小信号,控制电压为0时保持信号不变:

图 9.15: 压缩器

9.6 环形调制器

环形调制器也是改变信号幅度的一类器件,但和VCA不同,VCA是在输入信号上乘以了一个比例系数,而环形调制器是把两个输入信号直接相乘。

举个例子,正弦波和方波输入环形调制器,输出会是这样的:

图 9.16: 环形调制器示例

大家如果去网上搜索环形调制器,绝对会看到一个用4个二极管连接的怪东西,到目前为止我还不能理解它到底是如何工作的,因此本小节是用其他方法来实现信号相乘。

考虑以下两个电路:

图 9.17: 可变增益差分对

在相同的小信号\(V_{\text{in}}\)输入下,输出\(V_{\text{out}1}\)和\(V_{\text{out}2}\)分别有:

\[ \begin{aligned} V_{\text{out}1} & = g_{m1} R V_{\text{in}} \\ V_{\text{out}2} & = - g_{m2} R V_{\text{in}} \end{aligned} \tag{9.5}\]

\(g_{m1}\)和\(g_{m2}\)分别是左右差分对的跨导,由\(V_{\text{control}1}\)和\(V_{\text{control}2}\)确定,假设一个新的输出\(V_{\text{out}3}\) = \(V_{\text{out}1}\) + \(V_{\text{out}2}\),那么\(V_{\text{out}3}\) = \(g_{m1}\)\(RV_{\text{in}}\) − \(g_{m2}\)\(RV_{\text{in}}\) = \(A_{1}\)\(V_{\text{in}}\) + \(A_{2}\)\(V_{\text{in}}\) = (\(A_{1}\) + \(A_{2}\))\(V_{\text{in}}\),其中\(A_{1}\) = \(g_{m1}\)\(R\) > 0,\(A_{2}\) = −\(g_{m2}\)\(R\) < 0。

\(A_{1}\)、\(A_{2}\)的绝对值分别由\(g_{m1}\)和\(g_{m2}\)决定,\(g_{m1}\)、\(g_{m2}\)又分别由\(V_{\text{control}1}\)和\(V_{\text{control}2}\)决定,如果\(Q_{1}\)到\(Q_{6}\)这6支三极管匹配度足够好(性能接近),那么(\(A_{1}\) + \(A_{2}\))的正与负基本上全由(\(V_{\text{control}1}\) − \(V_{\text{control}2}\))的正负决定,令\(V_{\text{control}3}\) = \(V_{\text{control}1}\) − \(V_{\text{control}2}\),这样我们就可以得到一个四象限乘法器(两个输入\(V_{\text{in}}\)和\(V_{\text{control}3}\)都可以为正或为负)。

那么该如何实现 \(V_{\text{out}1} + V_{\text{out}2}\)?由于 \(V_{\text{out}1}\) 也等于 \((I_{Q2} R - I_{Q1} R)\),\(V_{\text{out}2}\) 等于 \((I_{Q4} R - I_{Q5} R)\),那么 \(V_{\text{out}3} = (I_{Q2} + I_{Q4}) R - (I_{Q1} + I_{Q5}) R\),根据这个公式,我们只需要按照下图的连接方式,就能实现 \((V_{\text{out}1} + V_{\text{out}2})\) 的计算:

图 9.18: 电流相减电路

\(V_{\text{in}}\)作为输入,\(V_{\text{control}1}\)和\(V_{\text{control}2}\)分别连接着\(Q_{3}\)和\(Q_{6}\)的基极,虽然说是\(V_{\text{control}3}\) = \(V_{\text{control}1}\) − \(V_{\text{control}2}\)可以控制(\(A_{1}\) + \(A_{2}\))的正负,但我们不能就这样直接在\(Q_{3}\)和\(Q_{6}\)的基极之间输入一个电压,因为它们都是晶体管,所能承受的电流大小是有限的,我们希望当\(V_{\text{control}3}\)到达一定电压后,\(A_{1}\)或\(A_{2}\)可以变为0,防止某边的三极管因电流过大而损坏。

方法就是把\(Q_{3}\)和\(Q_{6}\)同样视为一个差分对,在它们下面再加一个电流源,因为三极管差分对在±2~3\(V_{T}\)时尾电流就会完全偏到某一方去,这既能防止某边电流过大,同时避免了电路行为会受\(V_{\text{control}3}\)共模电压的影响。

人们把这样的结构称为吉尔伯特单元(Gilbert Cell),它的发明时间也是在上世纪60年代末70年代初,并在之后广泛运用在模拟集成电路上。

图 9.19: 吉尔伯特单元

因为 \(V_{\text{out}3} = g_{m1} R V_{\text{in}} - g_{m2} R V_{\text{in}} = \left( \alpha\frac{1}{V_T} \right) R V_{\text{in}} V_{\text{control}3}\)(所有差分对都处于线性区时才满足等式),其中\(\alpha\)为比例系数,因此吉尔伯特单元自然也被当做线性乘法器使用。

最终环形调制器如下:

图 9.20: 环形调制器

\(V_{\text{in}1}\)、\(V_{\text{in}2}\)处两个电阻能把±5伏的信号缩小到±25毫伏,最下方的电阻大约会产生2毫安的尾电流。