Это продолжение "Необычная электроника для начинающих. Введение"
Твоё путешествие в мир электроники мы начнем с погружения в цифровую электронику. Во-первых, потому что это верхушка пирамиды электронного мира, во-вторых, базовые понятия цифровой электроники просты и понятны.
Задумывался ли ты о том, какой феноменальный прорыв в науке и технике произошел благодаря электронике и цифровой электронике в частности? Если нет, тогда возьми свой смартфон и внимательно на него посмотри. Такая простая с виду конструкция -- результат огромной работы и феноменальных достижений современной электроники. Создание такой техники стало возможным благодаря простой идее о том, что любую информацию можно представить в виде чисел. Таким образом, независимо от того, с какой информацией работает устройство, глубоко внутри оно занимается обработкой чисел.
Тебе наверняка знакомы римские и арабские цифры. В римской системе числа представляются в виде комбинации букв I, V, X, L, C, D, M, а в арабской с помощью комбинации символов 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Но существуют и другие формы представления числа. Одна из них -- это двоичная форма. Или, как её чаще называют, двоичная система счисления. В такой системе счисления любое число представляет собой последовательность только из "0" и "1".
Арабские | Римские | Двоичные |
0 | - | 00 |
1 | I | 01 |
2 | II | 10 |
3 | III | 11 |
Математики c инженерами хорошо потрудились, и сегодня любая информация может быть представлена в виде комбинации нулей и единиц: сигнал с датчика движения, музыка, видео, фото, температура, и даже вот этот текст, который ты сейчас читаешь, на самом деле в недрах твоего устройства имеет вид последовательности из нулей и единиц.
Независимо от того, с какой информацией работает цифровое устройство, глубоко внутри оно занимается обработкой чисел.
Почему именно "0" и "1", а не "0", "1" и "2", к примеру? На самом деле были вполне успешные попытки создать цифровую технику, которая использует не двоичную, а троичную систему исчисления ("0", "1" и "2"), но двоичная все же победила.
Возможно, победа досталась ей, потому что СССР развалился, а может потому, что "0" и "1" легче представить в виде электрических сигналов. А значит, цифровые устройства на основе двоичной системы исчисления проще и дешевле производить. Подробнее о двоичных числах я расскажу позже.
Почти в каждом цифровом устройстве встречаются типовые элементы, из комбинации которых оно состоит. Какие-то элементы совсем простые, какие-то более сложные, а какие-то совсем сложные. В любительской практике чаще всего встречаются: триггеры, таймеры, счетчики, регистры, микроконтроллеры, компараторы и др.
Давай выберем что-нибудь из этого списка и посмотрим, как оно устроено. Пусть это будет микроконтроллер (МК)! Ладно, признаюсь. Микроконтроллер я выбрал неспроста. Дело в том, что именно появление микропроцессоров произвело настоящую революцию в электронике и выдвинуло её развитие на новый уровень.
МК является наиболее многочисленным и популярным видом микропроцессоров в мире. Особенным его делает то, что микроконтроллер представляет собой микро-PC -- целый компьютер в одной микросхеме. Представь себе компьютер размером, например, с копейку. Вот это и есть МК.
Микроконтроллеры используются повсеместно: в современных телевизорах, холодильниках, планшетах, охранных системах. Везде, где требуется чем-то управлять, микроконтроллер может найти своё место. А всё благодаря тому, что, как и любой микропроцессор, МК можно программировать. В итоге один и тот же вид микросхем можно использовать в сотнях различных устройств.
В наше время наибольшей популярностью пользуются, к примеру, микроконтроллеры AVR, PIC, ARM. Каждая из компаний, что выпускает перечисленные виды МК, производит десятки, если не сотни, разновидностей микроконтроллеров, предназначенных под все мыслимые и немыслимые задачи.
Несмотря на всю сложность конструкции настоящего микроконтроллера, рассказать, как он функционирует можно всего одним предложением: "В память микроконтроллера записывается текст программы, МК считывает команды из этой программы и выполняет их", -- вот и всё.
Конечно, МК не может выполнить какие угодно команды. У него есть базовый набор команд, которые он понимает и знает как выполнить. Комбинируя эти команды, можно получить практически любую программу, с помощью которой устройство будет делать именно то, что от него хотят.
В современном мире микропроцессор (МК тоже микропроцессор, но специализированный) может иметь либо очень много базовых команд, либо очень мало. Это такое условное разделение, для которого даже придумали два термина: CISC и RISC. CISC -- это много разных видов команд на все случаи жизни, RISC -- это только наиболее необходимые и часто использующиеся команды, т.е. сокращенный набор команд.
Большинство микроконтроллеров исповедуют RISC. Объясняется это тем, что при использовании сокращенного набора команд микроконтроллеры проще и дешевле для производства, их легче и быстрей осваивают разработчики аппаратуры. Между CISC и RISC много различий, но сейчас принципиально важно запомнить только то, что CISC -- много команд, RISC -- мало команд. Глубже с этими двумя идеями познакомимся как-нибудь в другой раз.
Итак, давай представим идеальный мир, в котором у тебя есть МК и в его память уже записана программа. Или, как обычно говорят, МК "прошит" (при этом программу называют "прошивкой") и готов к бою.
Что произойдёт, когда ты подашь питание на свою схему с МК? Оказывается, ничего особенного. Там нет вообще никакой магии. Происходить будет следующее:
После подачи питания микроконтроллер пойдёт смотреть, что находится в памяти. При этом он "знает", куда следует смотреть, чтобы найти первую команду своей программы.
Местоположение начала программы устанавливается при производстве МК и никогдане меняется. МК считает первую команду, выполнит её, затем считает вторую команду, выполнит её, затем третью и так до последней. Когда же он считает последнюю команду, то всё начнётся сначала, так как МК выполняет программу по кругу, если ему не сказали остановится. Так вот он и работает.
Но это не мешает писать сложные программы, которые помогают управлять холодильниками, пылесосами, промышленными станками, аудиоплеерами и тысячами других устройств. Ты тоже можешь научиться создавать устройства с МК. Это потребует времени, желания и немножко денег. Но это такие мелочи, правда?
Любая микропроцессорная система стоит на трёх китах:
Процессор с помощью портов ввода-вывода получает/отправляет данные в виде чисел, производит над ними различные арифметические операции и сохраняет их в память. Общение между процессором, портами и памятью осуществляет по проводам, которые называются шиной (шины делятся на несколько видов по назначению). Это общая идея работы МП-системы. Вот как на картинке ниже.
МК, как я уже писал, тоже микропроцессор. Просто специализированный. Физическая структура микросхем МК разных серий может существенно различаться, но идейно они будут похожи и будут иметь такие, например, блоки как: ПЗУ, ОЗУ, АЛУ, порты ввода/вывода, таймеры, счетчики, регистры.
ПЗУ | Постоянная память. Всё, что в неё записано, остаётся в ПЗУ и после того как устройство было отключено от питания. |
ОЗУ | Временная память. ОЗУ -- это рабочая память МК. В неё помещаются все промежуточные результаты выполнения команд или данные от внешних устройств. |
АЛУ | Математический мозг микроконтроллера. Именно он складывает, вычитает, умножает, а иногда и делит, сравнивает нолики и единички в процессе выполнения команд программы. Один из важнейших органов МК. |
Порты I/O | Просто устройства для общения МК с внешним миром. Без них ни во внешюю память записать, ни данные от датчика или клавиатуры получить нельзя. |
Таймеры | Готовил торт или курицу? Ставил таймер, чтобы он тебя оповестил, когда блюдо будет готово? Вот в МК таймер выполняет схожие функции: отсчитывает интервалы, выдаёт сигнал о срабатывании и т.д. |
Счетчики | Пригождаются, когда требуется что-либо подсчитать. |
Регистры | Самое непонятное слово для тех, кто хоть раз пытался освоить Асемблер самостоятельно. А между прочим они своего рода выполняют роль быстрой ОЗУ МК. Каждый регистр представляет собой своего рода ячейку памяти. И в каждом МК их всего несколько десятков. |
Современный масштаб развития цифровой электроники настолько огромен, что даже по каждому пункту из этой табилцы можно написать целую книгу, а то и не одну. Я же опишу базовые идеи, которые помогут дальше самостоятельно разобраться более подробно в каждом из устройств.
Микропроцессор/микроконтроллер всегда работает по заложенной в него программе. Программа состоит из последовательности операций, которые МК умеет выполнять. Операции выполняются в ЦПУ -- это мозг микроконтроллера. Именно этот орган умеет производить арифметические и логические операции с числами. Но есть ещё четыре важных операции, которые он умеет делать:
Эти операции отвечают за чтение/запись информации в память и во внешние устройства через порты ввода/вывода. И без них любой процессор проверащается в бесполезный хлам.
Технически процессор состоит из АЛУ (калькулятор процессора) и управляющего устройства, которое дерижирует взаимодействием между портами ввода-вывода, памятью и арифметико-логическим устройством (АЛУ).
Ранее в таблице с типичными устройствами, входящими в МК, я указал два вида памяти: ПЗУ и ОЗУ. Различие между ними заключается в том, что в ПЗУ данные сохраняются между включениями устройства. Но при этом ПЗУ (ROM) довольно медленная память. Поэтому и существует ОЗУ (RAM), которая довольно быстра, но умеет хранить данные только тогда, когда на устройство подано питание. Стоит выключить устройство и все данные оттуда...пшик и нету.
Если у тебя есть ноутбук или персональный компьютер, то тебе знакома например такая ситуация: писал гору текста, забыл сохранить его на жесткий диск, внезапно пропало электричество. Включаешь компьютер, а текста нет. Всё верно. Пока ты его писал, он хранился в ОЗУ. Поэтому текст и пропал с выключением компьютера.
В зарубежном мире ОЗУ и ПЗУ называют RAM и ROM:
У нас же их еще называют энергозависимой и энергонезависимой памятью. Что на мой взгляд более точно отражает природу каждого вида памяти.
ПЗУ
Сейчас всё больше получила распространение ПЗУ память типа FLASH (или, по-нашему, ЭСПЗУ). Она позволяет сохранять данные даже тогда, когда устройство выключено. Поэтому в современных МК, например в МК AVR в качестве ПЗУ используются именно FLASH-память.
Раньше микросхемы ПЗУ-памяти были однократно-программируемыми. Поэтому если были записаны программа или данные с ошибками, то такую микросхемы просто выкидывали. Чуть позже появились ПЗУ, которые можно было перезаписывать многократно. Это были чипы с ультрафиолетовым стиранием. Они довольно долго прожили и даже сейчас встречаются в некоторых устройствах из 1990-х...2000-х годов. Например, вот такая ПЗУ родом из СССР.
У них был один существенный минус -- при случайно засветке кристалла (тот, что виден в окошечке) программа могла быть повреждена. А также ПЗУ до сих пор работает медленней, чем ОЗУ.
ОЗУ
Оперативная память в отличие от ПЗУ, ППЗУ и ЭСПЗУ является энергозависимой и при выключении питания устройства все данные в ОЗУ пропадают. Но без неё не обходится ни одно микропроцессорное устройство. Так как в процессе работы требуется где-то хранить результаты вычислений и данные, с которыми работает процессор. ПЗУ для этих целей не подходит из-за своей медлительности.
ПАМЯТЬ ПРОГРАММ И ПАМЯТЬ ДАННЫХ
Помимо разделения на энергозависимую (ОЗУ) и энергонезависимую память в микроконтроллерах есть разделение на память данных и память программ. Это значит, что в МК есть специальная память, которая предназначена только для хранения программы МК. В нынешние времена обычно это FLASH ПЗУ. Именно из этой памяти микроконтроллер считывает команды, которые выполняет.
Отдельно от памяти программ существует память данных, в которую помещаются промежуточные результаты работы и любые другие данные, требующиеся программе. Память программ -- это обычное ОЗУ.
Такое разделение хорошо тем, что никакая ошибка в программе не сможет повредить саму программу. К примеру, когда по ошибке МК попытается записать на место какой-нибудь команды в программе случайное число. Получается что программа надёжно защищена от повреждения. Кстати, у такого разделения есть своё особо название -- "гарвардская архитектура".
В 1930-х годах правительство США поручило Гарвардскому и Принстонскому университетам разработать архитектуру ЭВМ для военно-морской артиллерии. В конце 1930-х годов в Гарвардском университете Говардом Эйкеном была разработана архитектура компьютера Марк I, в дальнейшем называемая по имени этого университета.
Ниже я схематично изобразил гарвардскую архитектуру:
Таким образом программа и данные, с которыми она работает, физически храняться в разных местах. Что касается больших процессорных систем подобных персональному компьютеру, то в них данные и программа во время работы программы хранятся в одном и том же месте.
ИЕРАРХИЯ ПАМЯТИ
...
КАК УСТРОЕН МОЗГ МИКРОКОНТРОЛЛЕРА
Ты уже значешь, что мозгом МК является ЦПУ -- центральный процессор, который состоит из АЛУ (арифметико-логическое устройство) и устройства управления (УУ). УУ дерижирует всем оркестром из памяти, внешних устройств и АЛУ. Благодаря ему МК может выполнять команды в том порядке в каком мы этого хотим.
АЛУ -- это калькулятор, а УУ говорит АЛУ что, с чем, когда и в какой последовательности вычислять или сравнивать. АЛУ умеет складывать, вычитать, иногда делить и умножать, выпонять логические операции: И, ИЛИ, НЕ (о них будет чуть позже)
Любой компьютер, МК в том числе, умеет сегодня работать только с двоичными числами, составленными из "0" и "1". Именно эта простая идея привела к революции в области электроники и взрывному развитию цифровой техники.
Предположим, что АЛУ надо сложить два числа: 2 и 5. В упрощенном виде это будет выглядеть так:
При этом УУ знает в каком месте памяти взять число "2", в каком число "5" и в какое место памяти поместить результат. УУ знает обо всём этом потому, что оно прочитало об этом в команде из программы, которую в данный момент прочитало в программе. Более подробно про арефмитические операции с двоичными числами и как устроен сумматор АЛУ изнутри я расскажу чуть позже.
Хорошо, скажешь ты, а что если нужно получить эти числа не из программы, а из вне, например, с датчика? Как быть? Вот тут в игру и вступают порты ввода-вывода, с помощью которых МК может принимать и передавать данных на внешние устройства: дисплеи, датчики, моторы, задвижки, принтеры и т.д.
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
Тебе наверняка хорошо знакомо шуточное высказывание про "женскую логику"? Но речь пойдет не о ней, а логике в принципе. Логика оперирует причинно-следственными связями: если солнце взошло, то стало светло. Причина "солнце взошло" вызвала следствие "стало светло". При этом про каждое утверждение мы можем сказать "ИСТИНА" или "ЛОЖЬ".
Например:
Как ты заметил, второе утверждение при определённых условиях может быть как истинным, так и ложным. В нашем компьютере есть только числа и инженеры с математичками придумали обозначать истину "1", а ложь "0". Это дало возможность записывать истинность утверждения в виде двоичных чисел:
А ещё такая запись позволила математикам выполнять с этими утверждениями целые операции -- логические операции. Первым до этого додумался Джордж Буль. По имени которого и названа такая алгебра: "булева алгебра", которая оказалась очень удобной для цифровых машин.
Вторая половина АЛУ -- это логические операции. Они позволяют "сравнивать" утверждения. Базовых логических операций всего несколько штук: И, ИЛИ, НЕ, -- но этого достаточно, так как более сложные могут комбинироваться из этих трёх.
Логическая операция И обозначает одновременность утверждений, т.е. что оба утверждения истинны одновременно. Например утверждение "Птицы плавают под водой" И "Вода мокрая" будет истинно только тогда, когда оба более простых утверждения будут истинны. Во всех остальных случаях результат операции логического И будет ложным
Логическая операция ИЛИ будет истинно, если хотя бы одно из участвующих в операции утверждений будет истинно. "Птицы плавают под водой" И "Вода мокрая" истинно, так как истинно утверждение "вода мокрая"
Логическое операция НЕ меняет истинность утверждения на противоположное значение. Это логическое отрицание. Например:
Солнце всходит каждый день = ИСТИНА
НЕ (Солнце всходит каждый день) = НЕ ИСТИНА = ЛОЖЬ
Благодаря логическим операция мы можем сравнивать двоичные числа, а так как наши двоичные числа всегда что-то обозначают, например, какой-нибудь сигнал. То получается, что благодаря булевой алгебре мы можем сравнивать настоящие сигналы. Этим логическая часть АЛУ и занимается.
УСТРОЙСТВО ВВОДА-ВЫВОДА
Наш МК должен общаться с внешним миром. Только тогда он будет представлять из себя полезное устройство. Для этого у МК есть особые устройства, которые называются устройствами ввода-вывода.
Благодаря этим устройствам мы можем посылать в микроконтроллер сигналы от датчиков, клавиатуры и других внешних приборов. А МК после обработки таких сигналов отправит через устройства вывода ответ, с помощью которого можно будет регулировать скорость вращения двигателя или яркость свечения лампы.
Оставайся с нами. В следующих статьях я расскажу более подробно как устроена память МК, порты ввода-вывода и АЛУ. А после этого мы пойдём ещё дальше и в итоге дойдём до аналоговой электроники.
p.s.
Нашёл ошибку? Сообщи мне!