Аналоговое аналоговое умножение, часть гибридного процессора (для удовольствия)

10

Краткая версия: Как мне сделать аналоговый умножитель, который принимает два аналоговых входа постоянного тока?

Длинная версия:


Я сделал комментарий, порекомендовав видео Ben Eaters для другого вопроса, но в итоге я сам посмотрел некоторые (снова) и подумал про себя: « Хммм ... Интересно, будет ли проще сделать некоторые части чисто аналоговыми ».

Шина может быть только одним проводом, где различные уровни напряжения будут впоследствии преобразованы в биты с помощью АЦП.

Просто немного поиграв, я зашел так далеко, что теоретически могу вычислить числа Фибоначчи:

введите описание изображения здесь
Рисунок 1, небольшая демонстрация гибридного компьютера, вычисляющего первые числа Фибоначчи

Ссылка на симулятор.

На рисунке выше я выхожу из диапазона напряжений, поэтому легко увидеть числа Фибоначчи, в действительности я просто использовал бы 250 мВ = двоичный 1 (LSB на «заданных значениях»), а затем позволил бы ему распространяться через DRAM, который содержит 4 бита на конденсатор.

Важная часть, которую нужно посмотреть в gif, - это вывод операционного усилителя справа от текста «a + b», он показывает числа Фибоначчи.

В промежутке между каждой операцией я определяю количество ответа, используя АЦП, а затем ЦАП. Поэтому, если бы я прочитал 1,1 В, ЦАП превратил бы его в 1,0 В, который впоследствии был бы сохранен в DRAM. И затем один раз каждые X часов весь DRAM должен проходить через квантователь, чтобы убедиться, что конденсатор не уплывает .

АЛУ умеет только делать +, - и в среднем. Я думал о том, чтобы сделать умножение, и остановился. Я уже делал и видел умножители на основе диодов, но я не хочу их использовать, потому что диоды должны быть согласованы. Я скорее использую резисторы, которые можно подрезать потенциометром. Во всяком случае, я придумал гибридный множитель, наполовину аналоговый, наполовину цифровой.

Поэтому я сделал первый с одинаковыми резисторами везде.

введите описание изображения здесь
Рисунок 2, наивный множитель между цифровыми числами и аналоговыми значениями. Цифровое значение смещено на 1.

Который я затем превратил в это с двоичными весами:

введите описание изображения здесь
Рисунок 3, наивный множитель между двоичными взвешенными цифровыми числами и аналоговыми значениями. Цифровое значение смещено на 1.

Это напомнило мне рэдеры R2 / R, но я не мог заставить их работать с операционным усилителем.

Однако я подумал о том, как работают лестницы R2 / R, и я вспомнил, что их выходная мощность умножается на источник напряжения. Итак, я наконец-то придумал этот дизайн:

введите описание изображения здесь
Рисунок 4, множитель на основе R2 / R между двоичными взвешенными цифровыми числами и аналоговыми значениями

Мне это нравится, единственная проблема, однако, в том, что шина аналоговая, всего один провод. Поэтому, если я вынужден использовать решение, показанное на рисунке 4 выше, то я вынужден использовать другой АЦП в области умножения гибридного ЦП. Я не могу использовать один в области квантователя.

Время на вопрос:

Как мне сделать множитель, который принимает два аналоговых входа?

  • Я не хочу решение, которое основано на 3 диодах и 4 операционных усилителях, потому что вы не можете подрезать диоды. Я считаю, что если они не соответствуют друг другу, то они дадут ответ, который выключен более чем на 250 мВ. Я не пробовал это в реальном мире.
  • Я попробовал множитель на основе MOS в ссылке буквально на дюйм выше этого слова, но я не знаю, глуп ли я. Я не могу заставить его работать в симуляторе. Смотрите GIF ниже для сбоя реализации MOS. Или нажмите на эту ссылку для моделирования.
  • Я не хочу бросать микроконтроллер в проблему.
  • Я не хочу использовать мотор, который вращается и использует некоторые махинации.
  • е-TрС
  • 424знак равно0,25
  • После того, как умножение выполнено, оно будет передано в квантователь, чтобы убедиться, что значение максимально близко к двоичному значению. Так что небольшие ошибки в порядке.

Вот рисунок, который показывает мою неудачу при попытке сделать MOS на основе:

введите описание изображения здесь
Рисунок 5, я скопировал схему из ссылки вики выше, но она не работает в симуляторе.

Если бы это сработало, то я бы где-то увидел значение 1 В, так как я изменил напряжение эталона с 5 В до -5 В.

Гарри Свенссон
источник
1
В первый раз, когда я увидел аналоговый множитель, он использовал набор длинных хвостов: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart
2
клетка Гилберта работает до DC? Я считаю, что он используется для микширования RF
Владимир Краверо
1
@VladimirCravero Ячейка Гилберта по сути является множителем - подумайте об этом, если вы умножите два сигнала, один на f1, а другой на f2, вы получите выход на f1-f2 и f1 + f2, что и делает микшер. По этой причине они также используются для усилителей с переменным усилением - один сигнал будет постоянным (настройка усиления), а второй - тем, что вы хотите усилить.
Джорен Ваес

