Analogowe mnożenie analogowe, część hybrydowego procesora (dla zabawy)

10

Krótka wersja: Jak zrobić multiplikator analogowy, który pobiera dwa analogowe wejścia DC?

Długa wersja:


Skomentowałem, polecając filmy Bena Eatersa do innego pytania, robiąc to, skończyło się na tym, że sam (znowu) obejrzałem siebie i pomyślałem sobie: „ hmmm… Zastanawiam się, czy łatwiej byłoby uczynić niektóre części czysto analogowymi ”.

Magistrala może być tylko jednym przewodem, w którym różne poziomy napięcia zostaną później przetłumaczone na bity za pomocą ADC.

Po prostu trochę się pobawiłem, doszedłem tak daleko, że teoretycznie można obliczyć liczby Fibonacciego:

wprowadź opis zdjęcia tutaj
Ryc. 1, mała wersja demonstracyjna komputera hybrydowego obliczającego pierwsze liczby Fibonacciego

Link do symulatora.

W powyższym gifie wychodzę poza zakres napięcia, więc łatwo jest zobaczyć liczby Fibonacciego, w rzeczywistości po prostu użyłbym 250 mV = binarny 1 (LSB przy „ustawionych wartościach”), a następnie pozwoliłbym mu rozprzestrzeniać się przez DRAM, który przechowuje 4 bity na kondensator.

Ważną częścią do obejrzenia w gifie jest wyjście wzmacniacza operacyjnego po prawej stronie tekstu „a + b”, pokazuje on liczby Fibonacciego.

Pomiędzy każdą operacją mierzyłbym odpowiedź za pomocą ADC, a następnie DAC. Więc gdybym odczytał 1,1 V, wówczas przetwornik cyfrowo-analogowy zamieniłby go w 1,0 V, który następnie zostałby zapisany w pamięci DRAM. A potem co X zegara cała pamięć DRAM musiałaby przejść przez kwantyzator, aby upewnić się, że kondensator nie odpłynie .

ALU jest w stanie zrobić tylko +, - i średnią. Myślałem o pomnożeniu i zatrzymałem się. Wcześniej tworzyłem i widziałem mnożniki oparte na diodach, ale nie chcę ich używać, ponieważ diody muszą być dopasowane. Wolę używać rezystorów, które mogę przyciąć potencjometrem. W każdym razie wymyśliłem hybrydowy multiplikator, w połowie analogowy, w połowie cyfrowy.

Więc zrobiłem pierwszy z identycznymi rezystorami wszędzie.

wprowadź opis zdjęcia tutaj
Ryc. 2, naiwny mnożnik między liczbami cyfrowymi a wartościami analogowymi. Wartość cyfrowa jest przesunięta o 1.

Które następnie przekształciłem w to z wagami binarnymi:

wprowadź opis zdjęcia tutaj
Ryc. 3, naiwny mnożnik między liczbami cyfrowymi ważonymi binarnie a wartościami analogowymi. Wartość cyfrowa jest przesunięta o 1.

Przypomniało mi to drabiny R2 / R, ale nie mogłem zmusić ich do współpracy ze wzmacniaczem operacyjnym.

Myślałem jednak o tym, jak działają drabiny R2 / R, i przypomniałem sobie, że ich moc wyjściowa jest mnożona przez źródło napięcia. W końcu wymyśliłem ten projekt:

wprowadź opis zdjęcia tutaj
Rysunek 4, Mnożnik oparty na R2 / R między liczbami cyfrowymi ważonymi binarnie a wartościami analogowymi

Podoba mi się, jedynym problemem jest jednak to, że magistrala jest analogowa, tylko jeden przewód. Więc jeśli jestem zmuszony użyć rozwiązania z rysunku 4 powyżej, to jestem zmuszony użyć innego ADC w obszarze mnożenia hybrydowego procesora. Nie mogę ponownie użyć tego w obszarze kwantyzatora.

Czas na pytanie:

