Цифровая электроника для начинающих

Это продолжение "Необычная электроника для начинающих. Введение"

Твоё путешествие в мир электроники мы начнем с погружения в цифровую электронику. Во-первых, потому что это верхушка пирамиды электронного мира, во-вторых, базовые понятия цифровой электроники просты и понятны. 

Задумывался ли ты о том, какой феноменальный прорыв в науке и технике произошел благодаря электронике и цифровой электронике в частности? Если нет, тогда возьми свой смартфон и внимательно на него посмотри. Такая простая с виду конструкция -- результат огромной работы и феноменальных достижений современной электроники. Создание такой техники стало возможным благодаря простой идее о том, что любую информацию можно представить в виде чисел. Таким образом, независимо от того, с какой информацией работает устройство, глубоко внутри оно занимается обработкой чисел.

Тебе наверняка знакомы римские и арабские цифры. В римской системе числа представляются в виде комбинации букв 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 -- мало команд. Глубже с этими двумя идеями познакомимся как-нибудь в другой раз.

Что происходит, когда включается микроконтроллер?

Итак, давай представим идеальный мир, в котором у тебя есть МК и в его память уже записана программа. Или, как обычно говорят, МК "прошит" (при этом программу называют "прошивкой") и готов к бою.

Что произойдёт, когда ты подашь питание на свою схему с МК? Оказывается, ничего особенного. Там нет вообще никакой магии. Происходить будет следующее:

После подачи питания микроконтроллер пойдёт смотреть, что находится в памяти. При этом он "знает", куда следует смотреть, чтобы найти первую команду своей программы.

Местоположение начала программы устанавливается при производстве МК и никогдане меняется. МК считает первую команду, выполнит её, затем считает вторую команду, выполнит её, затем третью и так до последней. Когда же он считает последнюю команду, то всё начнётся сначала, так как МК выполняет программу по кругу, если ему не сказали остановится. Так вот он и работает.

Но это не мешает писать сложные программы, которые помогают управлять холодильниками, пылесосами, промышленными станками, аудиоплеерами и тысячами других устройств. Ты тоже можешь научиться создавать устройства с МК. Это потребует времени, желания и немножко денег. Но это такие мелочи, правда?

Как устроен типичный МК

Любая микропроцессорная система стоит на трёх китах:

  1. Процессор (АЛУ + устройство управления),
  2. Память (ROM, RAM, FLASH),
  3. Порты ввода-вывода.

Процессор с помощью портов ввода-вывода получает/отправляет данные в виде чисел, производит над ними различные арифметические операции и сохраняет их в память. Общение между процессором, портами и памятью осуществляет по проводам, которые называются шиной (шины делятся на несколько видов по назначению)Это общая идея работы МП-системы. Вот как на картинке ниже. 

Архитектура микропроцессорной системы

МК, как я уже писал, тоже микропроцессор. Просто специализированный. Физическая структура микросхем МК разных серий может существенно различаться, но идейно они будут похожи и будут иметь такие, например, блоки как: ПЗУ, ОЗУ, АЛУ, порты ввода/вывода, таймеры, счетчики, регистры. 

ПЗУ Постоянная память. Всё, что в неё записано, остаётся в ПЗУ и после того как устройство было отключено от питания.
ОЗУ Временная память. ОЗУ -- это рабочая память МК. В неё помещаются все промежуточные результаты выполнения команд или данные от внешних устройств.  
АЛУ Математический мозг микроконтроллера. Именно он складывает, вычитает, умножает, а иногда и делит, сравнивает нолики и единички в процессе выполнения команд программы. Один из важнейших органов МК.
Порты I/O Просто устройства для общения МК с внешним миром. Без них ни во внешюю память записать, ни данные от датчика или клавиатуры получить нельзя.
Таймеры Готовил торт или курицу? Ставил таймер, чтобы он тебя оповестил, когда блюдо будет готово? Вот в МК таймер выполняет схожие функции: отсчитывает интервалы, выдаёт сигнал о срабатывании и т.д.
Счетчики Пригождаются, когда требуется что-либо подсчитать.  
Регистры Самое непонятное слово для тех, кто хоть раз пытался освоить Асемблер самостоятельно. А между прочим они своего рода выполняют роль быстрой ОЗУ МК. Каждый регистр представляет собой своего рода ячейку памяти. И в каждом МК их всего несколько десятков. 

 

