¿Cómo se convierte el binario en señales eléctricas?


16

Estoy empezando en electrónica y ya estoy fascinado. Después de haber jugado con un Arduino en los últimos días, soy consciente de que el binario es una representación de diferentes voltajes, como la representación de + 5V 1y la representación de GND 0.

He estado tratando de descubrir cómo, a nivel físico, el microcontrolador convierte el binario a estos voltajes. Parece que no puedo encontrar una descripción en ningún lado. ¿Alguien puede compartir sus conocimientos o señalarme un lugar / buen libro que describa cómo funciona esto?


1
No recuerdo cuál era, pero mira este video. Buen contenido
Abdullah Kahraman

2
En realidad, el microcontrolador no convierte el binario a los voltajes variables. Binario es el voltaje. A + 5V se denota como "ALTO" o "1". Y 0V se denota como "BAJO" o "0". Ve y echa un vistazo a los interruptores electrónicos, o más en detalle; MOSFET
Abdullah Kahraman

NO está preguntando sobre la conversión de "analógico a digital" o "digital a analógico", ¿verdad?
Abdullah Kahraman

3
Podría ser útil pensarlo al revés. 'Binario' es una especie de entidad matemática simbólica con la que a los humanos nos gusta razonar. Los circuitos lógicos pueden representar binarios con diferentes voltajes. Diseñamos circuitos lógicos para que lo que hacen los circuitos con los niveles de voltaje tenga un sentido lógico consistente cuando los humanos interpretemos esos voltajes como números binarios.
JustJeff

1
@abdullahkahraman Tienes razón, no creo que esté hablando de DAC, como tú dices. Gracias por el enlace al video, es muy informativo. Y de esa manera, también me presentaron al sitio MIT OCW, que parece ser un gran recurso para el aprendizaje. ¡Gracias!
Matt

Respuestas:


18

Quiero replantear parte de la respuesta de KellenJB de una manera ligeramente diferente:

No hay conversión de 1 y 0 binarios a voltajes como 5 V y 0 V. El microcontrolador, o cualquier circuito físico, solo funciona con los voltajes.

Esos voltajes se "convierten" en 1 y 0 binarios en nuestras cabezas cuando formamos un modelo simplificado en nuestras mentes sobre cómo funciona el circuito.


2
Si. Sí, sí, y (oh sí) sí.
JustJeff

1
Y agregaría que para ser un 0, el voltaje solo necesita estar cerca de 0 o por debajo de un umbral (digamos <0.8v) y ser un 1 mayor que un umbral (digamos> 2.0v). Los umbrales difieren según la tecnología utilizada para construir el dispositivo y el voltaje de suministro operativo de 5v en su caso.
kenny

1
Gracias a todos. Entonces, una vez que una computadora está funcionando, ¿no hay una transferencia real del código de máquina binario? El código binario, cuando se carga como firmware, presumiblemente se almacena en la memoria, que cuando el procesador 'accede' a él responde con un ciclo de voltajes que corresponden al binario. (Espero que esto tenga sentido)
Matt

Para "cargarse", el código ya debe estar en alguna forma física: voltajes en un cable, las posiciones de algunas palancas (o teclas en un teclado), lo que sea. En la memoria, los bits se almacenan como acumulaciones de carga en un condensador ... que también genera un voltaje en el condensador.
El fotón

1
Mi punto de vista es que las formas en una pantalla o impresas en un pedazo de papel son solo luces o gotas de tinta, hasta que nuestras mentes las interpretan en el sentido de uno o cero. Imagine una letra impresa en un alfabeto que no conoce (por ejemplo, cirílico o tailandés). Es solo una gota de tinta hasta que aparece una persona rusa o tailandesa para interpretarlo y saber qué sonido representa. Pero esta distinción filosófica probablemente nos está sacando del tema.
The Photon

11

No hay realmente una "conversión" que tenga lugar. Los binarios 1s y 0s son solo una representación virtual de los voltajes subyacentes. De hecho, en muchos sistemas, un alto voltaje puede significar 0 mientras que un bajo voltaje significa 1. Hay algunas razones por las que esto se hace, pero probablemente más de lo que te gustaría sumergirte en esto desde el principio.