Jak mam zrobić multiplikator, który pobiera dwa wejścia analogowe?

  • I nie chcą rozwiązanie, które opiera się na 3 i 4 diody że op-amps , ponieważ nie można przycinać diody. Wierzę, że jeśli będą niedopasowane, odpowiedzą na to pytanie o ponad 250 mV. Nie próbowałem tego w prawdziwym świecie.
  • Próbowałem multiplikatora opartego na MOS w linku dosłownie o cal powyżej tego słowa, ale nie wiem, czy jestem głupi. Nie mogę zmusić go do działania w symulatorze. Zobacz gif poniżej na temat niepowodzenia implementacji MOS. Lub kliknij ten link w celu przeprowadzenia symulacji.
  • I nie chcą rzucać mikrokontrolera na problem.
  • I nie chcemy korzystać z silnikiem, który obraca się i wykorzystuje niektóre shenanigans.
  • mi-tRdo
  • Precyzja nie musi być idealna, obecnie jest to tylko 4 bity na kondensator, co daje każdy poziom V, jeśli VDD wynosi 4 V. Chociaż w przyszłości byłoby to fajnie jest przechowywać 8 bitów na kondensator.42)4=0,25
  • Po zakończeniu mnożenia zostanie ono przeniesione do kwantyzatora, aby upewnić się, że wartość jest możliwie najbliższa wartości binarnej. Tak małe błędy są w porządku.

Oto gif, który pokazuje moją porażkę w próbie stworzenia systemu opartego na MOS:

wprowadź opis zdjęcia tutaj
Ryc. 5, skopiowałem schemat z linku wiki powyżej, ale nie działa w symulatorze.

Gdyby zadziałało, to powinienem był gdzieś zobaczyć wartość 1 V, gdy zmieniłem napięcie odniesienia z 5 V na -5 V.

Harry Svensson
źródło
1
Gdy pierwszy raz zobaczyłem analogowy multiplikator, używał zestawu długich ogonów: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart
2
czy komórka Gilberta działa aż do DC? Myślę, że jest używany do miksowania RF
Vladimir Cravero
1
@VladimirCravero Komórka Gilberta jest w zasadzie multiplikatorem - pomyśl o tym, jeśli pomnożysz dwa sygnały, jeden na f1 i jeden na f2, otrzymasz wyjście na f1-f2 i f1 + f2, co robi mikser. Z tego powodu są również używane do wzmacniaczy o zmiennym wzmocnieniu - jeden sygnał będzie stały (ustawienie wzmocnienia), a drugi będzie tym, co chcesz wzmocnić.
Joren Vaes,

Odpowiedzi:

5

Jeśli chcesz zbudować analogowy multiplikator, który jest trochę nie na uboczu, zastanów się, co się stanie, gdy doprowadzisz sygnał analogowy przez przełącznik analogowy, ale kontroluj przełącznik analogowy za pomocą PWM z wysoką częstotliwością (znacznie powyżej NYQ, aby stworzyć życie łatwiej).

Jeżeli PWM ma 50% odstępu między znakami, wówczas sygnał analogowy pasma podstawowego jest tłumiony o połowę. Oczywiście należy użyć filtra odzyskiwania, aby usunąć artefakty przełączania. Ale za pomocą tej techniki można modulować amplitudę sygnału analogowego, zmieniając cykl pracy PWM: -

wprowadź opis zdjęcia tutaj

Możesz także przekształcić go w multiplikator 4 kwadrantów. Jedno wejście analogowe steruje modulatorem szerokości impulsu. Drugie wejście analogowe jest przełączane.

Tylko myśl na wypadek, gdybyś był zainteresowany.

Więcej informacji tutaj

Andy aka
źródło
To bardzo ciekawe podejście!
Joren Vaes,
1
Hmm, stosując PWM, gdzie amplituda wynosi jedno napięcie, a cykl roboczy to drugie napięcie względne , a następnie filtrowane LP. To nie jest zły pomysł.
Harry Svensson,
1
Jest stosowany w niektórych radiotelefonach jako modulatory, a w LVDT jako demodulacja pozycji. Zastosowałem jeden jako demodulator I i Q w czułym wykrywaczu metalu.
Andy alias
4

Te rzeczy istnieją - urządzenia analogowe (kiedyś?) Mają kilka układów scalonych multiplikatora, które można (można?) Kupić. Mają też ten znakomity przypis, który zdecydowanie sugeruję przeczytać.

V.OUT.(t)=V.jaN.,1(t)V.jaN.,2)(t)V.jaN.,1V.jaN.,2)

Joren Vaes
źródło
1
Nadal możesz uzyskać mnożniki analogowe. Uważam, że digikey ma nawet dla nich całą kategorię produktów.
Palenisko
2
Jednak ogniwo Gilberta zależy krytycznie od dopasowania tranzystora (co jest stosunkowo łatwe, gdy tranzystory są częścią jednej matrycy). OP odrzucił użycie obwodu, który polega na dopasowaniu tranzystorów, więc nie jestem pewien, czy to dobra odpowiedź.
WhatRoughBeast
1
AD633 jest multiplikatorem 4-kwadrantowym, który wytwarza (X1-X2) (Y1-Y2) / 10 V + Z. Niezbyt tani.
Spehro Pefhany
3

