Amateur Radio Station R9AL

Два вида электрических сигналов

     Самые первые системы электрической связи - телеграф (1836) и телефон (1874) - знакомят нас с главным действующим лицом всей электроники - с электрическим сигналом. Точнее с двумя его разновидностями - аналоговым сигналом (телефон) и цифровым (телеграф).

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

Телеграф кодирует отдельные буквы, цифры и знаки с помощью комбинаций электрических импульсов. Цифровое представление сигнала оказалось очень удобно, действительно, есть сигнал - это "логическая единица", нет сигнала - "логический ноль".

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

В прошлом веке наибольшее развитие получила аналоговая схемотехника, но современные электронные устройства все больше предпочитают цифровые сигналы. Но работают с обоими типами сигналов. Нельзя сказать что один тип сигнала лучше, а другой хуже, все зависит от решаемых задач. Один и тот же транзистор может работать как в аналоговом режиме (см. урок 18 и урок 19), как усилитель аналогового сигнала и в цифровом (ключевом) режиме, когда он может быть либо полностью открыт, либо полностью закрыт.

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

Но что же представляет из себя эти нули и единицы? Микроконтроллер, применяемый в Arduino UNO питается от напряжения 5 вольт. Было бы удобно считать наличие напряжения в 5 вольт - логической единицей, а отсутствие напряжения, 0 вольт - логическим нулем. Но на практике получить ровно 5 вольт или ровно 0 вольт довольно сложно, поэтому говорят об логических уровнях. При работе с нашим контроллером уровнем логической единицы считается напряжение в диапазоне от 2,4 до 5 вольт, а уровень логического нуля в диапазоне от 0 до 0,8 вольт.

Двоичная арифметика

     В цифровой технике используется двоичная система сигналов, в которой имеются всего две цифры - 0 и 1, из которых образуются любые числа. Например, число 9 из десятичной системы счисления, которой мы пользуемся, соответствует число 1001 в двоичной системе, которой пользуются компьютеры. Правила образования двоичных чисел аналогично правилам образования десятичных чисел, и та и другая системы счисления называются "позиционными", так как значение числа зависит от того, какой разряд или какую "позицию" занимает цифра. Например, цифра 5 в числах 005, 050 и 500 обозначает разное число, все зависит от того в каком разряде она находится. В десятичной системе счисления имеется десять цифр, от 0 до 9. Каждая цифра соответствует числу от 0 до 9, а вот чтобы записать число десять, потребуется уже две цифры, так как для записи числа десять нет специальной цифры. Есть общее правило для всех позиционных систем, если переполняется младший разряд (в данном случае единицы), то ставится 0 и переносится 1 в старший разряд (в данном случае десятки), фактические запись числа 10 означает что есть одна десятка и нет единиц, двойка в числе 20 показывает, что есть две десятки и так далее. После переполнения десяток - переходим к сотням, затем к тысячам и так может продолжаться до бесконечности.

Аналогично поступаем и в двоичной системе, но здесь у всего две цифры и основание здесь два. Число ноль мы запишем как 0, число один как 1, а вот с числом два уже проблемы, в двоичной системе счисления нет цифры, для обозначения числа два. Поэтому поступим также как в десятичной системе, обнулим младший разряд, а в старшем запишем единицу, то есть число два в двоичной системе запишется как 10, число три как 11, число четыре (здесь у нас опять переполнение) как 100, число пять как 101 и так далее. Аналогично десятичным числам, двоичные числа также можно складывать, умножать, вычитать и делить. Правила выполнения арифметических операций в двоичной системе проще, например, таблица умножения выглядит так:

0*0=0
0*1=0
1*0=0
1*1=1

А сложение в соответствии со следующим правилом:

0+0=0
0+1=1
1+0=1
1+1=0 и 1 переносится в следующий старший разряд (можно записать 1+1=10).

Вычитание, соответственно:

0-0=0
0-1=1 единица занимается из соседнего, старшего разряда, (можно записать 10-1=1)
1-0=1
1-1=0

Деление:

0/1=0
1/1=1

А вот на ноль делить нельзя, также как и в десятичной системе счисления.

Любое десятичное число, можно представить в виде суммы единиц, десятков, сотен и так далее. Например, число 325 можно представить в виде:

325 = 3*100 + 2*10 + 5*1

или так:
325 = 3*102 + 2*101 + 5*100

Здесь степень как раз показывает номер разряда.

Аналогично и в двоичной системе, например тоже самое число, в двоичной системе, мы можем записать так:

32510 = 1010001012 = 1*100000000 + 0*10000000 + 1*1000000 + 0*100000 + 0*10000 + 0*1000 + 1*100 + 0*10 + 1*1

Или в более компактном виде:

