Moltiplicazione analogica analogica, parte di una CPU ibrida (per divertimento)


10

Versione breve: come si crea un moltiplicatore analogico che accetta due ingressi CC analogici?

Versione lunga:


Ho fatto un commento raccomandando i video di Ben Eaters per un'altra domanda, mentre facendo così ho finito per guardarmi (di nuovo) alcuni e pensare a me stesso " hmmm ... Mi chiedo se sarebbe più facile rendere alcune parti puramente analogiche ".

Il bus potrebbe essere solo un filo in cui diversi livelli di tensione sarebbero successivamente tradotti in bit con un ADC.

Solo un po 'in giro sono arrivato così lontano che teoricamente può calcolare i numeri di Fibonacci:

inserisci qui la descrizione dell'immagine
Figura 1, piccola demo di computer ibrido che calcola i primi numeri di fibonacci

Collegamento al simulatore.

Nella gif sopra esco dall'intervallo di tensione, quindi è facile vedere i numeri di fibonacci, in realtà userei solo 250 mV = binario 1 (l'LSB ai "valori impostati") e poi lo lascerò propagare attraverso il DRAM che contiene 4 bit per condensatore.

La parte importante da guardare nella gif è l'output dell'op-amp a destra del testo "a + b", mostra i numeri di Fibonacci.

Tra ogni operazione vorrei quantificare la risposta utilizzando un ADC seguito da un DAC. Quindi, se leggessi 1.1V, il DAC lo trasformerebbe in 1.0 V che successivamente verrebbe memorizzato nella DRAM. E poi una volta ogni X clock l'intera DRAM dovrebbe passare attraverso il quantizzatore per assicurarsi che il condensatore non fluttui via .

L'ALU può fare solo +, - e media. Stavo pensando di fare la moltiplicazione e mi sono fermato. Ho già realizzato e visto moltiplicatori basati su diodi, ma non voglio usarli perché i diodi devono essere abbinati. Preferisco usare resistori che posso tagliare con un potenziometro. Comunque, ho pensato a un moltiplicatore ibrido, metà analogico e metà digitale.

Quindi ho fatto il primo con resistori identici ovunque.

inserisci qui la descrizione dell'immagine
Figura 2, ingenuo moltiplicatore tra numeri digitali e valori analogici. Il valore digitale è sfalsato di 1.

Che poi ho trasformato in questo con pesi binari:

inserisci qui la descrizione dell'immagine
Figura 3, ingenuo moltiplicatore tra numeri digitali ponderati binari e valori analogici. Il valore digitale è sfalsato di 1.

Questo mi ha ricordato le scale R2 / R, ma non sono riuscito a farle funzionare con l'amplificatore operazionale.

Tuttavia, ho pensato a come funzionavano le scale R2 / R e mi sono ricordato che la loro uscita è moltiplicata per la loro sorgente di tensione. Quindi ho finalmente pensato a questo design:

inserisci qui la descrizione dell'immagine
Figura 4, moltiplicatore basato su R2 / R tra numeri digitali ponderati binari e valori analogici

Mi piace, l'unico problema è che il bus è analogico, solo un filo. Quindi, se sono costretto a usare la soluzione nella figura 4 sopra, allora sono costretto a usare un altro ADC nell'area di moltiplicazione della CPU ibrida. Non riesco a riutilizzare quello nell'area del quantizzatore.

Tempo per la domanda:

Come devo fare un moltiplicatore che accetta due ingressi analogici?

  • Io non voglio che la soluzione che si basa su 3 diodi che e 4 op-amp , perché non si può diodi di assetto. La mia convinzione è che se non corrispondono, daranno una risposta disattivata di oltre 250 mV. Non l'ho provato nel mondo reale.
  • Ho provato il moltiplicatore basato sul MOS nel link letteralmente un pollice sopra questa parola, ma non so se sono stupido. Non riesco a farlo funzionare nel simulatore. Vedi GIF sotto per il fallimento dell'implementazione MOS. Oppure fai clic su questo link per la simulazione.
  • Io non voglio gettare un microcontrollore al problema.
  • Io non voglio usare un motore che ruota e utilizza alcuni imbrogli.
  • Stavo pensando di usare un filtro RC in una formazione passa-basso per afferrare , caricare e scaricare e usare una rampa + misurare il tempo impiegato dal condensatore per raggiungere valore. È la stessa idea del diodo, è solo molto più lento, non che ci tenga davvero. Anche se posso usare un resistore per tagliare la costante RC. Preferirei non usare questa soluzione perché mi sembra ... come se la stia risolvendo nel modo sbagliato.etRC
  • La precisione non deve essere perfetta, in questo momento sono solo 4 bit per condensatore, questo fornisce ogni livello V se VDD è 4 V. Anche se in futuro, sarebbe divertente memorizzare 8 bit per condensatore.424=0.25
  • Dopo che la moltiplicazione è stata eseguita, verrà portato al quantizzatore per assicurarsi che il valore sia il più vicino possibile a un valore binario. Quindi piccoli errori vanno bene.