Para comprender lo que está sucediendo en la lógica, probablemente sea mejor mirar dentro del transistor. Un transistor puede usarse para muchas cosas, pero a un nivel simple puede tratarse como un interruptor. Conceptualmente, puede pensarlo como su interruptor de luz en la pared, pero en lugar de ser controlado moviendo físicamente el interruptor, está controlado por el cambio de corriente. Puede tratar la luz encendida como un 1 y la luz apagada como un 0. Ahora puede comenzar a combinar estos interruptores en diferentes conjuntos para crear diferentes elementos lógicos (como AND, OR, NOR, etc.).

Sé que mi respuesta no es horriblemente detallada, pero espero que responda tu pregunta. Si necesita más explicaciones, estaré dispuesto a agregar más detalles, pero no quiero abrumarlo.


Gracias a todos por las excelentes respuestas !! ¿Sería correcto pensar entonces, a un nivel simplista, el microprocesador funciona a una cierta velocidad de reloj y en cada ciclo envía un conjunto de instrucciones (voltaje relacionado con valores binarios?) A través de estos transistores, que actúan como puertas lógicas. ¿Y los transistores producen una salida relevante basada en la lógica combinada (y, o, NAND, etc.)?
Matt

1
Simplísticamente ... sí. Aquí hay muchas capas de abstracciones. Es difícil explicar todo lo que sucede aquí en una sola respuesta, ya que se necesitan muchas capas de abstracción antes de poder entender todo. Puede tomar fácilmente algunas clases de nivel universitario para enseñarlo todo. Puede tomar las cosas tal como están en la superficie o prepararse para mucho aprendizaje.
Kellenjb

Gracias @kellenjb, has sido de gran ayuda. ¡Me animo a aprender más!
Matt

10

La respuesta corta es que no "convierte", los voltajes son binarios (o una representación de ellos). Al igual que si escribe un número en un papel, las marcas son una representación del número, o si cuenta con un ábaco, las posiciones de piedra son una representación de un número.

Binario es un sistema numérico, al igual que decimal (u octal, hexadecimal, etc.)

Mientras que decimal (base-10) tiene 10 símbolos (0123456789) binario (base-2) solo tiene dos (01)

La secuencia 10 en cualquier base significa la base de la primera potencia, por lo que en decimal 10 significa 10 ^ 1 = 10, y en binario significa 2 ^ 1 = 2. Siguiendo, 100 en decimal significa 10 ^ 2 = 100, y en binario significa 2 ^ 2 = 4. Y así sucesivamente.

Representar el decimal usando la electrónica sería posible pero complicado, por lo que eligieron el binario que puede representarse por simple 0 y 1 (o encendido / apagado)
Hubo variaciones en esto, como los sistemas ternarios (3 estados) y, por supuesto, la computación analógica . Antes de los transistores, había máquinas de tarjetas perforadas mecánicas (google sabe mucho, algunas lecturas muy interesantes si tienes tiempo).
Las primeras computadoras digitales binarias se hicieron con interruptores reales (relés electrónicos). El Zuse Z3 (1941) es un ejemplo:

Zuse Z3

Después de esto, se usaron tubos de vacío en lugar de relés (podrían cambiar más rápido sin partes mecánicas móviles), que realizaron la conmutación en lugar de los relés. El ENIAC es un ejemplo de una computadora temprana hecha con tubos de vacío.

Luego, en los años 60, llegaron los transistores y poco después los circuitos integrados. Los transistores realizan la misma función que los relés / válvulas tenían en máquinas anteriores, pero eran mucho más pequeños, más rápidos y consumían menos energía.

La teoría real detrás de la forma básica en que funcionan los circuitos de computadora binarios no ha cambiado en absoluto, al igual que no hemos cambiado la forma en que manipulamos los números en matemáticas: los algoritmos mejoran pero las reglas básicas siguen siendo las mismas.

Entonces, si sabe cómo funciona el binario y tiene un circuito simple capaz de almacenar un 1 o 0 como dos niveles de voltaje diferentes (por ejemplo, 5V y 0v), y otros circuitos simples que pueden realizar funciones lógicas simples como AND y OR, entonces puedes combinarlos todos para hacer cosas más complejas.
Dado que todos estos circuitos binarios son solo interruptores en su forma más fundamental, puede lograr lo mismo con cualquier cosa que pueda alternar entre dos estados como mecánico / relé / válvula / transistor / ?.

