Аналогове множення аналогових частин гібридного процесора (для розваги)


10

Коротка версія: Як зробити аналоговий множник, який займає два аналогових введення постійного струму?

Довга версія:


Я зробив коментар, порекомендувавши відео з Ben Eaters для іншого питання, в той час, як це зробив, я в кінцевому підсумку переглянув деякі (знову) і подумав собі " хммм ... мені цікаво, чи було б простіше зробити деякі частини чисто аналогічними ".

Шиною може бути лише один провід, де різні рівні напруги згодом будуть переведені на біти з АЦП.

Трохи розібравшись, я прийшов так далеко, що теоретично можна обчислити числа Фібоначчі:

введіть тут опис зображення
Малюнок 1, невелика демонстрація гібридного комп'ютера, що обчислює номери першої напруги

Посилання на тренажер.

У gif, поданому вище, я виходжу з діапазону напруги, тому легко побачити цифри напруги, насправді я просто використовую 250 mV = двійковий 1 (LSB при "встановлених значеннях"), а потім дозволяю йому поширюватися через DRAM, який вміщує 4 біта на конденсатор.

Важлива частина, на яку слід звернути увагу в gif, - це висновок підсилювача праворуч від тексту "a + b", він показує числа Фібоначчі.

Між кожною операцією я б кількісно оцінив відповідь за допомогою АЦП, за яким слід ЦАП. Тож якби я прочитав 1.1V, тоді ЦАП перетворив би його на 1,0 В, який згодом зберігався б у DRAM. А потім раз на X годинник весь DRAM повинен був пройти квантователь, щоб конденсатор не виплив .

ALU вміє робити лише +, - і середнє значення. Я думав про те, щоб розмножити, і зупинився. Я раніше робив і бачив діодичні множники, але не хочу їх використовувати, тому що діоди повинні відповідати. Я скоріше використовую резистори, які можу обрізати потенціометром. Anywhoo, я придумав гібридний множник, наполовину аналоговий, наполовину цифровий.

Тому я зробив перший з однаковими резисторами скрізь.

введіть тут опис зображення
Малюнок 2, наївний множник між цифровими числами та аналоговими значеннями. Цифрове значення компенсується на 1.

Що я потім перетворив на це з двійковими вагами:

введіть тут опис зображення
Малюнок 3, наївний множник між двійковими зваженими цифровими числами та аналоговими значеннями. Цифрове значення компенсується на 1.

Це нагадало мені сходи R2 / R, але я не міг змусити їх працювати з підсилювачем.

Однак я подумав про те, як працюють сходи R2 / R, і згадав, що їх вихід множиться на джерело їх напруги. Тому я нарешті придумав такий дизайн:

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

Мені це подобається, проте єдиною проблемою є те, що шина є аналоговою, лише один провід. Отже, якщо я змушений використовувати рішення на малюнку 4 вище, то я змушений використовувати інший АЦП в області множення гібридного процесора. Я не можу повторно використати цю в області квантування.

Час питання:

Як слід зробити множник, який займає два аналогові входи?

  • Я не хочу, щоб рішення, що базується на 3 діодах та 4 підсилювачах, тому що ви не можете обрізати діоди. Я вважаю, що якщо вони будуть невідповідними, то вони дадуть відповідь, яка вимкнена понад 250 мВ. Я цього не пробував у реальному світі.
  • Я спробував мультиплікатор на основі MOS у посиланні буквально на дюйм вище цього слова, але я не знаю, чи я німий. Я не можу змусити його працювати в тренажері. Див. Gif нижче про помилку реалізації MOS. Або натисніть на це посилання для моделювання.
  • Я не хочу кидати мікроконтролер на проблему.
  • Я не хочу використовувати мотор, який обертається і використовує деякі шенагігани.
  • е-тRС
  • 424=0,25
  • Після того, як множення буде виконано, його буде перенесено в квантователь, щоб переконатися, що значення максимально наближене до бінарного значення. Так що невеликі помилки в порядку.

Ось подарунок, який показує мою невдачу при спробі зробити MOS на основі:

введіть тут опис зображення
Малюнок 5, я скопіював схему із посилання wiki вище, але вона не працює в тренажері.

Якби це спрацювало, я б десь бачив значення 1 В, коли я міняв напругу відліку з 5 В на -5 В.


1
Перший раз, коли я побачив аналоговий множник, він використовував набір довгих хвостів: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
чи працює клітина Гілберта до постійного струму? Я вважаю, що він використовується для змішування РФ
Володимир Крейверо

1
@VladimirCravero Стільниця Гільберта по суті є множником - подумайте про це, якщо ви помножите два сигнали, один на f1 і один на f2, ви отримаєте вихід на f1-f2 і f1 + f2, що і робить мікшер. Вони також використовуються для підсилювачів змінного коефіцієнта посилення з цієї причини - один сигнал буде постійним (налаштування посилення), другий - це те, що ви хочете підсилити.
Джорен Ваес

Відповіді:


5

Якщо ви хочете побудувати аналоговий множник, який є трохи неперевершеним треком, тоді подумайте, що відбувається, коли ви подаєте аналоговий сигнал через аналоговий перемикач, але керуйте аналоговим вимикачем з ШІМ на високій частоті (значно вище nyquist, щоб зробити життя легше).

Якщо ШІМ становить 50% відмітки, то аналоговий сигнал базової смуги ослаблений вдвічі. Очевидно, що вам потрібно використовувати фільтр відновлення для видалення артефактів, що перемикаються. Але за допомогою цієї методики ви можете амплітудно модулювати аналоговий сигнал, змінюючи робочий цикл ШІМ: -

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

Ви також можете перетворити його на множник у чотири квадрата. Один аналоговий вхід управляє модулятором ширини імпульсу. Інший аналоговий вхід перемикається.

Просто думка на випадок, якщо вам це цікаво.

Детальніше тут


Це дуже цікавий підхід!
Джорен Ваес

1
Гм, використовуючи ШІМ, де амплітуда - одна напруга, а робочий цикл - інша відносна напруга , а потім фільтрується LP. Це насправді не погана ідея.
Гаррі Свенссон

1
Застосовується в деяких радіостанціях як модулятори, а в LVDT - як демодуляція положення. Я застосував його як демодулятор I і Q у чутливому металошукачеві.
Енді ака

4

Ці речі існують - аналогові пристрої (раніше?) Мають кілька мультиплікаторів, які ви можете (могли?) Придбати. Вони також мають це відмінне додаток, яке я обов'язково пропоную прочитати.

VОUТ(т)=VЯN,1(т)VЯN,2(т)VЯN,1VЯN,2


1
Ви все ще можете отримати ці аналогові множники. Я вважаю, що Digikey навіть має цілу категорію продуктів для них.
Вогнище

2
Однак клітина Гілберта критично залежить від узгодження транзисторів (що відносно легко, коли транзистори є частиною однієї штампу). ОП відкинула використання схеми, яка покладається на відповідність транзисторів, тому я не впевнений, що це хороша відповідь.
WhatRoughBeast

1
AD633 - це 4-квадратовий множник, який виводить (X1-X2) (Y1-Y2) / 10V + Z. Не особливо дешево.
Spehro Pefhany

3

Я просто викладаю це тут як життєздатну відповідь для майбутніх читачів.


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

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

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

Посилання на моделювання.

На зображенні вище обчислюється множення 2,25 × 3, що призводить до 6,75. Саме таке множення зроблене в ... чудовисько нижче.

"Значення для одного" - це орієнтир напруги для одного. Отже, якщо це 0,1 В і V1 = V2 = 1 вольт. Тоді відповідь буде 10 В, що означає число 100, якщо 0,1 В дорівнює 1.

Тож я вирішив придумати катод та інший штифт резистора та вуаля 1 кОм, є хороший логарифм та експоненціальна функція, яка відповідає. Ви можете побачити в gif нижче.

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

Посилання на моделювання.

Графік трохи зернистий, тобто спеціально зменшується від 8 Мб до 2 Мб. Також gif прискорюється 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.)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.