Ecco la gif che mostra il mio fallimento nel tentativo di rendere quello basato su MOS:

inserisci qui la descrizione dell'immagine
Figura 5, ho copiato lo schema dal link wiki sopra, ma non funziona nel simulatore.

Se avrebbe funzionato, avrei dovuto vedere il valore 1 V da qualche parte mentre cambiavo la tensione del riferimento da 5 V a -5 V.


1
La prima volta che ho visto un moltiplicatore analogico, stava usando una serie di lunghe code: analoglib.net/wordpress/wp-content/uploads/2013/10/image5.png
Oldfart

2
la cella Gilbert funziona fino a DC? Credo che sia usato per mescolare RF
Vladimir Cravero,

1
@VladimirCravero Una cellula gilbert è in sostanza un moltiplicatore - pensaci, se moltiplichi due segnali, uno in f1 e uno in f2, ottieni un output in f1-f2 e f1 + f2, che è ciò che fa un mixer. Per questo motivo, vengono utilizzati anche per amplificatori a guadagno variabile: un segnale sarà una costante (impostazione del guadagno), il secondo sarà la cosa che si desidera amplificare.
Joren Vaes,

Risposte:


5

Se vuoi costruire un moltiplicatore analogico che sia un po 'fuori pista, considera cosa succede quando dai un segnale analogico a un segnale analogico ma controlli l'interruttore analogico con PWM ad alta frequenza (significativamente sopra nyquist per rendere la vita Più facile).

Se il PWM ha uno spazio del segno del 50%, il segnale analogico in banda base viene attenuato della metà. Chiaramente è necessario utilizzare un filtro di recupero per rimuovere gli artefatti di commutazione. Ma con questa tecnica è possibile modulare l'ampiezza di un segnale analogico variando il ciclo di lavoro PWM: -

inserisci qui la descrizione dell'immagine

Puoi anche trasformarlo in un moltiplicatore a 4 quadranti. Un ingresso analogico controlla un modulatore di larghezza di impulso. L'altro ingresso analogico viene commutato.

Solo un pensiero nel caso ti interessi.

Maggiori dettagli qui


Questo è un approccio molto interessante!
Joren Vaes,

1
Hmm, usando PWM dove l'ampiezza è una tensione, e il duty cycle è l'altra tensione relativa , e quindi filtrato LP. In realtà non è una cattiva idea.
Harry Svensson,

1
È usato in alcune radio come modulatori e in LVDT come demodulazione di posizione. Ne ho applicato uno come demodulatore I e Q anche in un metal detector sensibile.
Andy aka

4

Queste cose esistono: i dispositivi analogici (che erano soliti usare?) Hanno alcuni circuiti integrati moltiplicatori che puoi (potresti?) Acquistare. Hanno anche questa eccellente nota che consiglio vivamente di leggere.

Uno dei classici blocchi di costruzione con design analogico è la cella di Gilbert , che prende il nome da Barrie Gilbert. Fa quello che cerchi (almeno, se capisco correttamente la tua domanda). A causa di questa capacità di moltiplicazione, è molto spesso usato come componente negli amplificatori a guadagno variabile. Pensaci, se hai un building block che ha una relazione input-output data come e imposti come segnale che vuoi amplificare, devi solo cambiare per controllare il tuo guadagno. Viene anche usato come mixer per lo stesso motivo.V I N , 1 V I N , 2VOUT(t)=VIN,1(t)VIN,2(t)VIN,1VIN,2


1
Puoi ancora ottenere quei moltiplicatori analogici. Credo che digikey abbia anche un'intera categoria di prodotti per loro.
Hearth

2
Tuttavia, una cella di Gilbert dipende in modo critico dalla corrispondenza dei transistor (che è relativamente facile quando i transistor fanno parte di un singolo die). L'OP ha rifiutato di usare un circuito che si basa sulla corrispondenza dei transistor, quindi non sono sicuro che questa sia una buona risposta.
WhatRoughBeast

