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 1
y 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?
Respuestas:
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.
fuente
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.
fuente
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:
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.
fuente
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 .
fuente
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/
fuente
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:
fuente