Przedstawiam to tutaj jako realną odpowiedź dla przyszłych czytelników.


Po przeczytaniu odpowiedzi Jorena zdałem sobie sprawę, że wiele multiplikatorów analogowych polega na dopasowywaniu komponentów. Pomyślałem więc, dlaczego nie po prostu ponownie użyć komponentów, aby wszędzie ten sam komponent był używany? W ten sposób automatycznie dopasuję wszystko.

Spojrzałem więc na typowy multiplikator diodowy i zobaczyłem, że anody wszystkich diod są zawsze podłączone do wejścia (-) wzmacniacza operacyjnego. To samo dotyczy jednego styku opornika 1 kΩ.

wprowadź opis zdjęcia tutaj

Link do symulacji.

Na powyższym obrazku oblicza się mnożenie 2,25 × 3, co daje 6,75. To samo mnożenie odbywa się w ... potworności poniżej.

„Wartość dla jednego” to napięcie odniesienia dla jednego. Więc jeśli wynosi 0,1 V, a V1 = V2 = 1 wolt. Wtedy odpowiedź będzie wynosić 10 V, co przekłada się na liczbę 100, jeśli 0,1 V wynosi 1.

Postanowiłem więc zmiksować katodę i drugi pin rezystora 1 kΩ i voilà, jest ładny logarytm i funkcja wykładnicza, które są dopasowane. Możesz zobaczyć w gif poniżej.

wprowadź opis zdjęcia tutaj

Link do symulacji.

Gif jest trochę ziarnisty, co ma na celu zmniejszenie o 8 MB do 2 MB. Również gif jest przyspieszany 2x, 28 sekund zamiast 55.

Wiem, że mówi „log (x) w podstawie y” i „pow (y, x)”, co nie jest prawdą. Myliłem się z napięciem odniesienia. To po prostu log i pow z losową bazą. Sprytni matematycy będą wiedzieć, że nie ma znaczenia, jaka jest baza, możesz przekonwertować dowolny dziennik na dowolny inny.

Liczba 6,7 ​​jest pokazana na końcu na wyjściu prawego dolnego wzmacniacza operacyjnego. CircuitJS obcina 6,75 do 6,7, gdy liczby są prezentowane bez najechania myszką. Umieszczenie myszy powyżej pokazało 6,69 V, więc błąd 60 mV, który jest mniejszy niż 250 mV i dlatego jest akceptowalny. Według ... nie najlepszy symulator.


Po przeczytaniu odpowiedzi Andy'ego Aki nie jestem pewien, czy inna odpowiedź może ją pokonać. Za kilka dni zaakceptuję jego odpowiedź, jeśli żadna inna odpowiedź jej nie przebije. Nie wierzę, że moja odpowiedź przewyższa odpowiedź Andy'ego.

Harry Svensson
źródło
1

Ostatnio natknąłem się na obwód „Parabolic Multiplier” w komputerze analogowym z 1968 roku. Aby pomnożyć A i B, zaczynasz od dwóch wzmacniaczy operacyjnych, aby obliczyć A + B i AB. Następnie potrzebujesz generatora funkcji, który produkuje X ^ 2 (tj. Parabola). Za pomocą dwóch generatorów funkcji obliczasz (A + B) ^ 2 i (AB) ^ 2. Dwa wyniki odejmujesz za pomocą wzmacniacza operacyjnego, co daje 4 × A × B, co po skalowaniu daje A × B według potrzeb.

Jak uzyskać funkcję X ^ 2? Dowolną funkcję wypukłą (taką jak X ^ 2) można aproksymować za pomocą sieci rezystor-dioda. Chodzi o to, że każda dioda zapala się przy określonym napięciu wejściowym (kontrolowanym przez górne rezystory) i dostarcza prąd (kontrolowany przez dolne rezystory) do wyjścia. Wynikiem jest częściowa funkcja liniowa. (Poniższe wartości składników są dowolne; nie wypracowałem wartości dla X ^ 2). Generator rzeczywistych funkcji może mieć kilkanaście diod dla większej dokładności. Generator funkcji może być podłączony przewodowo lub może mieć potencjometry, aby użytkownik mógł ustawić dowolną żądaną funkcję.

schematyczny

symulacja tego obwodu - Schemat utworzony przy użyciu CircuitLab

Mnożnik paraboliczny został uznany za bardzo dokładny sposób wykonywania mnożenia analogowego. Krótka wzmianka znajduje się w podręczniku komputera analogowego Dornier 240 . (W języku niemieckim patrz Der Parabel-Multiplizierer w sekcji 9.)

Ken Shirriff
źródło