Ответы:

5

Если вы хотите создать аналоговый множитель, который немного превзойден, подумайте о том, что происходит, когда вы подаете аналоговый сигнал через аналоговый коммутатор, но управляете аналоговым коммутатором с помощью ШИМ на высокой частоте (значительно выше Найквиста, чтобы продлить жизнь Полегче).

Если ШИМ составляет 50% пространства меток, то аналоговый сигнал основной полосы ослабляется наполовину. Очевидно, что вам нужно использовать фильтр восстановления для удаления артефактов переключения. Но с помощью этого метода вы можете амплитудно модулировать аналоговый сигнал, изменяя рабочий цикл ШИМ: -

введите описание изображения здесь

Вы также можете превратить его в множитель 4 квадрантов. Один аналоговый вход управляет модулятором ширины импульса. Другой аналоговый вход переключается.

Просто мысль, если вам интересно.

Подробнее здесь

Энди ака
источник
Это очень интересный подход!
Джорен Ваес
1
Хм, используя ШИМ, где амплитуда - одно напряжение, а коэффициент заполнения - другое относительное напряжение , а затем LP фильтруется. Это на самом деле неплохая идея.
Гарри Свенссон
1
Он используется в некоторых радиостанциях в качестве модуляторов и в LVDT для демодуляции положения. Я применил один в качестве демодулятора I и Q в чувствительном металлоискателе тоже.
Энди ака
4

Эти вещи существуют - аналоговые устройства (раньше?) Имеют несколько множителей, которые вы можете (могли бы?) Купить. У них также есть это превосходное приложение, которое я определенно предлагаю прочитать.

ВОUT(T)знак равноВяN,1(T)ВяN,2(T)ВяN,1ВяN,2

Джорен Ваес
источник
1
Вы все еще можете получить эти аналоговые множители. Я считаю, что у Digikey даже есть целая категория продуктов для них.
Очаг
2
Однако ячейка Гилберта критически зависит от согласования транзисторов (что относительно просто, когда транзисторы являются частью одного кристалла). ОП отклонил использование схемы, которая основывается на согласовании транзисторов, поэтому я не уверен, что это хороший ответ.
WhatRoughBeast
1
AD633 - это 4-квадрантный множитель, который выводит (X1-X2) (Y1-Y2) / 10V + Z. Не особенно дешево.
Спехро Пефхани
3

Я просто выкладываю это здесь как жизнеспособный ответ для будущих читателей.


Прочитав ответ Джорена, я понял, что многие аналоговые множители полагаются на соответствующие компоненты. Поэтому я подумал, почему бы просто не использовать компоненты повторно, чтобы везде использовался один и тот же компонент? Таким образом, я автоматически сопоставлю все.

Итак, я посмотрел типичный умножитель на основе диодов и увидел, что аноды всех диодов всегда подключены к (-) входу операционного усилителя. То же самое касается одного контакта резистора 1 кОм.

введите описание изображения здесь

Ссылка на симуляцию.

На изображении выше, умножение 2,25 × 3 рассчитывается, что приводит к 6,75. То же самое умножение сделано в ... чудовище ниже.

«Значение для одного» является опорным напряжением для одного. Так что, если это 0,1 В и V1 = V2 = 1 вольт. Тогда ответом будет 10 В, что означает число 100, если 0,1 В равно 1.

Итак, я решил мультиплексировать катод и другой вывод резистора 1 кОм и вуаля, есть хороший логарифм и экспоненциальная функция, которая соответствует. Вы можете увидеть в GIF ниже.

введите описание изображения здесь

Ссылка на симуляцию.

GIF-изображение немного зернистое, чтобы уменьшить 8 МБ до 2 МБ. Также гиф ускоряется в 2 раза, 28 секунд вместо 55.

Я знаю, что это говорит «log (x) в базе y» и «pow (y, x)», что не соответствует действительности. Я перепутал себя с опорным напряжением. Это просто лог и пау со случайной базой. Умные математики будут знать, что не имеет значения, что является основой, вы можете преобразовать любой журнал в любой другой журнал.

Номер 6.7 показан в конце на выходе нижнего правого операционного усилителя. CircuitJS усекает с 6,75 до 6,7 при представлении чисел без зависания мыши. Размещение мыши выше показало 6,69 В, поэтому погрешность 60 мВ составляет менее 250 мВ и, следовательно, приемлема. По словам .. не самый лучший симулятор.


Прочитав ответ Энди Аки, я не уверен, сможет ли его победить другой ответ. Я приму его через пару дней, если никакой другой ответ не сравнится. Я не верю, что мой ответ превосходит Энди.

Гарри Свенссон
источник
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 . (На немецком языке см. Der Parabel-Multiplizierer в разделе 9.)

Кен Ширифф
источник