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

16

Estoy empezando en electrónica y ya estoy fascinado. Habiendo jugado con un Arduino estos últimos días, soy consciente de que binario es una representación de diferentes voltajes, como + 5V que representan 1 y GND que representan 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 cualquier lugar. ¿Alguien puede compartir sus conocimientos o indicarme un lugar / buen libro que describa cómo funciona esto?

    
pregunta Matt

6 respuestas

18

Quiero reiterar 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 binarios 1 y 0 en nuestras cabezas cuando formamos un modelo simplificado en nuestra mente acerca de cómo funciona el circuito.

    
respondido por el The Photon
10

Realmente no hay una "conversión" que tenga lugar. Los 1s y 0s binarios 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 cuales esto se hace, pero probablemente más de lo que le interesa bucear en esto desde el principio.

Para entender lo que está sucediendo en la lógica, probablemente es mejor mirar el transistor. Un transistor puede usarse para muchas cosas, pero a un nivel simple puede tratarlo 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, es controlado por el cambio en la corriente. Puede tratar la luz encendida como un 1 y la luz apagada es 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 a tu pregunta. Si necesita más explicación, estaré dispuesto a agregar más detalles, pero no quiero abrumarlo.

    
respondido por el Kellenjb
10

La respuesta corta es que no se "convierte", los voltajes son el binario (o una representación de él). Al igual que si escribes un número en un papel, las marcas son una representación del número, o si cuentas 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 el decimal (base-10) tiene 10 símbolos (0123456789), el binario (base-2) solo tiene dos (01)

La secuencia 10 en cualquier base significa la base a 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 decimal usando electrónica sería posible pero complicado, por lo que eligieron un binario que puede representarse con un simple 0 y 1 (u on / off)
Hubo variaciones en esto, como los sistemas ternarios (3 estados) y por supuesto, computación analógica . Antes de los transistores, había máquinas de tarjetas perforadas mecánicas (Google sabe bastante, algunas lecturas muy interesantes si tiene tiempo)
Las primeras computadoras digitales binarias se hicieron con interruptores reales (relés electrónicos). El Zuse Z3 (1941) es un ejemplo:

Despuésdeesto,seusarontubosdevacíoenlugarderelés(podríancambiarmásrápidosinpartesmecánicasenmovimiento),loquerealizóelcambioenlugarderelés.El ENIAC es un ejemplo de una computadora antigua hecha con tubos de vacío.

Luego, en los años 60 llegaron los transistores y poco después de los circuitos integrados. Los transistores realizan la misma función que los relés / válvulas tenían en las 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 binarios de computadoras 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 O, entonces puedes combinarlos todos para hacer cosas más complejas.
Ya que todos estos circuitos binarios son solo interruptores en su posición 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 (no importa qué tipo son)
Un 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, todo 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á como un "registro".

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

Este sitio no parece ser tan malo para empezar.

    
respondido por el Oli Glaser
0

El programa que está ejecutando está usando voltajes que representan unos y ceros. Todo lo relacionado con esa parte digital son voltajes cerca del suelo o cerca del voltaje de alimentación (5 V en su ejemplo). Cuando carga un registro de procesador con 0xFF, digamos que está creando 8 señales separadas de 5 voltios 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 5 V en el procesador, provocan la creación de otras señales de 5 V que están conectadas a los pines externos del dispositivo. .

    
respondido por el old_timer
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 normalmente se implementa la lógica binaria es mediante el uso de la tecnología CMOS ( enlace ), en la que hay dos transistores MOS. configurar en un par complementario para formar una puerta CMOS. Sin embargo, hay otras implementaciones electrónicas de lógica binaria, que utilizan TTL ( enlace –transistor_logic), por ejemplo, o relés. Pero puede usar cualquier cosa realmente, papel, cabras robot de papel: enlace . La implementación electrónica de CMOS resulta ser eficiente y práctica.

Fuera de estas simples puertas CMOS, puede construir puertas lógicas más complicadas: NAND y NOR, 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, puedes construir una ALU, hasta un microprocesador completo.

Si desea obtener más información, puede leer un libro sobre lógica digital, que me pertenece y me gusta este:

enlace

Una buena forma práctica de comprender cómo se construye una CPU es compilarla usted mismo, utilizando VHDL y un FPGA. Puede obtener tableros de desarrollo de FPGA baratos y el software es generalmente gratuito (para una licencia restringida). Tengo algunos por Digilent que son bastante asequibles:

enlace

    
respondido por el wesen
-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 la otra. El siguiente bit más significativo se calcula dividiendo aún más la mitad en dos y así sucesivamente hasta que se hayan calculado todos los bits.

Por lo tanto, lo binario es simplemente 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()));
}
    
respondido por el Samuel Duclos

Lea otras preguntas en las etiquetas