模拟模拟乘法,是混合CPU的一部分(很有趣)


10

简短版:如何制作一个带两个模拟直流输入的模拟乘法器?

长版:


我发表了评论,向本·埃德斯(Beat Eaters)的视频推荐了另一个问题,但这样做的时候,我最终还是再次观看了一些内容,然后对自己说:“ 嗯……我想知道将某些部分制作成纯粹的模拟会更容易 ”。

总线可能只是一条导线,之后不同的电压电平将通过ADC转换为位。

只是弄乱了一点,我走了这么远,理论上可以计算出斐波那契数:

在此处输入图片说明
图1,计算第一个斐波那契数的混合计算机的小型演示

链接到模拟器。

在上面的gif文件中,我超出了电压范围,因此很容易看到斐波那契数,实际上我只使用250 mV =二进制1(“设定值”处的LSB),然后使其传播通过每个电容器可容纳4位的DRAM。

要在gif中查看的重要部分是“ a + b”文本右侧的运算放大器的输出,其中显示了斐波那契数。

在每次操作之间,我将先使用ADC再加上DAC来量化答案。因此,如果我要读取1.1V,则DAC会将其转换为1.0V,然后将其存储在DRAM中。然后每个X时钟一次,整个DRAM将必须经过量化器以确保电容器不会浮动

ALU只能执行+,-和平均。我当时正在考虑进行乘法运算,但后来停了下来。我之前已经制作并看过基于二极管的乘法器,但是我不想使用它们,因为二极管必须匹配。我宁愿使用可以用电位器修整的电阻。w,我想出了一个混合乘法器,一半模拟,一半数字。

因此,我首次在各地使用相同的电阻器。

在此处输入图片说明
图2,数字和模拟值之间的天真乘数。数字值偏移1。

然后我用二进制权重将其转换为:

在此处输入图片说明
图3,二进制加权数字和模拟值之间的幼稚乘数。数字值偏移1。

这让我想起了R2 / R梯形图,但是我无法使其与运放一起工作。

但是,我想到了R2 / R梯子的工作原理,并且想起了它们的输出乘以它们的电压源。所以我终于想到了这个设计:

在此处输入图片说明
图4,二进制加权数字和模拟值之间基于R2 / R的乘数

我喜欢它,但是唯一的问题是总线是模拟的,只有一根线。因此,如果我不得不使用上面图4中的解决方案,那么就不得不在混合CPU的乘法区域使用另一个ADC。我不能在量化器区域重复使用那个。

提问时间:

我应该如何制作一个需要两个模拟输入的乘法器?

  • 希望基于3个二极管和4个运算放大器的解决方案,因为您无法修整二极管。我的信念是,如果它们不匹配,那么它们给出的答案将超过250 mV。我还没有在现实世界中尝试过。
  • 我已经试过在这个词上方一英寸处的链接中基于MOS的乘法器,但是我不知道自己是否傻。我无法在模拟器中使用它。有关MOS实施失败的信息,请参见下面的gif。或单击此链接进行仿真。
  • 并不想在这个问题抛出一个微控制器。
  • 希望使用的电机旋转和使用一些诡计。
  • Ë-Ť[RC
  • 424=0.25
  • 乘法完成后,将带到量化器以确保该值尽可能接近二进制值。所以小的错误是可以的。

这是显示我无法制作基于MOS的失败的gif:

在此处输入图片说明
图5,我从上面的Wiki链接复制了原理图,但是它在模拟器中不起作用。

如果可以的话,那么当我将参考电压从5 V更改为-5 V时,我应该已经在某个地方看到了1 V的值。


1
我第一次看到模拟乘法器时,它使用了一组长
Oldfart,

2
吉尔伯特电池会在直流下工作吗?我认为它是用来混合RF
弗拉基米尔Cravero拥有

1
@VladimirCravero吉尔伯特单元本质上是一个乘法器-考虑一下,如果您将两个信号相乘,一个在f1处,一个在f2处相乘,您将在f1-f2和f1 + f2处得到输出,这就是混频器的工作。因此,它们也用于可变增益放大器-一个信号将是一个常数(增益设置),第二个信号将是您想要放大的信号。
Joren Vaes

Answers:


5

如果您要构建一个有点不寻常的模拟乘法器,那么请考虑当您通过模拟开关馈入模拟信号但通过高频控制PWM来控制模拟开关时会发生什么(大大超过奈奎斯特以延长使用寿命)更轻松)。

如果PWM是50%的标记空间,则基带模拟信号将衰减一半。显然,您需要使用恢复过滤器来消除切换伪影。但是通过这种技术,您可以通过改变PWM占空比来幅度调制模拟信号:-

