Estou apenas começando em eletrônica e já estou fascinado. Tendo tocado com um Arduino nos últimos dias, sei que o binário é uma representação de tensões diferentes - como + 5V representando 1
e GND representando 0
.
Eu tenho tentado descobrir como, em um nível físico, o microcontrolador converte o binário nessas tensões. Não consigo encontrar uma descrição em nenhum lugar. Alguém pode compartilhar seu conhecimento ou apontar-me para um lugar / bom livro que descreva como isso funciona?
Respostas:
Quero reformular parte da resposta do KellenJB de uma maneira um pouco diferente:
Não há conversão de 1 e 0 binários para tensões como 5 V e 0 V. O microcontrolador, ou qualquer circuito físico, apenas opera nas tensões.
Essas tensões são "convertidas" em 1 e 0 binários em nossas cabeças quando formamos um modelo simplificado em nossas mentes sobre como o circuito está funcionando.
fonte
Não existe realmente uma "conversão" que ocorra. 1s e 0s binários são apenas uma representação virtual das tensões subjacentes. De fato, em muitos sistemas, uma alta tensão pode significar 0, enquanto uma baixa tensão significa 1. Existem algumas razões pelas quais isso é feito, mas provavelmente mais do que você gostaria de mergulhar nisso desde o início.
Para entender o que está acontecendo na lógica, provavelmente é melhor olhar para o transistor. Um transistor pode ser usado para muitas coisas, mas em um nível simples, você pode tratá-lo como um comutador. Conceitualmente, você pode pensar nisso como seu interruptor na parede, mas, em vez de ser controlado movendo fisicamente o interruptor, ele é controlado pela mudança na corrente. Você pode tratar a luz acesa como 1 e a luz apagada como 0. Agora você pode começar a combinar essas opções em conjuntos variados para criar diferentes elementos lógicos (como AND, OR, NOR etc.).
Sei que minha resposta não é terrivelmente detalhada, mas espero que responda à sua pergunta. Se você precisar de mais explicações, estarei disposto a adicionar mais detalhes, mas não quero sobrecarregá-lo.
fonte
A resposta curta é que não "converte", as tensões são as binárias (ou uma representação dela). Assim como se você escrever um número em algum papel, as marcas são uma representação do número ou, com um ábaco, as posições da pedra são uma representação de um número.
Binário é um sistema numérico, assim como decimal (ou octal, hexadecimal, etc)
Enquanto decimal (base-10) possui 10 símbolos (0123456789), o binário (base-2) possui apenas dois (01)
A sequência 10 em qualquer base significa a base da primeira potência, portanto, no decimal 10 significa 10 ^ 1 = 10 e em binário significa 2 ^ 1 = 2. Na sequência, 100 em decimal significa 10 ^ 2 = 100, e em binário significa 2 ^ 2 = 4. E assim por diante.
Representar decimal usando eletrônica seria possível, mas complicado, então eles escolheram o binário que pode ser representado por simples 0 e 1 (ou on / off).
Havia variações nisso, como sistemas ternários (3 estados) e, claro, computação analógica . Antes dos transistores, havia máquinas mecânicas de cartões perfurados (o Google sabe bastante, algumas leituras muito interessantes, se você tiver tempo).
Os primeiros computadores digitais binários foram feitos com comutadores reais (relés eletrônicos). O Zuse Z3 (1941) é um exemplo:
Depois disso, eram usados tubos de vácuo em vez de relés (podiam trocar mais rapidamente sem partes mecânicas em movimento), que realizavam a troca em vez de relés. O ENIAC é um exemplo de um computador antigo feito com tubos de vácuo.
Então, nos anos 60, chegaram os transistores e logo após os CIs. Os transistores desempenham a mesma função que os relés / válvulas tinham em máquinas anteriores, mas eram muito menores, mais rápidos e consumiam menos energia.
A teoria real por trás da maneira básica como funcionam os circuitos binários de computador não mudou nada, assim como não mudamos a maneira como manipulamos números em matemática - os algoritmos melhoram, mas as regras básicas permanecem as mesmas.
Portanto, se você sabe como o binário funciona e possui um circuito simples capaz de armazenar 1 ou 0 como dois níveis de tensão diferentes (por exemplo, 5V e 0v) e outros circuitos simples que podem executar funções lógicas simples como AND e OR, então você pode combiná-los todos para fazer coisas mais complexas.
Como todos esses circuitos binários são apenas comutadores no mais fundamental, você pode conseguir a mesma coisa com qualquer coisa que possa alternar entre dois estados, como mecânico / relé / válvula / transistor / ?.
Para dar um exemplo de armazenamento de um número em binário, digamos que temos 8 comutadores (que tipo eles não são importantes)
A 1 é representado por 5V e 0 é representado por 0V.
Queremos armazenar o número 123.
Em decimal é 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
Em binário é 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)
Portanto, todos o que fazemos é definir comutadores 0,1,3,4,5,6 para 5V e comutadores 7 e 2 para 0V. Isso "armazena" o número 123 em binário. Essa configuração seria conhecida como "registro".
Se você quiser saber mais sobre como os switches são combinados para formar circuitos mais complexos, adquira um bom livro sobre lógica digital ou pergunte ao google.
Este site não parece tão ruim para começar.
fonte
O programa que você está executando está usando tensões que representam uns e zeros. Tudo nessa parte digital é voltagem próxima ao terra ou próxima à voltagem de alimentação (5V no seu exemplo). Quando você carrega um registro de processador com 0xFF, digamos que você esteja criando 8 sinais separados de 5Volt em algum lugar do chip. Quando você armazena esse valor de registro em um registro de controle relacionado às portas de saída, os pinos de saída no dispositivo, os sinais de 5V no registro dos processadores, causam a criação de outros sinais de 5V, conectados aos pinos externos do dispositivo. .
fonte
As tensões são apenas uma maneira de representar o binário. É uma conversão bastante eficiente e prática que permite que a lógica binária seja implementada usando diferentes configurações de transistor.
A maneira como a lógica binária geralmente é implementada eletronicamente é usando o CMOS ( tecnologia http://en.wikipedia.org/wiki/CMOS ), na qual dois transistores MOS são configurados em um par complementar para formar uma porta CMOS. Porém, existem outras implementações eletrônicas da lógica binária, usando TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic), por exemplo, ou relés. Mas você pode usar qualquer coisa realmente, papel, cabras de robôs de papel: http://www.robives.com/category/product_tags/logic_goats . A implementação eletrônica do CMOS passa a ser eficiente e prática.
Destas simples portas CMOS, você pode construir portas lógicas mais complicadas: NAND e NOR, sendo o portão padrão NOT, são os básicos. Destes, você pode construir tudo o que é lógica binária, um somador, um arquivo de registro, memória. Dessas, é possível criar uma ALU, até um microprocessador completo.
Se você quiser mais informações, pode ler um livro sobre lógica digital, por acaso possuo e gosto deste:
http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1
Uma maneira prática e agradável de entender como uma CPU é construída é apenas criar uma você mesmo, usando VHDL e um FPGA. Você pode obter placas de desenvolvimento FPGA baratas e o software geralmente é gratuito (para uma licença restrita). Eu tenho alguns da Digilent que são bastante acessíveis:
http://www.digilentinc.com/
fonte
Simplificando, em um determinado intervalo (geralmente de 5 a 12 volts), o bit mais significativo é 0 na primeira metade desse intervalo e 1 no outro. O próximo bit mais significativo é calculado dividindo a metade em dois e assim sucessivamente até que todos os bits tenham sido calculados.
Portanto, binário é apenas sobre o aumento e a diminuição de tensões medidas periodicamente.
Aqui está um exemplo simplificado. No intervalo de 1V a 256V, vamos traduzir (analógico) 137 para binário (numérico) usando o pseudocódigo:
fonte