Para dar un ejemplo de almacenamiento de un número en binario, digamos que tenemos 8 interruptores (de qué tipo no son importantes)
A 1 está representado por 5V y un 0 está representado por 0V.
Queremos almacenar el número 123.

En decimal es 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
En binario es 01111011 = (0 x 2 ^ 7) + (1 x 2 ^ 6) + (1 x 2 ^ 5) + (1 x 2 ^ 4) + (1 x 2 ^ 3) + (0 x 2 ^ 2) + (1 x 2 ^ 1) + (1 x 2 ^ 0)
Entonces todos lo que hacemos es configurar los interruptores 0,1,3,4,5,6 a 5V y los interruptores 7 y 2 a 0V. Esto "almacena" el número 123 en binario. Esta configuración se conocería como un "registro".

Si desea saber más acerca de cómo se combinan los interruptores para formar circuitos más complejos, obtenga un buen libro sobre lógica digital o pregunte en google.

Este sitio no parece ser tan malo para empezar.


0

El programa que está ejecutando utiliza voltajes que representan unos y ceros. Todo lo relacionado con esa parte digital son voltajes cerca de tierra o cerca del voltaje de alimentación (5V en su ejemplo). Cuando carga un registro de procesador con 0xFF, digamos que está creando 8 señales de 5 voltios separadas en algún lugar del chip. Cuando almacena ese valor de registro en un registro de control que está relacionado con los puertos de salida, los pines de salida en el dispositivo, las señales de 5V en el registro de los procesadores hacen que se creen otras señales de 5V que están conectadas a los pines externos del dispositivo .


0

Los voltajes son solo una forma de representar el binario. Es una conversión bastante eficiente y práctica que permite implementar la lógica binaria utilizando diferentes configuraciones de transistores.

La forma en que la lógica binaria generalmente se implementa electrónicamente es mediante el uso de la tecnología CMOS ( http://en.wikipedia.org/wiki/CMOS ), en la que dos transistores MOS se configuran en un par complementario para formar una puerta CMOS. Sin embargo, hay otras implementaciones electrónicas de lógica binaria, que utilizan TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) por ejemplo, o relés. Pero podría usar cualquier cosa realmente, papel, cabras robot de papel: http://www.robives.com/category/product_tags/logic_goats . La implementación electrónica de CMOS resulta ser eficiente y práctica.

A partir de estas puertas CMOS simples, puede construir puertas lógicas más complicadas: NAND y NOR, siendo la puerta estándar NO, son las básicas. De estos, puede construir todo lo que sea lógica binaria, un sumador, un archivo de registro, memoria. De estos, puede construir una ALU, hasta un microprocesador completo.

Si desea obtener más información, puede leer un libro sobre lógica digital, yo soy el propietario y me gusta este:

http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1

Una buena forma práctica de entender cómo se construye una CPU es simplemente construir una usted mismo, usando VHDL y un FPGA. Puede obtener placas de desarrollo FPGA baratas y el software suele ser gratuito (para una licencia restringida). Tengo algunos por digilent que son bastante asequibles:

http://www.digilentinc.com/


-3

En pocas palabras, en un rango dado (generalmente de 5 a 12 voltios), el bit más significativo es 0 en la primera mitad de ese rango y 1 en el otro. El siguiente bit más significativo se calcula dividiendo aún más esa mitad en dos y así sucesivamente hasta que se hayan calculado todos los bits.

Por lo tanto, el binario consiste en aumentar y disminuir los voltajes que se miden periódicamente.

Aquí hay un ejemplo simplificado. En el rango de 1V a 256V, traduzcamos (analógico) 137 a binario (numérico) usando pseudocódigo:

// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
    if (number > length) { return(ERROR); }
    function convert(var half, var binary) {
        if (half < 2) { return(binary); }
        elseif (number < half) {
            return(convert((half / 2), append(binary, 0)));
        } else {
            return(convert((half / 2), append(binary, 1)));
        }
    } return(convert((length / 2), list()));
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.