- •Предисловие
- •Часть 1. Электроника для начинающих
- •Глава 1. Что на плате электронного устройства?
- •Резистор
- •Конденсатор и индуктивность
- •Диод и транзистор
- •Глава 2. Программы и схемы
- •PSIM в Linux
- •Qucs в Linux
- •Операционный усилитель
- •Цифровая микросхема
- •Глава 3. Путешествие по плате с осциллографом
- •Что такое осциллограф?
- •Что такое сигнал?
- •Что я увидел на плате с помощью осциллографа?
- •Глава 4. Электричество и магнетизм
- •Глава 5. Сигналы или переменный ток на практике
- •Разные законы изменения переменного тока
- •Генерация сигналов
- •Использование сигналов
- •Глава 6. С чего начать свой первый проект?
- •Усилитель мощности
- •Светофор
- •Блок питания
- •Глава 7. Усилитель
- •Включение транзистора с общей базой
- •Включение транзистора с общим коллектором
- •Включение транзистора с общим эмиттером
- •Определение зависимости тока базы от напряжения
- •Частотные характеристики усилителя
- •Стоп, стоп, стоп!
- •Глава 8. Бабахать или нет – вот в чем вопрос
- •Разговоры, разговоры
- •Проект «Громкоговоритель»
- •Глава 9. Теплоотвод
- •Разные режимы работы оконечных каскадов
- •Тепло. Что с ним делать?
- •Глава 10. Сигналы, немного больше
- •Прямоугольные импульсы
- •Получение импульсов некоторых видов из простых сигналов
- •Немного о сигналах и линиях
- •Больше об амплитудной модуляции
- •Другие преобразования напряжений
- •Глава 11. Немного больше об усилителях
- •Усилители в радиоприемнике
- •Предварительный усилитель НЧ
- •Снижение шумов и автоматическая регулировка
- •Глава 12. Автоматика, и зачем она нужна
- •Обогреватель-автомат или простые устройства автоматики
- •Автоматическая нянька для рассеянных
- •Глава 13. Один интересный преобразователь
- •Преобразователи постоянного напряжения в переменное
- •Разные типы современных преобразователей
- •Проблемы симуляции электрических схем
- •Глава 14. Как считает домашний компьютер
- •Пример расчета максимальной выходной мощности
- •Пример расчета схемы стабилизатора
- •Примеры соотношений в транзисторных схемах
- •Программы для более сложных расчетов
- •Глава 15. Микропроцессор и программирование
- •Галопом по европам
- •Как организована работа процессора
- •Что такое программа?
- •Глава 16. Микроконтроллеры
- •Что нужно для работы с микроконтроллером?
- •Завершение проекта «Светофор»
- •Некоторые особенности работы с программатором
- •Завершение проекта «Автомат для рассеянных»
- •Завершение проекта «Электроника для начинающих»
- •Глава 17. Измерения в электрических цепях
- •Схема коммутатора к осциллографу
- •Схема приставки к мультиметру для измерения L и C
- •Схема регулировки яркости светильника
- •Глава 18. Организация собственной разработки
- •Часть 2. Игра в программирование
- •Глава 1. Поиск печки, от которой танцевать
- •Два берега
- •Первое знакомство с Gambas
- •Компьютер может помочь с программированием
- •Почему Емеля ездил на печи?
- •А можно с этого места поподробнее?
- •Первый блин
- •Глава 2. Бряцая железом
- •Хорошее начало
- •Возвращение
- •Отладка в gpsim
- •Глава 3. У камелька
- •Начало проекта «Машинистка»
- •Развиваем успех
- •Заметки и пометки «на память»
- •Глава 4. Охота на кентавра
- •Засада в интерфейсе
- •Железное решение
- •Лирическое отступление
- •Грустное завершение рассказа о счетчике
- •Глава 5. Сказка о неудачливом радиолюбителе
- •Возвращение на круги своея
- •Расширение кругов (на воде?)
- •gpsim как зерцало грешника
- •Вялая попытка оправдаться
- •И оргвыводы
- •Глава 6. Сказка о ловком программисте
- •Предварительное рассмотрение проекта «Генератор»
- •Продолжение работы над проектом «Генератор»
- •Завершение
- •Конспекты
- •Gambas дружелюбен к пишущим на VB, но используя Linux
- •Разработка приложений в Gambas
- •Часть 3. Proteus в любительской практике
- •Что такое интегрирующая и дифференцирующая цепь?
- •Почему не выпрямляет диод?
- •Как работает транзистор?
- •Микроконтроллеры и Proteus
- •Как работать с линиями?
- •Помогите найти схему внешнего генератора импульсов 4-8 MHZ (например на 555ЛН1).
- •Собрал одно, собрал другое — не работает. Что делать?
- •Почему я работаю с AVR?
В.Н. Гололобов |
Экскурсия по электронике |
301 |
Глава 15. Микропроцессор и программирование
Для рассказа о микропроцессорах в программе Qucs нет подходящих простых средств. Есть другие программы, позволяющие работать с процессорами, но тема эта неисчерпаема, а главу я включил только для того, чтобы перейти к рассказу о микроконтроллерах. Именно они, хотя никто не возбраняет вам использовать микропроцессор, но именно микроконтроллеры находят все большее применение в практической работе, становятся сердцем электронного устройства. Микроконтроллер я бы даже назвал микрокомпьютером, если бы не та существенная разница между контроллером и компьютером, что последний предназначен к выполнению множества программ, а первый для выполнения одной программы, заложенной в него. Есть и другие отличия, но о них лучше узнать из книг по микроконтроллерам, микропроцессорам и компьютерам. А в основе всех этих устройств лежит работа микропроцессора. Некогда процессор для компьютера или контроллера выполняли на множестве микросхем (я не беру времена еще более ранние). С появлением технологии «упаковки» всего снаряжения процессора в одну микросхему началась эра «компьютеризации всея Руси», то есть, всего, до чего можно дотянуться, если не очень лениться. Как же выглядит внутренний мир микропроцессора, над которым мы пролетим со скоростью звука.
Галопом по европам
Микропроцессорная техника тесно связана с двумя дисциплинами – электроникой и математикой. Электроника вошла в этот симбиоз через цифровую технику, а математика через программирование. Невозможно отделить одно от другого без того, чтобы не погубить и то, и другое. Никому не нужны программы сами по себе. И если цифровые устройства еще работали в «свободном плавании», то микропроцессорные без программы беспомощны как новорожденные. Какими они вырастут зависит от программы.
Сердце микропроцессора – арифметико-логическое устройство (АЛУ). Как можно сложить два числа с помощью цифровых устройств мы уже знаем. Похожим образом происходит вычитание, умножение и деление, составляя арифметическую область процессора. А тот факт, что все операции производятся над двоичными числами, позволяет рассматривать и логические операции. Даже названия цифровых микросхем во многом происходят уже из логики: И-НЕ, ИЛИ-НЕ. То есть, даже на ранней стадии цифровая техника ориентировалась на применение в качестве основы логических устройств.
Каждый микропроцессор имеет определенный, в настоящее время весьма обширный, набор команд. Собственно все, что он и может, и для чего предназначен, это выполнять эти команды. Команды, это те же двоичные числа, состоящие из последовательности нулей и единиц. Только их понимает процессор, и только они способны вывести его из беспробудной задумчивости. Последовательность таких команд – это суть программы.
Команды процессору могут быть очень простыми и лаконичными, например, «стоп». Получив такую команду процессор прекратит работу. Команды могут быть достаточно сложными, например, переписать содержимое аккумулятора во внешнюю память по адресу такому-то. Чтобы выполнить ее, нужно, по меньшей мере, знать, что такое аккумулятор, что такое внешняя память, и что такое адрес, да еще и что такое переписать. Но это забота внутреннего управляющего устройства в процессоре.
Для его диспетчерской работы ему нужны «бухгалтер» – счетчик команд, «кладовщик» – учетчик адресов и окно выдачи – шина данных...
Это присказка, а сказка впереди.
В.Н. Гололобов |
Экскурсия по электронике |
302 |
В двоичном числе команды процессора уже есть информация о свойствах команды, таких как ее сложность. За сложными командами могут располагаться числа данных. Отличить число, выражающее данные, например, слагаемое при сложении, от адреса, например, для запоминания результата сложения, и от самой команды невозможно. Все числа одинаковы. Один и тот же набор нулей и единиц может быть адресом, операндом и командой. Только устройство управления в процессоре может определить, кто есть кто, адрес отправить на адресную шину, данные на шину данных, а команду принять к исполнению, подключив к ее реализации АЛУ.
Я уже несколько раз упомянул слово шина. Это, естественно, не автомобильный термин, а процессорный, так обозначают совокупность выводов процессора, соединенных с другими устройствами вне процессора. У компьютера внешних устройств много: и монитор, и клавиатура, и дисковод, и принтер, и... Много. Чтобы как-то их обозначить им присваивают число – адрес. И все выводы процессора, которые используются для адресации, вместе с проводниками, соединяющими процессор с внешними устройствами, называют адресной шиной. Но чаще всего по этой шине процессор адресуется к памяти. Оперативная память компьютера – место размещения всех программ, хотя для процессора это тоже внешнее устройство. Одновременно оперативная память может быть и местом размещения всех данных: операндов, результатов вычислений, промежуточных результатов и т.д. Для данных есть еще одна шина – шина данных. Количество выводов шины адреса или данных часто кратно байту – восьми битам или единицам информации. Каждый бит может быть нулем или единицей. В сущности, это двоичные числа. Байтовый характер имеют многие регистры – хранители временной информации, временных чисел, еще одно место размещения операндов
иместо размещения выводимых данных. Это все еще присказка...
Многие микропроцессоры после включения питающего напряжения выставляют на адресную шину нулевой адрес. Процессор ждет, что по этому адресу будет расположена первая команда. Положим, что мы имеем дело с устройством, где есть процессор, есть оперативная память, клавиатура и дисплей. Процессор начал работу и ждет первой команды, и ждать процессор может долго. Оперативная память пуста. Прежде, чем он сможет что-то начать делать, в эту оперативную память нужно записать команды. И не с клавиатуры. Клавиатура тоже достаточно сложное внешнее устройство, его работу тоже нужно каким-то образом организовать. В стародавние времена в оперативную память записывали числа (команды, данные) по битам. Позже стали применять ПЗУ (постоянное запоминающее устройство) – энергонезависимую память, то есть, такую, которая сохраняет записанную в нее информацию (двоичные числа) и после выключения питания. В нее можно записать хотя бы программу, которая будет обслуживать клавиатуру и выводить на монитор то, что будет набрано с клавиатуры. Кстати, до пары клавиатура-монитор использовали приспособленную к этому пишущую машинку. Печатаешь на машинке, результат отправляется к процессору и ответ печатается на бумажной ленте, заправленной в пишущую машинку. И в те времена обслуживанием пишущей машинки занимались контроллеры, выполненные на цифровых микросхемах.
Имея пополненный ПЗУ арсенал, можно заставить процессор что-то сделать. Например, после включения питания процессор обращается к ПЗУ, где первая команда начинает программу, которая будет обслуживать последующий ввод команд. Теперь можно с клавиатуры (пишущей машинки) отправить первую команду, затем вторую и т.д. К слову, каждое нажатие клавиши на клавиатуре отправляет число. Тогда уже, как мне кажется, придумали использовать не двоичную, а восьмеричную и шестнадцатеричную систему счисления для чисел (команд и данных). Гораздо проще ввести, скажем, команду «С3», чем заполнить это нулями и единицами. Команды и данные, собранные и упорядоченные,
В.Н. Гололобов |
Экскурсия по электронике |
303 |
образуют программу, существующую в виде чисел.
Н даже устроившись с пишущей машинкой или клавиатурой, вводить программу каждый раз, когда нужно что-то сделать, оказалось слишком утомительно, расточительно, а, главное, подвержено часто ошибкам. Тогда все, что нужно ввести в оперативную память, стали записывать. Вначале на специальные бумажные карточки, затем на специальную бумажную ленту, еще позже на магнитофонную ленту. Включаете магнитофон, и микропроцессор слушает свою музыку «нулей и единиц». Зтем на смену магнитной ленте пришли магнитные «грампластинки» – дискеты и жесткие диски. Теперь программу стало легко читать в оперативную память, легко ткнуть процессор в нужное место, чтобы он начинал работать. И дисководы, и оперативная память, и контроллер клавиатуры, и много еще чего – все они подключаются к адресной шине и шине данных процессора, а управление, я бы сказал, идет по шине управления, где собраны все управляющие сигналы – всеми устройствами нужно управлять. Процессор стал управлять и дисководами, и принтером, и монитором, а им, ведь, всем нужно все растолковать, для этого существуют управляющие сигналы.
И это тоже присказка, но пора переходить к сказке.
Как организована работа процессора
В общих чертах я рассказал, как организована работа процессора. Рассмотрим некоторые частности. Например, я упомянул, что в оперативную память записываются двоичные числа. А как? Мы знаем, что есть триггер, имеющий два состояния, отображаемые на его выходе. Сам триггер мы можем установить либо в одно состояние, когда на его выходе «0», либо в другое, когда на выходе «1». Значит, один бит мы можем записать в триггер или запомнить в триггере. А восемь D-триггеров, если мы подключим их входы данных к шине данных, а выводы управления записью соединим вместе и подключим к управляющему сигналу записи, то они смогут запоминать байт. Похожим образом организовано то, что я называл регистром.
Конечно существующие микросхемы оперативной памяти устроены несколько иначе, но и в их основе лежит управляемый сигналом триггер, имеющий два состояния. Это может быть, например, полевой транзистор, на затвор которого подается заряд, после чего затвор отключается от цепи, а транзистор сохраняет свое состояние. Если заряд с затвора снять, то транзистор перейдет в другое устойчивое состояние. Вот и получается «камера хранения» для чисел. Есть еще одна деталь. Записать мы записали. А прочитать, я имею ввиду устройство из D-триггеров. У них все, что записывается, сразу появляется на выходе. Но шина данных у нас одна, на нее мы выводим данные для записи, на нее же должны вывести данные при чтении. D-триггер сразу, как только мы его подключим к шине данных, займет шину, установив на ней записанное в него число, и не важно, будет ли это нуль или другое число. Шина окажется занята. Чтобы этого не происходило, устройства оперативной памяти, да и другие устройства, работающие с шиной, устроены так, что они имеют третье состояние. Когда на их входе разрешения вывода устанавливается активное состояние, они выводят на шину записанное в них число, когда сигнал снимается, их выход переходит в состояние с высоким сопротивлением.
Сейчас я попробую изобразить, то, о чем пытался сейчас рассказать, с помощью двух транзисторов и программы Qucs. Выход ячейки памяти, присоединенной к шине данных, обратите внимание, будет очень похож на выходной каскад усилителя мощности.
В.Н. Гололобов |
Экскурсия по электронике |
304 |
Рис. 15.1. Выход в состоянии логической «1»
Заметьте, что сигнал (нижняя кривая) находится в состоянии близком к напряжению питания (верхняя кривая). Это состояние логической единицы может быть прочитано при обращении к этому биту.
Если теперь мы выключим транзистор Т1 и включим транзистор Т2, то на выходе получится логический ноль. Для этого точку соединения резисторов «оторвем» от земли и подключим к плюсу питающего напряжения. Диаграмма приобретет вид:
Рис. 15.2. Диаграмма состояния логического нуля
Но если мы выключим оба транзистора, как показано на рисунке ниже, сигналы от генератора V2 (назовем его генератором чисел на шине данных), появятся на шине данных.
В.Н. Гололобов |
Экскурсия по электронике |
305 |
Рис. 15.3. Выход в третьем состоянии На диаграмме видно, что шина свободна, на ней можно устанавливать данные.
Если и не совсем так, но похожим образом, реализуется выход с третьим состоянием у всех устройств, подключенных к одной шине данных.
С этой деталью мы, будем считать, разобрались.
Посмотрим теперь, как может быть организована реакция устройства на обращение к нему по адресу. Для определенности пусть устройством будет ячейка памяти. Конечно реальные устройства памяти имеют не одну ячейку даже организованную в восемь бит, а множество таких ячеек. Но каждая ячейка будет иметь уникальный адрес. Опять-таки, для определенности положим, что наша адресная шина четырех-битовая, нет нужды загромождать рисунок. Нас интересует, чтобы только одна комбинация логических единиц и нулей на входе, из всех возможных комбинаций, давала реакцию на выходе.
В.Н. Гололобов |
Экскурсия по электронике |
306 |
Рис. 15.4. Адресация с помощью многовходовой схемы И
Но это только один адрес. А как можно получить, например, второй? Поставим инвертор между входом схемы «И» и первым источником сигнала S1. Диаграмма этого процесса изменится.
Рис. 15.5. Диаграмма изменения адреса с помощью инвертора
Так с помощью многовходовой микросхемы «И» и инверторов мы можем получить то, что называется адресный селектор. Конечно, есть специальные микросхемы адресных селекторов, но существа дела это не меняет.
Если к нашему адресному селектору мы добавим ячейку памяти из нескольких D- триггеров, то получим еще и запоминающее устройство.
В.Н. Гололобов |
Экскурсия по электронике |
307 |
Рис. 15.6. Адресуемая ячейка памяти
Источники S1-S4 на рисунке представляют нашу адресную шину, а S5-S8 – шину данных, а соединение, помеченной меткой out, образует шину управления. После появления на адресной шине адреса нашей ячейки памяти, когда сигнал out переходит в состояние единицы (верхняя кривая), состояние шины данных записывается в нашу импровизированную память, которая в начальный момент времени имела записанное число 0000, а после прихода сигнала выбора приняла число 0010, десятичное 2.
«Трудовые будни» микропроцессора, едва на него подается питание, начинаются с чтения команды из первой ячейки памяти. Как я уже говорил, команды могут занимать только одну ячейку памяти, но могут быть дополнены одной или двумя следующими ячейками, в которых располагаются данные. В соответствии с характером команды внутренний счетчик, а что такое цифровой счетчик мы уже знаем, изменяет свое состояние, отсчитывая правильное количество ячеек памяти, чтобы после выполнения команды адрес, задаваемый процессором, приходился на следующую команду.
Для выполнения операций в микропроцессорах используют еще и внутренние ячейки памяти, которые называются внутренними регистрами. Регистр, повторюсь, можно себе представить таким же, как наша ячейка памяти. Регистры могут быть полностью равноправными, но могут быть выделенные регистры, таков, например, аккумулятор – регистр, в который записываются результаты операций. С точки зрения процессора его рутинная работа по сложению чисел выглядит, примерно, так...
Устанавливается на выводах адреса адресной шины нулевой адрес.
Прочитывается число, записанное по этому адресу, в устройство управления.