Современный масштаб развития цифровой электроники настолько огромен, что даже по каждому пункту из этой табилцы можно написать целую книгу, а то и не одну. Я же опишу базовые идеи, которые помогут дальше самостоятельно разобраться более подробно в каждом из устройств.

Мозг микроконтроллера

Микропроцессор/микроконтроллер всегда работает по заложенной в него программе. Программа состоит из последовательности операций, которые МК умеет выполнять. Операции выполняются в ЦПУ  -- это мозг микроконтроллера. Именно этот орган умеет производить арифметические и логические операции с числами. Но есть ещё четыре важных операции, которые он умеет делать:

  • чтение из ячейки памяти
  • запись в ячейку памяти
  • чтение из порта В/В
  • запись в порт В/В

Эти операции отвечают за чтение/запись информации в память и во внешние устройства через порты ввода/вывода. И без них любой процессор проверащается в бесполезный хлам.

Технически процессор состоит из АЛУ (калькулятор процессора) и управляющего устройства, которое дерижирует взаимодействием между портами ввода-вывода, памятью и арифметико-логическим устройством (АЛУ). 

Память микроконтроллера

Ранее в таблице с типичными устройствами, входящими в МК, я указал два вида памяти: ПЗУ и ОЗУ. Различие между ними заключается в том, что в ПЗУ данные сохраняются между включениями устройства. Но при этом ПЗУ (ROM) довольно медленная память. Поэтому и существует ОЗУ (RAM), которая довольно быстра, но умеет хранить данные только тогда, когда на устройство подано питание. Стоит выключить устройство и все данные оттуда...пшик и нету.

Если у тебя есть ноутбук или персональный компьютер, то тебе знакома например такая ситуация: писал гору текста, забыл сохранить его на жесткий диск, внезапно пропало электричество. Включаешь компьютер, а текста нет. Всё верно. Пока ты его писал, он хранился в ОЗУ. Поэтому текст и пропал с выключением компьютера.

В зарубежном мире ОЗУ и ПЗУ называют RAM и ROM:

  1. RAM (Random Access Memory) -- память со случайны доступом
  2. ROM (Read Only Memory) -- память только для чтения

У нас же их еще называют энергозависимой и энергонезависимой памятью. Что на мой взгляд более точно отражает природу каждого вида памяти.

ПЗУ

Сейчас всё больше получила распространение ПЗУ память типа FLASH (или, по-нашему, ЭСПЗУ). Она позволяет сохранять данные даже тогда, когда устройство выключено. Поэтому в современных МК, например в МК AVR в качестве ПЗУ используются именно FLASH-память. 

Раньше микросхемы ПЗУ-памяти были однократно-программируемыми. Поэтому если были записаны программа или данные с ошибками, то такую микросхемы просто выкидывали. Чуть позже появились ПЗУ, которые можно было перезаписывать многократно. Это были чипы с ультрафиолетовым стиранием. Они довольно долго прожили и даже сейчас встречаются в некоторых устройствах из 1990-х...2000-х годов. Например, вот такая ПЗУ родом из СССР.

Микросхема ПЗУ-памяти

У них был один существенный минус -- при случайно засветке кристалла (тот, что виден в окошечке) программа могла быть повреждена.  А также ПЗУ до сих пор работает медленней, чем ОЗУ.

ОЗУ