1010001012= 1*1028 + 0*1027 + 1*1026 + 0*1025 + 0*1024 + 0*1023 + 1*1022 + 0*1021 + 1*1020


Следует помнить, что здесь 102 - это 210. Нижний индекс показывает из какой системы это число, так как нам приходится оперировать одними и теми же цифрами для записи чисел в разных системах счисления.

Ну и чтобы было совсем понятно, запишем это разложение еще и в таком виде:

1010001012= 1*2108 + 0*2107 + 1*2106 + 0*2105 + 0*2104 + 0*2103 + 1*2102 + 0*2101 + 1*2100

Или в более компактном виде:

1010001012= 1*256 + 0*128 + 1*64 + 0*32 + 0*16 + 0*8 + 1*4 + 0*2 + 1*1


Эти разложения следует использовать при переводе из одной системы счисления в другую.

Двоичная логика

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

Z=X*Y     "Логическое И" (логическое умножение)


где X - это первая посылка "источник питания есть", при этом если высказывание истинно, источник действительно есть, то X=1, а если ложно, источника нет, то X=0.
Y - это вторая посылка "цепь замкнута", и если эта посылка истинна, то Y=1, а если ложна, то Y=0.
Z - это высказывание "лампочка горит", если лампочка действительно горит, то высказывание истинно, Z=1, а если не горит, то высказывание ложно, Z=0.

Действительно, если X или Y равны нулю, т.е. какое-то из исходных предположений ложно, то и высказывание "лампочка горит" будет ложным, а истинным оно будет только если оба исходных предположения будут истинны.

Теперь рассмотрим фразу "лампочка не горит, если нет источника питания или цепь не замкнута". Здесь союз "или" определяет условие истинности выражения "лампочка не горит". Такое логическое выражение является "логическим сложением" или "логическим ИЛИ". Математически это выглядит так:

Z¯=X¯+Y¯     "Логическое ИЛИ" (логическое сложение)


где X¯ - это первая посылка "источника питания нет", при этом если высказывание истинно, источника действительно нет, то X¯=1, а если ложно, т.е. источник есть, то X¯=0.
Y¯ - это вторая посылка "цепь разомкнута", и если эта посылка истинна, то Y¯=1, а если ложна, то Y¯=0.
Z¯ - это высказывание "лампочка не горит", если лампочка действительно не горит, то высказывание истинно, Z¯=1, а если горит, то высказывание ложно, Z¯=0.

Действительно, если X¯ и Y¯ равны нулю, т.е. оба исходных предположений ложны, то и высказывание "лампочка не горит" будет ложным, а истинным оно будет только если какое-либо исходное предположение будет истинным.

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

Так как при программировании Arduino используется C++, то давайте сразу использовать не математическую запись, а то, как это принято в C++

Z=X&&Y     "Логическое И" (логическое умножение)


Z=X||Y     "Логическое ИЛИ" (логическое сложение)


0=!1, 1=!0     "Логическое НЕ" (логическое отрицание)


Ниже приведены аксиомы булевой алгебры.



Операции И, ИЛИ, НЕ - являются основными логическими операциями, используя только их можно построить сколь угодно сложное логическое выражение.

Иная логика

     В современных компьютерах используется в основном двоичная логика (0,1), но в истории были попытки, и вполне успешные, создание вычислительных машин, использующих, например, троичную логику (+1,0,-1), или логику вида ДА, НЕТ, НЕ ЗНАЮ. Многие математики считают, что несмотря на свою сложность, по сравнению с двоичной логикой, у компьютеров с троичной логикой есть будущее. Еще одним интересным направлением является нечеткая логика (fuzzy logic), являющаяся обобщением классической логики и теории множеств, грубо говоря, это логика, в которой значения могут принимать не только 1 или 0, но и любое значение в интервале [0,1]. Нечёткая логика просто незаменима в тех случаях, когда на поставленный вопрос нет чёткого ответа (да или нет; 0 или 1) или наперёд неизвестны все возможные ситуации. Такие системы успешно применяются в экспертных системах, нейронных сетях и системах искусственного интеллекта. И наконец, "квантовая логика", логика применяемая в квантовом компьютере. Там есть операции схожие с логическими операциями в классической логике, например, операция "отрицание" переводит систему из одного состояния в другое. Есть операции, которые по названию схожи с классическими, но работают по-другому, так как оперируют совершенно другими данными. Например, есть типичные операции, связанные с изменением состояния двух кубитов, так называемые двух-кубитные гейты. Используются и операции, которых нет в классическом компьютере - "условное отрицание", когда состояние одного кубита меняется в зависимости от состояния другого.





Copyright © R9AL 2020 Все права защищены

Рейтинг@Mail.ru Яндекс цитирования