¿Es posible implementar una rotación de bits utilizando una señal analógica?

-2

¿Es posible implementar la operación de rotación bit a bit usando una señal analógica siguiendo el patrón de abajo? El diseño no debe implementarse utilizando un modelo ADC-shifter-DAC. Esto es solo para información, no para un circuito práctico.

Entrada de 13 voltios (que representa 5 bits de 01101) - > Girar a la izquierda por 3 dispositivos - > Salida de 11 voltios (01011)

    
pregunta Tod Winkley

4 respuestas

2

Aquí hay un esquema que cumple con la letra de su solicitud. Usted dijo que ADC - > cambio de bits - > DAC es inaceptable, por lo que puede hacer algo como ADC - > tabla de consulta - > mux analógico en su lugar:

simular este circuito : esquema creado usando CircuitLab

La cadena de resistencias y los comparadores forman esencialmente un conversión directa ADC. Las compuertas AND determinan cuál es el "más alto" de los comparadores activados, y habilitan un interruptor NFET correspondiente. Suponga que el nivel alto de salida de la compuerta AND es más alto que cualquiera de los voltajes de salida requeridos.

V1, V2, ... Vn, podría generarse por cualquier medio que desee. Sería posible otra cadena divisoria de resistencia (con los taps tomados en el orden correspondiente a la operación de cambio de bits que desea hacer en lugar de en orden creciente).

Dependiendo de la carga, es posible que desee almacenar en búfer la salida.

    
respondido por el The Photon
0

La rotación lógica se puede reemplazar parcialmente por multiplicación y división por 2.

Un modelo de dominio analógico simple sería un amplificador sin inversión con ganancia 2: girar a la izquierda y divisor de voltaje con resistencias iguales: girar a la derecha.

El único problema que no puedo imaginar cómo resolverlo en este modelo es el desbordamiento: cuando un bit se desplaza al extremo izquierdo y luego aparece en el extremo derecho. Por lo tanto, este modelo es más parecido a una operación de "cambio", no a una rotación real.

    
respondido por el johnfound
0

Sí:

x rot n = x >> n | x << (m-n) 

m = ancho de la palabra en bits (constante; por ejemplo, = 5)
n = número de bits para rotar (constante; por ejemplo, = 3)

  • Bitwise shift right es equivalente a la división entera por potencias de 2 (p. ej., 8; lo que se puede hacer fácilmente en forma analógica mediante un divisor de voltaje; la parte más difícil es la discusión intrínseca, es decir, el redondeo al el siguiente entero más bajo; si necesita un truncamiento depende de si permite voltajes de salida entre pasos de enteros o no)
  • Bitwise shift left es equivalente a la multiplicación de enteros por potencias de 2 (p. ej., 4; lo que se puede hacer fácilmente en forma analógica. EDIT: similar al punto anterior, además necesita "cortar" algo, es decir, una operación de módulo 2 ^ m es necesaria).
  • Bitwise rotación se puede realizar combinando ambas operaciones. Esta combinación se puede lograr agregando ambas señales analógicas.

EDITAR:
El truncamiento se puede realizar mediante algún diodo o red de diodo Z.
El módulo se puede hacer restando una señal truncada de la señal original.

    
respondido por el Curd
0

Conceptualmente, se podría hacer un desplazamiento a la izquierda de un solo bit analógico mediante el uso de un circuito que multiplicaría un voltaje de entrada exactamente por dos, verificando si excede un cierto umbral y restando esa cantidad de voltaje si lo hace. Por ejemplo, si un voltaje es una cantidad en el rango de 0 a 1 voltio, uno terminaría restando un voltio si la entrada fuera de 0.5 voltios o más. Si la cantidad que se resta se reduce por cualquier voltaje que se considere "uno lsb", el desplazamiento a la izquierda de un solo bit se puede convertir en una rotación a la izquierda de un solo bit. Eso se puede repetir para rotar una señal en otras cantidades.

En teoría, uno usa este enfoque para producir un ADC de "precisión infinita" simplemente al desplazar una señal a la izquierda y observar los bits que caen. También se puede hacer un "cambio a la derecha del transporte" dividiendo una señal por dos y agregando la mitad del valor de escala completa si debería haber un transporte, y usarlo para obtener un DAC de "precisión infinita" [tenga en cuenta que el ADC suministre los datos MSB primero, mientras que el DAC requeriría primero los datos LSB). Es posible que ese enfoque sea realmente práctico para ciertas aplicaciones de ADC o DAC, pero las imprecisiones en el escalado o la adición de señales se acumularían a través de operaciones sucesivas, de modo que el circuito resultante probablemente funcione menos que los diseños más convencionales. Si una aplicación midiera las imperfecciones y se adaptara en consecuencia, tal compensación podría hacer posible lograr un rendimiento competitivo con otras implementaciones de ADC / DAC, pero no sé si alguien se ha esforzado por hacerlo.

    
respondido por el supercat

Lea otras preguntas en las etiquetas