Оперативная память в отличие от ПЗУ, ППЗУ и ЭСПЗУ является энергозависимой и при выключении питания устройства все данные в ОЗУ пропадают. Но без неё не обходится ни одно микропроцессорное устройство. Так как в процессе работы требуется где-то хранить результаты вычислений и данные, с которыми работает процессор. ПЗУ для этих целей не подходит из-за своей медлительности. 

ПАМЯТЬ ПРОГРАММ И ПАМЯТЬ ДАННЫХ

Помимо разделения на энергозависимую (ОЗУ) и энергонезависимую память в микроконтроллерах есть разделение на память данных и память программ. Это значит, что в МК есть специальная память, которая предназначена только для хранения программы МК. В нынешние времена обычно это FLASH ПЗУ. Именно из этой памяти микроконтроллер считывает команды, которые выполняет. 

Отдельно от памяти программ существует память данных, в которую помещаются промежуточные результаты работы и любые другие данные, требующиеся программе. Память программ -- это обычное ОЗУ. 

Такое разделение хорошо тем, что никакая ошибка в программе не сможет повредить саму программу. К примеру, когда по ошибке МК попытается записать на место какой-нибудь команды в программе случайное число. Получается что программа надёжно защищена от повреждения. Кстати, у такого разделения есть своё особо название -- "гарвардская архитектура".

В 1930-х годах правительство США поручило Гарвардскому и Принстонскому университетам разработать архитектуру ЭВМ для военно-морской артиллерии. В конце 1930-х годов в Гарвардском университете Говардом Эйкеном была разработана архитектура компьютера Марк I, в дальнейшем называемая по имени этого университета. 

Ниже я схематично изобразил гарвардскую архитектуру:

Гарвардская архитектура компьютера

Таким образом программа и данные, с которыми она работает, физически храняться в разных местах. Что касается больших процессорных систем подобных персональному компьютеру, то в них данные и программа во время работы программы хранятся в одном и том же месте.

ИЕРАРХИЯ ПАМЯТИ

...

КАК УСТРОЕН МОЗГ МИКРОКОНТРОЛЛЕРА 

Ты уже значешь, что мозгом МК является ЦПУ -- центральный процессор, который состоит из АЛУ (арифметико-логическое устройство) и устройства управления (УУ).  УУ дерижирует всем оркестром из памяти, внешних устройств и АЛУ. Благодаря ему МК может выполнять команды в том порядке в каком мы этого хотим.

АЛУ -- это калькулятор, а УУ говорит АЛУ что, с чем, когда и в какой последовательности вычислять или сравнивать. АЛУ умеет складывать, вычитать, иногда делить и умножать, выпонять логические операции: И, ИЛИ, НЕ (о них будет чуть позже)

Любой компьютер, МК в том числе, умеет сегодня работать только с двоичными числами, составленными из "0" и "1". Именно эта простая идея привела к революции в области электроники и взрывному развитию цифровой техники. 

Предположим, что АЛУ надо сложить два числа: 2 и 5. В упрощенном виде это будет выглядеть так:

Сложение двоичных чисел

При этом УУ знает в каком месте памяти взять число "2", в каком число "5" и в какое место памяти поместить результат. УУ знает обо всём этом потому, что оно прочитало об этом в команде из программы, которую в данный момент прочитало в программе. Более подробно про арефмитические операции с двоичными числами и как устроен сумматор АЛУ изнутри я расскажу чуть позже.

Хорошо, скажешь ты, а что если нужно получить эти числа не из программы, а из вне, например, с датчика? Как быть? Вот тут в игру и вступают порты ввода-вывода, с помощью которых МК может принимать и передавать данных на внешние устройства: дисплеи, датчики, моторы, задвижки, принтеры и т.д.

ЛОГИЧЕСКИЕ ОПЕРАЦИИ

Тебе наверняка хорошо знакомо шуточное высказывание про "женскую логику"? Но речь пойдет не о ней, а логике в принципе. Логика оперирует причинно-следственными связями: если солнце взошло, то стало светло. Причина "солнце взошло"  вызвала следствие "стало светло". При этом про каждое утверждение мы можем сказать "ИСТИНА" или "ЛОЖЬ". 

