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:
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.
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:
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:
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.
- 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.
- 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:
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.