在此处输入图片说明

您也可以将其变成4象限乘数。一个模拟输入控制一个脉冲宽度调制器。另一个模拟输入被切换。

如果您有兴趣,请考虑一下。

在这里更多细节


这是一个非常有趣的方法!
Joren Vaes

1
嗯,使用PWM,其中幅度是一个电压,占空比是另一个相对电压,然后经过LP滤波。这实际上不是一个坏主意。
哈里·斯文森

1
它在某些无线电中用作调制器,在LVDT中用作位置解调。我也将它用作灵敏金属探测器中的I和Q解调器。
安迪(aka Andy)'18年

4

这些东西存在-模拟设备(曾经用于?)有一些乘法器IC您可以(可以?)购买。他们也有这个出色的应用笔记,我绝对建议阅读。

VØüŤŤ=V一世ñ1个ŤV一世ñ2ŤV一世ñ1个V一世ñ2


1
您仍然可以获得这些模拟乘法器。我相信digikey甚至可以为他们提供整个产品类别。
炉边

2
但是,吉尔伯特单元(Gilbert Cell)严重依赖于晶体管匹配(当晶体管是单个芯片的一部分时,这相对容易)。OP拒绝使用依赖于晶体管匹配的电路,因此我不确定这是否是一个好答案。
WhatRoughBeast

1
AD633是四象限乘法器,输出(X1-X2)(Y1-Y2)/ 10V + Z。不是特别便宜。
Spehro Pefhany

3

我只是将其作为对未来读者的可行答案。


阅读Joren的答案后,我意识到许多模拟乘法器都依赖于匹配组件。所以我心想,为什么不重用组件,而在各处都使用相同的组件?这样,我将自动匹配所有内容。

因此,我查看了典型的基于二极管的乘法器,发现所有二极管的阳极始终连接到运算放大器的(-)输入。1kΩ电阻的一个引脚也是如此。

在此处输入图片说明

链接到模拟。

在上图中,计算出乘积2.25×3,得出6.75。在下面的...怪物中也进行了相同的乘法。

“一的值”是一的参考电压。因此,如果它是0.1 V,并且V1 = V2 = 1伏。那么答案将是10 V,如果0.1 V为1,则转换为数字100。

因此,我决定将1kΩ电阻的阴极和另一引脚复用到一起,并有一个很好的对数和指数函数可以匹配。您可以在下面的gif中看到。

在此处输入图片说明

链接到模拟。

gif有点颗粒感,目的是将8 MB缩小到2 MB。而且gif加快了2倍,而不是55秒,是28秒。

我知道它说“以y为底的log(x)”和“ pow(y,x)”是不正确的。我对电压基准感到困惑。它只是日志和战利品,有一些随机基数。聪明的数学家会知道,无论底数是多少,都可以将任何日志转换为任何其他日志。

右下角运算放大器输出的末尾显示数字6.7。当显示数字而没有任何鼠标悬停时,CircuitJS会将6.75截断为6.7。将鼠标放在上方显示为6.69 V,因此60 mV的误差小于250 mV,因此可以接受。根据..不是最好的模拟器。


看完安迪·阿卡的答案后,我不确定是否有其他答案可以胜过它。如果没有其他答案能胜任,我将在几天之内接受他的意见。我不认为我的回答胜过安迪的回答。


1

我最近在1968年的模拟计算机中遇到了“抛物线乘数”电路。要使A和B相乘,您需要从两个运算放大器开始计算A + B和AB。接下来,您需要一个生成X ^ 2(即抛物线)的函数生成器。使用两个函数生成器,您可以计算(A + B)^ 2和(AB)^ 2。您用一个运算放大器减去两个结果,得出4×A×B,按比例缩放后可得到所需的A×B。

您如何获得X ^ 2函数?任意凸函数(例如X ^ 2)可以通过电阻-二极管网络来近似。这个想法是,每个二极管将在特定的输入电压(由上电阻控制)下导通,并向输出提供电流(由下电阻控制)。结果是分段线性函数。(下面的组件值是任意的;我没有计算出X ^ 2的值。)为了产生更高的精度,真实的函数发生器可能会有十二个二极管。函数发生器可以是硬连线的,也可以具有电位计,因此用户可以将其设置为任何所需的功能。

原理图

模拟该电路 –使用CircuitLab创建的原理图

抛物线乘法器被认为是执行模拟乘法的高精度方法。在Dornier 240模拟计算机手册中有简短的提及。(用德语,请参见第9节中的Der Parabel-Multiplizierer。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.