Например:

  • "Птицы плавают под водой" -- это ложь
  • "Вода мокрая" -- при комнатной температуре это утверждение истинно

Как ты заметил, второе утверждение при определённых условиях может быть как истинным, так и ложным.  В нашем компьютере есть только числа и инженеры с математичками придумали обозначать истину "1", а ложь "0". Это дало возможность записывать истинность утверждения в виде двоичных чисел:

  • "Птицы плавают под водой" = 0
  • "Вода мокрая" = 1

А ещё такая запись позволила математикам выполнять с этими утверждениями целые операции -- логические операции. Первым до этого додумался Джордж Буль. По имени  которого и названа такая алгебра: "булева алгебра", которая оказалась очень удобной для цифровых машин. 

Вторая половина АЛУ -- это логические операции. Они позволяют "сравнивать" утверждения. Базовых логических операций всего несколько штук: И, ИЛИ, НЕ, -- но этого достаточно, так как более сложные могут комбинироваться из этих трёх. 

Логическая операция И обозначает одновременность утверждений, т.е. что оба утверждения истинны одновременно. Например утверждение  "Птицы плавают под водой" И "Вода мокрая" будет истинно только тогда, когда оба более простых утверждения будут истинны. Во всех остальных случаях результат операции логического И будет ложным

Логическая операция ИЛИ будет истинно, если хотя бы одно из участвующих в операции утверждений будет истинно.  "Птицы плавают под водой" И "Вода мокрая" истинно, так как истинно утверждение "вода мокрая"

Логическое операция НЕ меняет истинность утверждения на противоположное значение. Это логическое отрицание. Например:

Солнце всходит каждый день = ИСТИНА

НЕ (Солнце всходит каждый день) = НЕ ИСТИНА = ЛОЖЬ

Благодаря логическим операция мы можем сравнивать двоичные числа, а так как наши двоичные числа всегда что-то обозначают, например, какой-нибудь сигнал. То получается, что благодаря булевой алгебре мы можем сравнивать настоящие сигналы. Этим логическая часть АЛУ и занимается. 

УСТРОЙСТВО ВВОДА-ВЫВОДА

Наш МК должен общаться с внешним миром. Только тогда он будет представлять из себя полезное устройство. Для этого у МК есть особые устройства, которые называются устройствами ввода-вывода. 
Благодаря этим устройствам мы можем посылать в микроконтроллер сигналы от датчиков, клавиатуры и других внешних приборов. А МК после обработки таких сигналов отправит через устройства вывода ответ, с помощью которого можно будет регулировать скорость вращения двигателя или яркость свечения лампы.

Подведу итоги:

  1. Цифровая электроника -- верхушка айсберга электроники
  2. Цифровое устройство знает и понимает только числа
  3. Любая информация: сообщение, текст, видео, звук, -- могут быть закодированы с помощью двоичных чисел
  4. Микроконтроллер -- это микрокомпьютер на одной микросхеме
  5. Любая микропроцессорная система состоит из трёх частей: процессор, память, устройства ввода-вывода
  6. Процессорс состоит из АЛУ и управляющего устройства
  7. АЛУ умеет выполнять арифметические и логические операции с двоичными числами

Оставайся с нами. В следующих статьях я расскажу более подробно как устроена память МК, порты ввода-вывода и АЛУ. А после этого мы  пойдём ещё дальше и в итоге дойдём до аналоговой электроники. 

p.s.
Нашёл ошибку? Сообщи мне!

Большой радиолюбитель и конструктор программ

Благодаря достижениям электроники у нас есть компьютеры, планшеты, смартфоны и другая популярная техника. Я создал этот сайт для популяризации радиолюбительства. Подписывайтесь на блог, рассылку и группу в ВК: vk.com/mp16a!

Меню