1
AD633 è un moltiplicatore a 4 quadranti che emette (X1-X2) (Y1-Y2) / 10V + Z. Non particolarmente economico.
Spehro Pefhany,

3

Lo sto solo mettendo qui come una valida risposta per i futuri lettori.


Dopo aver letto la risposta di Joren mi sono reso conto che molti moltiplicatori analogici si basano su componenti corrispondenti. Quindi ho pensato a me stesso, perché non riutilizzare solo i componenti in modo che lo stesso componente sia usato ovunque? In questo modo abbinerò automaticamente tutto.

Quindi ho cercato il tipico moltiplicatore basato su diodi e ho visto che gli anodi di tutti i diodi sono sempre collegati all'ingresso (-) dell'op-amp. Lo stesso vale per un pin della resistenza da 1 kΩ.

inserisci qui la descrizione dell'immagine

Collegamento alla simulazione.

Nell'immagine sopra, viene calcolata la moltiplicazione 2,25 × 3 che risulta in 6,75. La stessa moltiplicazione è fatta nella ... mostruosità sotto.

Il "Valore per uno" è il riferimento di tensione per uno. Quindi se è 0,1 V e V1 = V2 = 1 volt. Quindi la risposta sarà 10 V che si traduce nel numero 100 se 0,1 V è 1.

Così ho deciso di combinare il catodo e l'altro pin del resistore da 1 kΩ e voilà, c'è un bel logaritmo e una funzione esponenziale che è abbinata. Puoi vedere nella gif qui sotto.

inserisci qui la descrizione dell'immagine

Collegamento alla simulazione.

La gif è un po 'sgranata, che è apposta per ridimensionare 8 MB fino a 2 MB. Anche la gif è velocizzata 2 volte, 28 secondi anziché 55.

So che dice "log (x) in base y" e "pow (y, x)" che non è vero. Mi sono confuso con il riferimento di tensione. È solo log and pow con una base casuale. I matematici intelligenti sapranno che non importa quale sia la base, puoi convertire qualsiasi registro in qualsiasi altro registro.

Il numero 6.7 è mostrato alla fine all'uscita dell'op-amp in basso a destra. CircuitJS tronca da 6,75 a 6,7 ​​quando presenta i numeri senza passare il mouse. Posizionare il mouse sopra ha mostrato 6,69 V, quindi un errore di 60 mV che è inferiore a 250 mV e quindi accettabile. Secondo .. non il miglior simulatore.


Dopo aver letto la risposta di Andy Aka, non sono sicuro che un'altra risposta possa battere. Accetterò la sua tra un paio di giorni se nessun'altra risposta la batterà. Non credo che la mia risposta superi Andy's.


1

Di recente mi sono imbattuto nel circuito del "moltiplicatore parabolico" in un computer analogico del 1968. Per moltiplicare A e B, si inizia con due amplificatori operazionali per calcolare A + B e AB. Successivamente, è necessario un generatore di funzioni che produce X ^ 2 (cioè una parabola). Con due generatori di funzioni, si calcola (A + B) ^ 2 e (AB) ^ 2. Si sottraggono i due risultati con un amplificatore operazionale, ottenendo 4 × A × B, che dopo il ridimensionamento fornisce A × B come desiderato.

Come si ottiene la funzione X ^ 2? Una funzione convessa arbitraria (come X ^ 2) può essere approssimata con una rete di resistori-diodi. L'idea è che ciascun diodo si accenderà a una particolare tensione di ingresso (controllata dai resistori superiori) e fornirà una corrente (controllata dai resistori inferiori) all'uscita. Il risultato è una funzione lineare a tratti. (I valori dei componenti seguenti sono arbitrari; non ho elaborato i valori per X ^ 2.) Un vero generatore di funzioni potrebbe avere una dozzina di diodi per una maggiore precisione. Un generatore di funzioni potrebbe essere cablato o disporre di potenziometri in modo che l'utente possa impostarlo su qualsiasi funzione desiderata.

schematico

simula questo circuito - Schema creato usando CircuitLab

Il moltiplicatore parabolico è stato considerato un modo di alta precisione per eseguire la moltiplicazione analogica. Una breve menzione è nel manuale del computer analogico Dornier 240 . (In tedesco, vedi Der Parabel-Multiplizierer nella sezione 9.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.