Я только начинаю в электронике и уже очарован. Поиграв с Arduino в последние несколько дней, я осознаю, что двоичное представление представляет собой различные напряжения - например, +5 В для представления 1
и GND-представления 0
.
Я пытался выяснить, как на физическом уровне микроконтроллер преобразует двоичный код в эти напряжения. Кажется, я нигде не могу найти описание. Может кто-нибудь поделиться своими знаниями или указать мне место / хорошую книгу, которая описывает, как это работает?
Ответы:
Я хочу перефразировать часть ответа KellenJB немного по-другому:
Преобразование двоичных 1 и 0 в напряжения, такие как 5 В и 0 В, не выполняется. Микроконтроллер или любая физическая схема работает только от напряжений.
Эти напряжения «преобразуются» в двоичные 1 и 0 в наших головах, когда мы формируем упрощенную модель в наших умах о том, как работает схема.
источник
На самом деле не происходит «конверсии». Двоичные 1 и 0 - это просто виртуальное представление основных напряжений. Фактически, во многих системах высокое напряжение может означать 0, в то время как низкое напряжение означает 1. Есть несколько причин, почему это делается, но, вероятно, больше, чем вы хотите погрузиться в это рано.
Чтобы понять, что происходит в логике, лучше всего заглянуть в транзистор. Транзистор может использоваться для многих целей, но на простом уровне вы можете рассматривать его как переключатель. Концептуально вы можете думать об этом, как о выключателе на стене, но вместо того, чтобы физически перемещать его, он контролируется изменением тока. Вы можете рассматривать источник света как 1, а источник света как 0. Теперь вы можете начать комбинировать эти переключатели в различных наборах для создания различных логических элементов (таких как AND, OR, NOR и т. Д.).
Я знаю, что мой ответ не очень подробный, но я надеюсь, что он ответит на ваш вопрос. Если вам нужно больше объяснений, я буду готов добавить больше деталей, просто не хочу вас перегружать.
источник
Краткий ответ: он не «конвертирует», напряжения - двоичные (или их представление). Также как если вы напишите число на какой-то бумаге, отметки представляют собой представление числа или рассчитывают на счет, а позиции камней представляют собой представление числа.
Двоичная система - это система счисления, такая же как десятичная (или восьмеричная, шестнадцатеричная и т. Д.)
В то время как десятичное число (основание-10) имеет 10 символов (0123456789), двоичное (основание-2) имеет только два (01)
Последовательность 10 в любой базе означает основание для первой степени, поэтому в десятичной 10 означает 10 ^ 1 = 10, а в двоичной - 2 ^ 1 = 2. Далее, 100 в десятичной системе означает 10 ^ 2 = 100, и в двоичном виде это означает 2 ^ 2 = 4. И так далее.
Представление десятичной дроби с использованием электроники было бы возможно, но сложно, поэтому они выбрали двоичный код, который может быть представлен простыми 0 и 1 (или вкл. / Выкл.).
Были вариации этого, например, троичные системы (3 состояния) и, конечно, аналоговые вычисления . До транзисторов были механические перфокарты (Google знает много, очень интересное чтение, если у вас есть время).
Первые двоичные цифровые компьютеры были сделаны с настоящими переключателями (электронными реле). Цузе Z3 (1941) является примером:
После этого вместо реле использовались вакуумные трубки (могли переключаться быстрее без движущихся механических частей), которые выполняли переключение вместо реле. Эниак является примером раннего компьютера сделан с вакуумными трубками.
Затем в 60-х годах появились транзисторы и вскоре после микросхем. Транзисторы выполняют ту же функцию, что и реле / клапаны в более ранних машинах, но они были намного меньше, быстрее и потребляли меньше энергии.
Фактическая теория, лежащая в основе принципа работы двоичных компьютерных схем, совершенно не изменилась, точно так же, как мы не изменили способ манипулирования числами в математике - алгоритмы улучшаются, но основные правила остаются прежними.
Итак, если вы знаете, как работает двоичный файл, и у вас есть простая схема, способная хранить 1 или 0 как два разных уровня напряжения (например, 5 В и 0 В), и другие простые схемы, которые могут выполнять простые логические функции, такие как И и ИЛИ, тогда Вы можете объединить их все, чтобы сделать более сложные вещи.
Поскольку все эти двоичные схемы являются просто коммутаторами в самом основном, вы можете достичь того же с любым, что может чередоваться между двумя состояниями, такими как механическое / реле / клапан / транзистор / ?.
Чтобы привести пример сохранения числа в двоичном виде, допустим, у нас есть 8 переключателей (какого типа они не важны)
. 1 представлен 5 В, а 0 представлен 0 В.
Мы хотим хранить номер 123.
В десятичном виде это 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
В двоичном виде это 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)
Так что все мы устанавливаем переключатели от 0,1,3,4,5,6 до 5В и переключатели 7 и 2 до 0В. Это «хранит» число 123 в двоичном виде. Эта настройка будет известна как «регистрация».
Если вы хотите узнать больше о том, как переключатели объединяются в более сложные схемы, приобретите хорошую книгу по цифровой логике или спросите Google.
Этот сайт не выглядит слишком плохим для начала.
источник
Программа, которую вы запускаете, использует напряжения, которые представляют единицы и нули. Все в этой цифровой части - это напряжения, близкие к заземлению или близкие к напряжению питания (в вашем примере 5 В). Когда вы загружаете регистр процессора с 0xFF, скажем, вы создаете 8 отдельных сигналов 5 Вольт где-то в чипе. Когда вы затем сохраняете это значение регистра в управляющем регистре, который связан с выходными портами, выходные выводы на устройстве, 5-вольтовые сигналы в регистре процессоров, вызывают создание других 5-вольтовых сигналов, которые подключаются к внешним выводам устройства. ,
источник
Напряжения - это просто способ представления двоичного кода. Это довольно эффективное и практичное преобразование, которое позволяет реализовать двоичную логику с использованием различных конфигураций транзисторов.
Бинарная логика обычно реализуется электронным способом с использованием технологии CMOS ( http://en.wikipedia.org/wiki/CMOS ), в которой два МОП-транзистора устанавливаются в комплементарной паре для формирования затвора КМОП. Существуют и другие электронные реализации бинарной логики, например, с использованием TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) или реле. Но на самом деле вы можете использовать что угодно, бумагу, бумажных коз роботов: http://www.robives.com/category/product_tags/logic_goats . Электронная реализация CMOS оказывается эффективной и практичной.
Из этих простых CMOS-шлюзов вы можете создавать более сложные логические вентили: NAND и NOR, а стандартные вентили NOT, являются базовыми. Из них вы можете построить все, что является двоичной логикой, сумматором, регистровым файлом, памятью. Из них вы можете построить АЛУ, вплоть до полноценного микропроцессора.
Если вам нужна дополнительная информация, вы можете прочитать книгу о цифровой логике, которая мне принадлежит, и мне нравится эта:
http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1
Хороший практический способ понять, как построен процессор, - это просто создать его самостоятельно, используя VHDL и FPGA. Вы можете получить дешевые платы разработки FPGA, и программное обеспечение обычно бесплатно (для ограниченной лицензии). У меня есть несколько digilent, которые вполне доступны по цене:
http://www.digilentinc.com/
источник
Проще говоря, в данном диапазоне (обычно от 5 до 12 вольт) старший бит равен 0 в первой половине этого диапазона и 1 в другой. Следующий старший значащий бит вычисляется путем дальнейшего деления этой половины на две части и так далее, пока все биты не будут вычислены.
Таким образом, двоичные данные - это просто увеличение и уменьшение напряжения, которые измеряются периодически.
Вот упрощенный пример. В диапазоне от 1 В до 256 В, давайте переведем (аналоговый) 137 в двоичный (числовой), используя псевдокод:
источник