Петзольд - Код

Верные друзья

Также существует азбука Брайля для слепых людей и представляет собой выпуклые точки, которые являются буквами, группами букв и словами. Также существует язык знаков для глухонемых людей в котором движения рук заменяют буквы и слова.

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

Коды и комбинации

ПАМ ПАРАМ

Брайль и двоичные коды

ПАМ ПАРАМ

  1. Электрическая цепь всегда замкнута

  2. Если разомкнуть цепь, то фонарик тут же погаснет

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

  4. Материя, то есть то что мы видим, ощущаем состоит из крохотных частиц(атомов)

  5. Атом состоит из элементарных частиц: протонов, нейтронов, электронов.

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

  7. У атома на рисунке 3 электрона, 3 протона и 4 нейтрона. Это атом хим. элемент Литий.

  8. Посредством хим. реакций атомы соединяются друг с другом в молекулы. Св-ва молекул отличаются от свойств составляющих ее атомов. Молекула воды состоит из 2 атомов водорода и 1 атома кислорода. Отличие воды от кислорода и водорода очевидны.

  9. Число электронов в атоме совпадает с числом протонов. Но при некоторых обстотельствах электроны покидают свои атомы и пораждают электрические явления.

  10. Протоны и электроны характеризуются зарядом. У протона - положительный, у электрона - отрицательный. Нейтроны нейтральны и заряд не имеют.

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

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

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

  14. Но просто так это не происходит, для этого нужно питание, батарейка.

    • Чаще всего они изготавливаются в виде цилиндров различных размеров.

    • Напряжение большинства батареек равно 1,5 вольта.

    • Один торец батарейки плоский и помечен знаком «–», на другом есть небольшой выступ, и помечен он знаком «+». Полярность батареек нужно обязательно учитывать при их установке.

    • Со временем батарейки разряжаются («садятся»).

    • Наконец, батарейки как-то производят электричество

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

На рисунке 2 последовательно подключенных батарейки(работают как одна большая 3В), подключены к лампочке. Если одну батарейку перевернуть, то цепь перестанет работать. 2-ум положительным полюсам нужны электроны для хим. реакций, но путя к ним нет, поэтому стоит попробовать подключить батарейки параллельно.

Теперь цепь работает, их общее напряжение = 1.5В, как и по отдельности. При таком подключение лампочка горит не так ярко, но прослужит намного дольше.

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

Для чего нужны провода в цепи? Почему нельзя пустить электричество по воздуху?

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

Но проводники также сопротивляются течению эл. тока. Это св-во характеризует величина - сопротивление. Сопротивление меди - мало, но не равно 0. Если к лампочке подключить провода длинною в несколько километров, фонарик работать не будет из-за высокого сопротивления. Чтобы снизить сопротивление его нужно сделать толще.

Напряжение - потенциальная способность батарейки к выполнению работы

Сила тока - мера количества электронов, реально текущих по цепи.

Для получения тока в 1А надо пропустить через поперечное сечение проводника 624*10^(16) электронов в секунду.

Сила тока подобна количеству воды, текущей по трубе, напряжение - давлению., а сопротивление по смыслу прямо противоположно толщине трубы - чем уже труба, тем выше сопротивление. Чем больше давление, тем больше воды протекает по трубе. Количество воды, пропущенной по трубе(ток), прямо пропорционально давлению воды(напряжению), прямо пропорционально давлению воды(напряжению) и обратно пропорционально сопротивлению.

где I - сила тока, E - напряжение(электродвижущая сила), R - сопротивление.

Батарейка ни к чему не подключена. Напряжение батарейки = 1.5В. Анод с катодом соединены по воздуху, поэтому сопротивление между ними большое. В результате значение силы тока стремится к нулю.

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

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

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

В большинстве фонарей устанавливается две последовательно соединенных батарейки, суммарное напряжение которых равно 3 В. Сопротивление лампочек в наиболее распространенных карманных фонариках составляет примерно 4 Ом. Значит, ток равен 3 В ¸ 4 Ом = 0,75 А, т. е. каждую секунду через лампочку проходит 468*10^(16) электронов.

Если измерить сопротивление лампы с помощью омметра, оно намного меньше 4 Ом.Сопротивление вольфрама зависит от температуры, увеличиваясь по мере нагрева.

В лампах, кроме рабочего напряжения, указывается мощность в ваттах (Вт).

Напряжение фонарика 3 В в сочетании с током 0,75 ампер доказывают, что мы имеем дело с лампочкой мощностью 2,25 Вт.

Также в фонарике присутсвует переключатель. Когда переключатель пропускает через себя электрический ток, говорят, что он включен, или замкнут. Выключенный, или разомкнутый, переключатель электрический ток не пропускает. Переключатель либо замкнут, либо разомкнут. Ток либо течет, либо нет. Лампочка либо горит, либо нет. Подобно двоичным кодам, изобретенным Морзе и Брайлем, наш простой фонарик пребывает в одном из двух взаимоисключающих состояний — включен или выключен.

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

Разомкнутая система

Замкнутая система

Когда система замкнута, ток может течь по всей системе и лампочка горит.

Количество проводов можно сократить объеденив 2 системы в 1, как показано на рисунке. Такое соединение называется соединением с общим проводом(common).

Затраты на провода можно еще сократить, но к сожалению у нас 1.5В батарейка и маленькая лампа. Но допустим у нас 100В батарейка и большая лампа.

Для это будем использовать огромный проводник(чем проводник больше, тем лучше) - планета Земля. Забив штырь(2.5 м, 1.5 см) в землю, подсоединим к схеме с помощью провода.

Электрический контакт с землей называется заземлением. На схеме обозначается вот так

Если будем использовать заземление, то для 1 системы понадобится 1 провод

Поскольку Земля обладает сопротивлением мы не можем использовать 1.5В батарейки и маленькие лампочки, для них сопротивление слишком велико.

В результате мы получим такую систему.

А что если друг находится на расстоянии в несколько километров. Из предыдушей главы мы выяснили, что чем длиннее провод, тем больше сопротивление. Поэтому ток будет мал и лампочка будет еле гореть. Эту проблему можно решить увеличив диаметр провода, но это дорогостоящая затея.

Либо увеличить напряжение и использовать лампы с более высоким напряжением.

Такие проблемы стояли перед людьми много лет назад. И увеличение толщины провода, повышение напряжения не помогут тянуть провода на бесконечно большие расстояния. Максимальное расстояние - 300 км.

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

В основном про арабскую систему счислению и немного римских цифр.

В основном ничего интересного.

Про:

Провод может быть двоичной цифрой. Если по проводу течет ток, двоичная цифра равна 1. Если тока нет, двоичная цифра принимает значение 0.

Переключатель может быть двоичной цифрой. Если переключатель включен (замкнут), двоичная цифра равна 1. Если выключен (разомкнут), двоичная цифра равна 0.

Лампочка может быть двоичной цифрой. Если лампочка горит, двоичная цифра равна 1. Если не горит, значение двоичной цифры равно 0.

Реле может быть двоичной цифрой. Если реле сработало, двоичная цифра равна 1. Если не сработало, двоичная цифра равна 0.

Под битом(binary digit) понимается 0 и 1.

Бит - основной структурированный блок, из которого строится информация.

Главное в бите то, что он содержит очень мало информации. Один бит информации — это минимально возможное ее количество. Все, что меньше бита, информации вообще не содержит. Более сложную информацию можно представить несколькими битами.

Информация можно представить как выбор между двумя возможностями. Для выбора из 2 возможностей нам понадобится 1 бит(Допустим напротив нас живет друг и мы хотим узнать пойдет ли он завтра гулять, фонарь горит - да, не горит - нет). Несколько битов означает выбор из нескольких возможностей.

Шум( в теории коммуникации) - все, что мешает связи(шуршание в телефонной трубке)

Как определить возможные варианты, зная колличество битов.

А если мы хотим мы знаем сколько у нас есть возможных вариант и хотим узнать сколько для этого нам понадобится битов

Здесь 128 колличество возможных вариантов, 7 - колличество битов.

Штрих-код - двоичный код. Состоит из нескольких цифр и 30 вертикальных полосок различной толщины с интервалами переменной толщины. Для того, чтобы отсканировать штрих-код достаточен небольшой срез, таким большим его делают для удобства сканирования кассиров.

Напоминает азбуку Морзе. Сканируя это, компьютер присваивает первой черной полоске бит - 1, промежутку - 0.

Штрих-код представляет из себя набор из 95 битов.

Эти биты можно разбить на группы.

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

Далее идут 6 групп по 7 битов, в них закодированны десятичные цифры(0-9).

Затем 5-битовый код - всегда 01010. Используется, как встроенная защита от ошибок. Не найдя центрального контрольного узора там, где он должен быть, сканер считает штрих-код неверным. Это один из нескольких способов выявить плохо напечатанный или подделанный штрих-код.

Далее 6 групп по 7 битов и правый контрольный узор(всегда 101).

В коде UPC всегда зашифровано 12 десятичных цифр с правой и левой стороны.

Каждый 7-битовый код начинается с 0 и кончается 1. Натолкнувшись на 7-битовый код, который начинается с 1, а кончается 0, сканер понимает, что код UPC либо неверно прочитан, либо подделан. Кроме того, в каждом коде группы единиц встречаются лишь дважды. Это значит, что каждая десятичная цифра в коде UPC зашифрована двумя вертикальными штрихами. Также нечетное число 1 в каждом из них. Она также позволяет проверить правильность штрих-кода — это так называемый контроль четности (parity).

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

Теперь можно расшифровать наш штрих-код с помощью двух таблиц выше.

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

Первая цифра символизирует тип кода. 0 означает, что код является обычным UPC. Если код нанесен на упаковку с товаром переменного веса, например, мясом или овощами, он начинается с 2. Купоны на скидки обозначаются цифрой 5. Следующие 5 цифр — это код производителя. В нашем примере код 51000 соответствует компании Campbell Soup. Его несут на себе все продукты с маркой Campbell. За ними следует пятизначный (01251) код конкретного продукта данной компании, в данном случае код банки с куриным супом емкостью 10 3/4 унции. Код продукта имеет смысл лишь в сочетании с кодом производителя. У куриного супа с вермишелью, произведенного другой компанией, будет другой код продукта, в свою очередь код 01251 может значить нечто совершенно иное у другого производителя.

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

Последняя цифра (в нашем случае 7) называется символом проверки остатка (modulo check character) и тоже используется Чтобы проверить его в деле, присвоим каждой из первых 11 цифр (0 51000 01251 в нашем примере) букву:

A BCDEF GHIJK

Теперь вычислим следующее выражение:

и вычтем результат из ближайшего большего числа, кратного десяти. Полученное число и будет символом проверки остатка. Для куриного супа с вермишелью Campbell:

Ближайшее большее число, кратное десяти, — 30. Далее:

Это число напечатано под штрих-кодом и зашифровано в нем. Используется проверка остатка для вящей надежности. Если остаток, вычисленный по штрих-коду, не совпадет с остатком, явно указанным в нем, штрих-код не будет считаться прочитанным.

Для представления десятичной цифры от 0 до 9 достаточно 4 битов. С другой стороны, в UPC их используется 7. Всего в штрих-коде 11 осмысленных десятичных цифр закодировано 95 битами. А если учесть, что UPC с обеих сторон выделен пустым пространством, эквивалентным 9 нулевым битам, получается, что во всем штрих-коде 11 цифр закодировано 113 битами, по 10 бит на цифру!

Как мы уже видели, избыток битов частично применяется для надежности считывания. От кода продукта было бы мало толку, если бы его можно было в два счета исправить обычным фломастером.

Из-за того что правая группа кодов противоположна левой(в левой стоит 1 - значит в правой 0 и наооборот), то код можно считывать справа на лево и сканер поймет, что код считывается справа на лево.

Для расшифроки правосторонних кодов используют следующую таблицу.

Эти 7-битовые коды отличаются от кодов, считываемых слева направо. Никакой путаницы не возникает.

Далее идет речь про кодирование азбуки Морзе в двоичный код.

Каждая буква начинается с 1 и заканчивается пару нулей. Пара нулей означает пауза между буквами. Если нужно сделать паузу между словом, то к последней букве добавляется еще одна пара 0.

Фраза Hi There кодируется так

Сложение и умножение коммутативны, т.е. от перестановки операндов смысл не меняется. Вычитание и деление не является коммутативны.

Сложение и умножение является ассоциативными.

Умножение дистриубтивно относительно сложения.

Булевая алгебра

Операнды(буквы латинского алфавита) - множества, т.е. наборы чего угодно.

Символ "+" обозначает объединение множеств.

Символ "*" обозначает пересечение множеств.

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

Введем 2 символа 1 и 0.

Символ 1 означает все о чем идет речь, например множество кошек

где М и Ж подмножества множества Кошки, обозначают пол кошек. Поскольку в объединение кошек мужского и женского пола содежатся все кошки, то это равно 1.

Если встречается такая запись(перед 1 стоит "-") она означает, что множества "1-M" содержит всех кошек, кроме кошек мужского пола.

В булевой алгебре 0 обозначает пустое множество, т.е. множество не содержащее ни одного элемента.

Пустое множество получается в результате пересечения непересекающихся множеств(т.е. у них нет общего).

Пересечение всех кошек с кошками женского пола

Пересечение пустого множества с кошками женского пола

Объединение пустого множества с кошками женского пола

Объединение 1 с кошками женского пола

Закон противоречия

Ничто не может быть одновременно собой и своей противоположностью.

Буквами не обязательно обозначивать множество, их также можно заменить цифрами(1 и 0). Допустим мы пришли в зоомагазин и решили купить кошку, сказав продавцу параметры.

Это можно заменить на:

Или:

Продавец принес нам кошку и теперь мы можем заменять буквы на 1 и 0 исходя из того, что это за кошка(цвет, пол и т.д.)

Правила умножения в булевой алгебре

Правила сложения в булевой алгебре

Вычислим с помощью таблиц значение:

В резльтате мы получили 0, значит эта кошка нам не подходит.Позже продавец приносит новую кошку, мы проделываем все те же действия и получаем 1.

Объединяем булевую алгебру и электричество

Построим цепь с последовательно подключенными переключателями.

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

Работу в цепи можно представить так:

Также можно заменить на 1 и 0. Т.к. у переключателя только 2 состояния, то нам понадобится всего 1 бит.

Если левый и правый поменять местами, ничего не изменится.

Теперь построим схему с параллельно подклченными переключателями

Исходя из схемы, лампока будет гореть не зависимо от того замкнут 1, 2 или оба переключателя.

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

Из всего этого можно сделать вывод, что последовательно подключение выполняет операцию - И, а параллельное подключение - ИЛИ

Теперь это выражение

можно заменить на эл. схему:

Каждый переключатель помечен буквой, той же, что и в булевом выражении. Черта над буквой означает НЕ. Допутим НЕ Б или 1-Б.

Когда продавец принес первую кошку, можно было замкнуть переключатели так:

И наконец вторую кошку:

Существует вентили(не сантехнические), но довольно похожи на них, они выполняют логические операции: останавливаю, пропускают ток.

Выражение которое мы описывали в предыдущей главе для выбора кошки можно упростить, как и саму схему:

Коммутативный закон умножения позволяет изменить порядок переменных связанных с "*". И в результате у нас получится это:

Теперь сделаем замену переменных:

Подставим

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

Схема будет выглядить так:

Создадим для выбора кошки специальный прибор:

Если тумблер вверху - переключатель замкнут, внизу - разомкнут. Разебремся с 2 крайними переключателями.

Левый переключатель в этой паре обозначен Ч. Это значит, что когда он замкнут (как показано на рисунке), выбран черный цвет. Правый переключатель в паре обозначен Р, и его включение значит, что выбран рыжий окрас. Если оба тумблера вверху, выбран цвет «другой», что символизирует буква Д. Если оба тумблера внизу, выбран белый цвет (буква Б).

Этот набор переключателей называется устройством ввода (input device) информации, управляющей поведением цепи.

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

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

В работе телеграфа, реле принимает слабый сигнал, усиливает его и передает уже мощный, это происходит благодаря электромагниту.

В данной задаче, нам нужна реле не как усилитель, а как переключатель., упрлавляемый не вручную, а с помощью электричества.

Соединим реле с переключателем, парой батареек и лампочкой.

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

Если полоска притянута магнитом, то говорят что реле сработало(защелкнулось). Когда переключатель размыкается, сердечник перестаетбыть магнитом, полоска возвращается в изначальное положение, лампочка не горит.

Упростим схему землей. В данном случае земля означает просто общий провод, с реальной землей соединяться не должна.

И еще немного упростим.

На схеме 2 источника питания и 2 земли, их можно соединить.

Но для наших целей эта схема не слишком годится. Лучше избегать замкнутых цепей и описывать работу реле с помощью понятий входного (input) и выходного (output) сигналов.

Если на вход поступает ток (например, если он с помощью переключателя подключен к источнику питания), электромагнит срабатывает, и на выходе появляется напряжение.

На входе реле не обязательно должен стоять переключатель, а на выходе — лампочка. Выход одного реле может подключаться ко входу другого реле, например, так:

Соединение нескольких реле лежит в основе построения логических вентилей.

Лампочку с реле можно соединить 2 способами. Изменим положение металлической полоски:

Когда входной переключатель замкнут, лампочка гаснет из-за действия магнита.

Такое реле называется двухпозиционным (double-throw). У него два электрически противоположных выхода: когда на одном есть напряжение, на другом его нет.

Реле можно соединить последовательно:

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

Лампочка не включилась, т.к. нижний перелючатель разомкнут. Замкнем оба перелключателя.

Лампочка горит, если сработали оба реле. Эта схема называется вентилем И(AND).

Использовав символ вентиля И, можно изменить схему:

На:

Символ вентиля И не только заменяет два последовательно соединенных реле, но и подразумевает, что верхнее реле соединено с источником питания и оба соединены с землей.

Выход одного вентиля может входом другого вентиля:

Лампочка горит, если замкнуты оба переключателя.

Обозначим отсутствие напряжение - 0, наличие - 1. Выходной сигнал вентиля И зависит от входного так:

У вентиля И могут быть больше 2 входов

Лампочка горит, если замкнуты все 3 переключателя.

Это можно обозначить так:

Это трехвходной вентиль И.

Следующий логический вентиль состоит из 2 реле, соединенных параллельно.

Выходы двух реле соединены друг с другом, и с этого объединенного выхода питание поступает в лампочку. К включению лампочки приведет срабатывание любого из двух реле.

Представленная схема называется вентилем ИЛИ (OR).

Напряжение на выходе есть, если оно есть хотя бы на 1 входе. Обозначим наличие напряжение - 1, отсутствие - 0.

Двухпозиционное реле

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

Инвертор инвертирует 0 в 1 и наоборот.

Теперь начнем сборку прибора для выбора идеальной кошки.

Первый переключатель

Разомкнут - М, замкнут - Ж.

Второй переключатель

Разомкнут - нестерилизованная, замкнут - стерилизованная.

Третий и четвертый переключатель

Есть 2 переключателя, которые подключены к питанию.

Когда оба переключателя разомкнуты (как на рисунке), они символизируют выбор белого цвета

Чтобы выбрать черную кошку, мы замыкаем первый переключатель. Это можно реализовать с помощью инвертора и вентиля И.

Выход равен 1, если 1 - замкнут, 2 - разомкнут.

Подобным же образом мы выбираем рыжую кошку, замыкая второй переключатель.

Наконец, если оба переключателя разомкнуты, мы хотим кошку «другого» цвета

Соединим эти 4 схемы в одну( черные точки на схеме обозначают соединение проводов; провода, на пересечениях которых нет черных точек, не соединены).

Соединение вентилей и инверторов подчиняется нескольким простым правилам. Выход одного вентиля (или инвертора) может быть входом одного или нескольких вентилей (или инверторов). Выходы двух или более вентилей (или инверторов) никогда не соединяются между собой.

Эта схема, состоящая из четырех вентилей И и двух инверторов, называется дешифратором 2 линии на 4 (2-Line-to-4-Line Decoder). На вход этого дешифратора подаются 2 бита, которые в различных комбинациях представляют 4 различные величины. На выходе дешифратора имеем 4 сигнала, из которых в любой момент времени значение 1 имеет только один. Какой именно, зависит от входных величин. На тех же принципах строятся дешифраторы 3 линии на 8, 4 линии на 16 и т. д.

Выражение выбор кошки.

Каждому "+" соответсвует ИЛИ, каждому "*" соотвествует И.

Лампочка горит, когда оба переключателя разомкнуты. Если хотя бы один замкнут, лампочка не горит.

Такое поведение в точности противоположно поведению вентиля ИЛИ. Такая схема называется вентилем ИЛИ-НЕ (NOT OR или NOR). Его обозначение:

т. е. такое же, как у вентиля ИЛИ, но с небольшим кружком на выходе. Вентиль ИЛИ-НЕ эквивалентен схеме:

Такое поведение в точности противоположно работе вентиля И. Эта схема называется вентилем И-НЕ (NOT AND или NAND). Вентиль И-НЕ изображается, как вентиль И, но с кружком на выходе, означающим инверсию.

Буфер

Сигнал на входе = сигналу на выходе.

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

Иногда такую конфигурацию:

Изображают без инверторов:

Сигнал на входе вентиля И инвертируется, поскольку там стоят кружки.

Цель книги - построить компьютер, а для этого сначала нужно постриоить сумматор. Сложение - это практические единственные действия которые выполняют компьютеры.

Сумматор будет работать только с двоичными числами, вместо клавиатуры будут переключатели. Роль дисплея для отображения результата будет играть ряд лампочек.

Таблица для сложения двоичных чисел:

Результат сложения пары двоичных чисел, представленный подобным образом, содержит 2 бита: разряд суммы (sum bit) и разряд переноса (carry bit). Теперь разделим таблицу на 2. Одна будет предназначена для разряда суммы:

А другая для переноса:

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

Числа, поступающие на вход, будут не длиннее 8 битов.(0000-0000 --1111-1111)

Пульт управления сумматором:

2 ряда по 8 переключателей для ввода двоичных чисел. Нижнее положение - 0, верхнее - 1.

Устройство вывода - 9 лампочек. Лампа горит - 1, не горит - 0. 9 лампочек поскольку сумма может быть 9-разрядной.

Результат сложения чисел 0110-0101 и 1011-0110:

Создаваемый сумматор будет состоять из 144 реле, по 18 для каждоый из 8 пар битов которые мы будем складывать.

Таблица для переноса идентична таблице И.

Таблица для суммы идентичная(почти) таблице ИЛИ. Разница значений в правом нижнем углу.

Результат действия вентиля И-НЕ

Подключим к одним и тем же входам вентиль ИЛИ и вентиль И-НЕ.

Если подать на вход различные биты, то будет:

Не совсем то, что нужно. Но если сделать для схемы общий выход И, то все получится:

Созданная схема носит имя - исключающее ИЛИ

Итого, сложение двуч двоичных чисел приводит к появлению бита суммы и бита переноса:

Для сложение цифр можно объединить 2 вентиля:

Для упрощения заменим эту схему на:

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

Допустим мы складываем два двоичных числа

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

Чтобы сложить три двоичных цифры, нам нужны два полусумматора и вентиль ИЛИ:

Чтобы разобраться в работе этой схемы, начнем со входов А и В в первом полусумматоре (том, что слева). Результатом его работы являются сумма и перенос. Эту сумму нужно прибавить к переносу из предыдущего столбца, поэтому оба числа подаются на вход второго полусумматора. Сумма из второго полусумматора будет окончательной суммой. Два переноса из полусумматоров попадают на входы вентиля ИЛИ. В этом месте, конечно, можно использовать еще один полусумматор, который выполнит необходимые действия. Но, проанализировав возможные варианты, вы убедитесь, что выходы для переноса из двух полусумматоров никогда не будут одновременно равны 1. Для их сложения вполне достаточно вентиля ИЛИ, который действует аналогично вентилю Искл-ИЛИ, если его входы не равны 1 одновременно.

Теперь назовем эту схему полным сумматором (full adder) и введем для нее обозначение

В каждом вентиле И, ИЛИ, И-НЕ по 2 реле, т.о. в искл ИЛИ 6 реле. Полусумматор состоит из искл ИЛИ и И, т.е. 8 реле. Каждый полный сумматор состоит из двух полусумматоров и одного вентиля ИЛИ, итого 18 реле. Для нашего сумматора нужно 8 полный сумматоров итого 144 реле.

Наш пульт

Начнем присоединять полные сумматоры к лампочкам и переключателям. Начнем с того, что соединим два крайних правых переключателя, крайнюю правую лампочку и полный сумматор.

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

Следующая пара переключателей и след. лампочка.

Выход для переноса из первого полного сумматора становится входом для переноса во второй полный сумматор. Схемы для сложения всех последующих столбцов аналогичны. Разряд переноса из одного столбца подается на вход для переноса следующего столбца.

Восьмая и последняя пара переключателей соединяется с последним полным сумматором так:

Последний выход для переноса соединяется с девятой лампочкой.

Теперь изобразим все восемь полных сумматоров (Full Adder, FA) сразу, подключив все выходы для переноса (Carry Out, CO) к последующим входам для переноса (Carry In, CI) и обозначив сумму буквой S (Sum).

Наконец, введем единое обозначение для 8-битового сумматора. Его входы обозначены буквами от А0 до А7 и от В0 до В7, а выходы — буквами от S0 до S7.

8-битовый сумматор можно изобразить так:

Создав один 8-битовый сумматор, вы легко построите и второй. Их можно расположить каскадом для сложения 16- битовых чисел.

Выход для переноса сумматора справа соединяется с входом для переноса сумматора слева. Сумматор слева получает на входе 8 старших цифр двух складываемых чисел и выдает на выходе 8 старших разрядов результата.

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

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

Здесь в первом столбце 6>3, из меньшего мы не можем вычесть большое, поэтому должны занять единицу у следующего разряда. у 5 занимаем 1 и получается уже 13-6, а вместо 5 становится 4. Будет довольно трудно реализовать заимствование на схеме, но есть способ как это избежать.

Допустим у нас есть пример, все тот же, 253-176.

253 - 176 = 253 - 176 + 1000 - 1000 = 253 - 176 + 999 + 1 - 1000 = 253 + (999 - 176) - 1000 + 1

Когда из 176 мы вычитаем 999 результатом будет дополнение до девяти.

Что делать, если вычитаемое больше уменьшаемого?

Мы из большего вычитаем меньшее и ставим знак большего числа.

Чтобы сделать это без заимствования

Как же делать это в двоичных числах?

Результат называется дополнением до единиц. На самом деле это не совсем вычитание, здесь 0 изменяется на 1, изменяется на 0, как в инверторе.

Теперь попробуем сделать это для отрицательного результата.

Получается 77, но не забываем о "-".

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

Вот так будет выглядить наш новый пульт:

Для отображения результата используется 8 лампочек. Девятая лампочка - переполнение/исчезновение. Она сигнализирует, что вычисленное число не может быть представлено только 8 лампочками. Это происходит, если сумма больше 255 (переполнение разрядов) или если разность оказалась отрицательной (исчезновение разрядов).

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

Но данная схема инвертирует биты всегда, а нам нужно чтобы инвертирование происходило только при вычитании, поэтому подойдет такая схема:

Если сигнал Инверсия равен 0, восемь выходов вентилей Искл-ИЛИ повторяют сигнал на восьми их входах. Например, если на вход подается число 01100001, на выходе также будет 01100001. Если же сигнал Инверсия равен 1, восемь входных сигналов будут инвертироваться. Если на входе 01100001, на выходе имеем 10011110.

Поместим восемь вентилей Искл-ИЛИ в общий прямоугольник под названием дополнение до единицы (ones’ complement):

Теперь вентиль «дополнение до единицы», 8-битовый сумматор и выходной вентиль Искл-ИЛИ можно собрать в единую схему:

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

Как можно представить отрицательные числа не используя "-"?

Допустим, у нас есть банковский счет, на котором всегда хранится не более 500 рублей, банк разрешает кратковременный перерасход на 500 рублей, т.е. баланс заключается между -500 до 499 рублей. Этот диапозон не изменен. В диапазоне 1000 целых чисел, мы можем их представить в виде 3 десятичных цифр. Хитрость в том, что отрицательные числа можно представить из диапазона 500-999

Числа идут по кругу. Наименьшее отрицательное число (500) выглядит как продолжение наибольшего положительного (499). Число 999 (представляющее –1) на единицу меньше 0. Если прибавить к 999 единицу, мы получим 1000, но поскольку мы имеем дело только с тремя цифрами, в действительности получаем 000.

Такой способ обозначения отрицательных чисел называется дополнением до десяти (ten’s complement). Чтобы преобразовать трехзначное отрицательное число в дополнение до 10, вычитаем его из 999 и добавляем 1. Иными словами, дополнение до десяти — это дополнение до девяти плюс 1. Например, чтобы переделать –255 в дополнение до десяти, вычтем его из 999, получив 744, и прибавим 1, что дает 745.

Вычитание - сложение с отрицательным числом, теперь когда мы научились представлять отрицательные числа по-другому это действительно так. Допустим у нас на счете 200 рублей, мы решили снять 50 рублей, т.е. будет -50 рублей, но это также можно представить как 999-50+1=950 рублей, теперь 950+200 = 150 рублей, столько останется на счете денег. Если мы захотим снять еще 400 рублей, то будет 999-400+1=600 рублей, 600 + 150 = 750 рублей, т.е. мы ушли в -250 рублей.

Аналогичная система в двоичном счислении называется дополнением до двух (two’s complement). Предположим, что мы работаем только с 8-битовыми числами, заключенными в пределах от 00000000 до 11111111, или от 0 до 255 в десятичной системе. Чтобы отображать с их помощью также и отрицательные числа, придется отдать в отрицательную область все 8- битовые числа, начинающиеся с 1, как показано в таблице

Диапазон чисел, которые вы теперь можете представить, ограничен пределами от –128 до +127. Старший значащий бит (крайний слева) называется знаковым разрядом (sign bit). Знаковый разряд равен 1 для отрицательных чисел и 0 для положительных

Чтобы вычислить дополнение до двух, нужно посчитать дополнение до единицы и прибавить 1 или, что эквивалентно, инвертировать все цифры и прибавить 1. Например, десятичное число 125 в двоичной системе выглядит как 01111101. Чтобы представить –125 в виде дополнения до двух, инвертируем цифры в числе 01111101, получая в результате 10000010, а затем прибавляем единицу, что дает 10000011.

При этом необходимо следить за переполнением или исчезновением разрядов. Такое случится, если результат сложения окажется больше 127 или меньше –128. Допустим, мы хотим сложить число 125 с ним самим.

Старший бит равен 1, т. е. результат интерпретируется как отрицательное число и становится равным –6. То же самое происходит, если с самим собой вы сложите число –125.

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

Есть 2 способа использования двоичных чисел.

Двоичное число может быть со знаком (signed) или без знака (unsigned). 8-битовые числа без знака попадают в диапазон от 0 до 255. 8-битовые числа со знаком попадают в диапазон от –128 до 127. Только по виду числа вы не сможете определить, является оно числом со знаком или без знака. Например, ктото скажет вам: «У меня есть 8-битовое двоичное число, равное 10110110. Каков его десятичный эквивалент?» Вам придется осведомиться: «Со знаком или без знака? Это может быть либо –74, либо 182».

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

пока переключатель замкнут, металлическая полоска будет метаться между двумя контактами, то замыкая, то размыкая цепь, причем ее движения, вероятно, будут сопровождаться шумом. Такое шумящее реле называется зуммером (buzzer). Если прикрепить к полоске молоточек, рядом металлическую чашку, то мы соорудим звонок.

Также схему можно собрать так:

Это похоже на:

Это инвертор, если вход = 0, то выход = 1 и наооборот. Замыкание переключателя вызовет попеременное вкл/выкл реле. Чтобы схема работала вечно можно обойтись без переключателя:

На этой схеме вход и выход одно и тоже, это реле и ему нужно время, чтобы перейти из одного состояния в другое. Если в данный момент вход = выход, то через время они станут противоположны. Значение выхода в такой цепи будет переодически меняться: есть напряжение/нет напряжения или 0/1.

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

Выход осицилирует между 0 и 1. Такое изменение сигнала можно представить так:

Это можно считать графиком:

Смысл этого графика в том, что с течением времени сигнал на выходе вибратора периодически переключается с 0 на 1 и обратно. Поэтому вибратор иногда сравнивают с часами: подсчитав число колебаний, вы (после некоторых вычислений) сможете сказать, сколько прошло времени.

Циклом колебаний - называется интервал в течение которого выход вибратора изменяется, а затем возвращается в изначальное положение.

Время которое занмается один цикл называется периодом колебаний

Частота колебаний есть величина, обратная периоду. Например, если период колебаний равен 0,05 сек, частота колебаний 1/0,05 = 20 колебаний в секунду, т. е. выход вибратора меняет свое состояние и возвращается обратно 20 раз в секунду. Частоту измеряют в Гц. Т.е. наш вибратор имеет частоту 20 Гц.

Рассмотрим данную схему:

Выход левого вентиля ИЛИНЕ подключен ко входу правого вентиля ИЛИ-НЕ, а выход правого вентиля ИЛИ-НЕ является входом левого вентиля ИЛИ-НЕ. Такое соединение называется обратной связью (feedback). Как и в вибраторе, выход цепи является ее же входом.

Поначалу ток протекает только по цепи от выхода левого вентиля ИЛИ-НЕ. Это происходит из-за того, что оба входа этого вентиля равны 0. Замкнем верхний переключатель. Выход левого вентиля ИЛИ-НЕ становится 0, что означает появление 1 на выходе правого вентиля ИЛИ-НЕ — лампочка загорается:

Теперь разомкнем верхний переключатель, лампочка по-прежнему продолжит гореть, т.к. выход левого вентиля будет 1 только если оба входа = 0. Теперь верхний переключатель никак не влияет на цепь. Теперь замкнем нижний переключатель:

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

При разомкнутых переключателях у этой схемы есть два устойчивых состояния(лампочка горит, лампочка не горит). Такая схема называется триггером (flip-flop).

Триггер сохраняет информацию. Он «запоминает». В частности, в последней схеме триггер помнит, какой переключатель был замкнут последним. Если в своих изысканиях вы натолкнетесь на такой триггер и увидите, что лампочка горит, вы сделаете вывод, что последним был замкнут верхний переключатель, а если не горит — нижний.

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

Существует несколько разновидностей триггеров. Простейший триггер — который мы разобрали выше — называется RSтриггером (Reset-Set, Сброс-Установка). Вентили ИЛИ-НЕ на схеме RS-триггера обычно изображаются симметрично:

Входы S и R используются для установки (set) и сброса (reset).

Когда на вход R и S не подано напряжение Q=0, не Q = 1. Если R,S=0, то Q=0, не Q = 1.

Если R=0, S=1, то Q=1, не Q=0. Происходит запись информации.

Если мы изменим S=0, то ничего не изменится, произойдет запоминание информации.

Если R изменить на 1, то произойдет обнуление, Q=0, не Q=1.

Ситуация, в которой входы S и R имеют значение 1, запрещена. Это не значит, что вас оштрафуют, если вы подадите 1 на оба входа. Просто если в этой схеме на оба входа попадает 1, оба выхода будут иметь значения 0, а это противоречит нашему желанию, чтобы выход _ Q был противоположен выходу Q.

Изображение RS-триггера:

Попробуем собрать схему которая запоминала бы был сигнал 0 или 1.

Будет 2 входа, один из них данные. На этот вход "Данные" будет поступать 0 или 1. Второй вход - "Запомнить этот бит". Обычно подается 0 и сигнал данные на состояние схемы не влияет. Когда сигнал «Запомнить этот бит» равен 1, сигнал Данные копируется на выходе схемы. После этого сигнал «Запомнить этот бит» может вернуться в состояние 0. В этот момент схема запоминает последнее значение сигнала Данные; последующие изменения сигнала Данные на состояние схемы не влияют.

Нам нужна схема с такой логикой:

В первых двух случаях, когда сигнал «Запомнить этот бит» равен 1, выход Q имеет то же значение, что и вход Данные. Когда сигнал «Запомнить этот бит» обращается в 0, выход Q сохраняет значение, которое было на нем до этого. Заметьте: при нулевом сигнале «Запомнить этот бит», значение выхода Q не зависит от изменений в сигнале Данные.

Таблицу логики можно упростить так:

Символ «Х» означает «не важно», т. е. при нулевом сигнале на входе «Запомнить этот бит» значение входа Данные не имеет значения — выход Q останется неизменным

Чтобы реализовать сигнал "Запомнить этот бит" нам нужно на вход два вентиля И.

Если сигнал "Запомнить этот бит" = 0, то значение сигнала "Установка" не влияет на выходные сигнал, как и сигнал "Сброс".

Чтобы схема работала подобно обычному RS-триггеру, сигнал на входе «Запомнить этот бит» должен равняться 1:

В этом случае выход верхнего вентиля И совпадает с сигналом Сброс, а выход нижнего вентиля И — с сигналом Установка

Нам нужно два выхода, а не три. Вспомним исходную таблицу логики RS-триггера: одновременное равенство 1 сигналов Сброс и Установка не допускается, и подобных ситуаций следует избегать. Кроме того, не имеет смысла и их одновременное равенство 0: эта ситуация означает неизменность выходного сигнала, что в новой схеме соответствует установке в 0 сигнала «Запомнить этот бит». Схему следует организовать так, чтобы при единичном сигнале Установка сигнал Сброс равнялся 0, а при сигнале Установка равном 0 сигнал Сброс устанавливался бы в 1. Сигнал Данные может быть эквивалентен сигналу Установка, а инвертированный сигнал Данные — сигналу Сброс.

В такой ситуации оба входа равны 0, и выход Q тоже равен 0 (т. е. выход _ Q равен 1). Пока сигнал «Запомнить этот бит» равен 0, сигнал Данные на состояние схемы не влияет.

Когда сигнал «Запомнить этот бит» обращается в 1, сигнал на выходе схемы равен сигналу на входе Данные

Выход Q теперь имеет то же значение, что и вход Данные, а выход _ Q противоположен ему. Теперь входу «Запомнить этот бит» можно вернуть значение 0.

Схема не изменилась, значение сигнала Данные запомнились, когда сигнал "Запомнить этот бит" = 1. Последующие изменения сигнала на нее не влияют.

Эта схема называется D-триггером со срабатыванием по уровню (level-triggered D-type flip-flop). Буква D происходит от английского слова «data» (данные). Срабатывание по уровню означает, что триггер сохраняет значение сигнала на входе Данные, когда сигнал «Запомнить этот бит» достигает определенного уровня, в нашем случае 1.

Обычно в книгах по схемотехнике вместо «Запомнить этот бит» применяется обозначение Синхронизация (Clock) — оно говорит о том, что иногда этот сигнал используется в качестве метронома, который периодически колеблется между 0 и 1. Но пока сигнал на входе Clock просто говорит, что значение на входе Данные нужно сохранить

В таблицах логики и на схемах часто название входа Данные (data) сокращается до D, а вход Clock записывают как Clk.

Эту схему также называют защелкой D-типа со срабатыванием по уровню. Термин «защелка» означает, что схема как бы «запирает» один бит информации и хранит его для дальнейшего использования. При желании такую схему можно считать памятью емкостью в 1 бит.

Вспомним, что когда-то мы делали 8-битовый сумматор, допустим мы хотим сложить 3 числа, а у нас всего 2 ряда тумблеров. Т.е. результат сложения 2-ух чисел придется запомнить или записать на бумаге, не очень так-то. Давайте сделаем, чтобы сумма запоминалась внутри сумматора.

Мы решим эту проблему с помощью 8 защелок, в каждой из которых используются 2 вентиля ИЛИ-НЕ, 2 вентиля И и 1 инвертор. Объединим их в одно устройство, соединив между собой все входы Clk:

Эта защелка может одновременно хранить 8 битов. Восемь входов обозначены D0–D7, восемь выходов — Q0–Q7. С левой стороны расположен вход Clk. Обычно сигнал на нем равен 0. Когда же он обращается в 1, 8-битовое значение на входах D передается на выходы Q. Это 8-битовое число остается на выходе и после того, как сигнал Clk снова становится нулевым и сохраняется там до следующего перехода сигнала Clk в 1.

Наш сумматор из прошлой главы:

Выходы S двоичного сумматора подключим лампочке и входам защелки, для сохранения суммы ко входу Clk защелки подключим тумблер "Сохранить".

Селектор 2 линии на 1 (2-Line-to-1-Line Selector) позволяет с помощью переключателя выбирать, откуда следует подавать информацию на вход B — со второго ряда переключателей или с выходов Q защелки. Чтобы выбрать выходы 8-битовой защелки, переключатель нужно замкнуть. В селекторе «2 на 1» используется 8 одинаковых схем:

Если вход Выборка (Sel) равен 1, выход вентиля ИЛИ совпадает со входом B. Дело в том, что выход верхнего вентиля И равен входу B, а выход нижнего вентиля И — 0. Если вход Выборка равен 0, выход совпадает со входом A. Правила работы этой схемы обобщены в такой таблице логики.

В селекторе, включенном в модифицированный сумматор, содержится 8 таких 1-битовых селекторов. Их входы Выборка соединены между собой.

Новый сумматор не совсем корректно обрабатывает сигнал CO (выход для переноса). Даже если сложение двух чисел приводит к появлению переноса (сигнал CO равен 1), при сложении суммы с третьим числом этот сигнал игнорируется. Решить эту проблему можно, создав сумматор, защелку и селектор, разрядность которых равна 16 или хотя бы превышает разрядность максимального числа, с которым вам предстоит иметь дело. Но мы отложим решение этой проблемы до главы 17.

Модифицируем D-триггер, добавив к нему вентиль ИЛИ и входной сигнал Очистка (Clear или Clr), обычно равный 0. Но когда он обращается в 1, сигнал на выходе Q становится равным 0:

Обращение сигнала Q в 0 происходит независимо от сигналов на других входах: информация, записанная в триггере стирается.

Но почему нельзя на вход Данные подавать 0, а на вход Clk -1?

Как видим результат сумматора подает на Вход данные и он не всегда будет 0.

Сигнал на вход Clk защелки теперь подается с помощью переключателя Сложить (вместо него и переключателя Очистка лучше использовать кнопки).

Этот сумматор должен быть удобнее предыдущего особенно если нужно сложить несколько чисел. Для начала работы вы нажимаете кнопку Очистить, все выходы защелки обращаются в 0, все лампочки выключаются, мы вводим певое число, нажимаем сложить, лампочки отображают введенное число, вводим второе число, нажимаем сложить, теперь лампочки отображают сумму этих чисел. Работу можно продолжить продолжая вводить новые числа.

Спроектированный нами D-триггер срабатывает по уровню. Это значит, чтобы входные данные хранились на защелки вход Clk должен измениться с 0 - 1. Если в течение того времени, пока сигнал Clk равен 1, сигнал Данные изменится, все его изменения будут отражаться на величине выходов Q и _ Q.

Часто это именно то, что нужно. Но иногда предпочтительнее вход Clk со срабатыванием по фронту, он мало чем отличается от срабатыванием по уровню, но изменения на выходах происходят только когда сигнал меняется с 0 на 1, когда сигнал = 1 изменения не происходят. Т.е. изменения не отображаются на выходах, если сигнал Clk = 0 или 1.

Суть этой схемы, что вход Clk управляет как первым блоком, так и вторым. Но в первом блоке присутствует инвертер, т.е. первый блок работает как D-триггер за исключением того, что содержимое входа Данные сохраняется, когда сигнал Clk равен 0. Выходы первого блока являются входами для второго блока, и их содержимое сохраняется при обращении сигнала Clk в 1. Общий результат таков: сигнал на входе Данные сохраняется только при переходе сигнала Clk из 0 в 1. Рассмотрим работу триггера подробнее. На схеме он показан в состоянии покоя с нулями на входах Данные и Clk и нулем же на выходе Q

Подадим 1 на вход данные:

При этом изменяется состояние первого блока триггера, так как инвертированный сигнал Clk равен 1. Второй блок на изменение входа Данные не реагирует, так как неинвертированный сигнал Clk равен 0. Подаем 1 на вход Clk:

Срабатывает второй блок, и выход Q становится равным 1. Теперь сигнал на входе Данные может меняться (например, снова стать нулевым), но на выход Q это не повлияет.

Выходы Q и _ Q меняются только при изменении сигнала Clk с 0 на 1.

В таблице логики D-триггера, срабатывающего по фронту, нам потребуется новый символ — стрелка, направленная вверх. Она означает изменение сигнала с 0 на 1.

Стрелка указывает, что выход Q копирует вход Данные, когда сигнал Clk переходит с 0 на 1, т. е. совершает положительный переход (отрицательным называется переход с 1 на 0). На схемах этот триггер обозначается так:

Треугольная скобка указывает, что триггер срабатывает по фронту.

Вспомним наш вибратор, выход осилицирует между 0 и 1.

Соединим выход вибратора со входом Clk D-триггера, срабатывающего по фронту, а выход _ Q соединим с входом D:

Здесь выход триггера является его же входом — обратная связь с обратной связью! (Практическое воплощение этой схемы не лишено трудностей. Основу конструкции вибратора составляет реле, которое осциллирует с некоторой скоростью. Выход вибратора соединяется с другими реле, из которых собран триггер. Может статься, что эти реле обладают другой конструкцией и неспособны срабатывать с той же скоростью, что и вибратор. Чтобы не столкнуться с этой проблемой, будем считать, что реле в вибраторе работает гораздо медленнее остальных реле в схеме.)

Разберемся с данной схемой с помощью таблицой логики. Для начала примем, что вход Clk и выход Q равны 0, т. е. выход NOT Q, соединенный со входом D, равен 1.

Когда вход Clk меняется с 0 на 1, на выходе Q копируется значение со входа D.

Значение на выходе _ Q обратилось в 0, такой же сигнал пошел и на вход D. Сигнал Clk обратился в 1.

Значение сигнала Clk, поступающего из вибратора, снова обнулилось, но на выходе это не сказалось.

Затем сигнал Clk снова равен 1, выход D = 0, поэтому выход Q = 0 и выход NOT Q = 1.

Сигнал на входе D тоже обращается в 1.

Итого:

Каждый раз, когда вход Clk меняется с 0 на 1, выход Q меняется или с 0 на 1, или с 1 на 0. Ситуацию проясняет график:

Если частота вибратора — 20 Гц (т. е. 20 колебаний в секунду), частота изменений выхода Q вдвое меньше, т. е. 10 Гц. По этой причине схема, в которой выход _ Q соединен со входом Данные триггера, называется делителем частоты (frequency divider).

Выход делителя частоты может быть входом Clk другого делителя для следующего деления частоты. Вот схема из трех делителей частоты:

Подставим 0 и 1 для соответствующих сигналов

Если повернуть схему по часовой стрелке на 90 градусов, то можно увидеть двоичные числа:

Таким образом, схема считает от 0 до максимального числа, зависящего от колличества триггеров. В последовательности увеличивающихся двоичных чисел каждая колонка двоичных цифр меняется между 0 и 1 с частотой, вдвое меньшей, чем колонка справа от нее. Т.е. в первой колонке справа сначала чередуются 0 и 1, во второй колонке уже 0 0 и 1 1 и так увеличивается все. Данный счетчик имитирует эту последовательность. При каждом положительном переходе сигнала Clk происходит приращение (increment) выходов счетчика на 1.

Соединим 9 триггеров и поместим их в общий корпус.

Эта схема называется сквозным счетчиком (ripple counter), так как в ней выход каждого триггера становится входом Clk следующего триггера. Изменения сигнала последовательно проходят через все триггеры, и триггеры в конце схемы могут срабатывать с небольшой задержкой. Более надежный счетчик — синхронный (synchronous), в котором все выходы меняются одновременно.

Выходы от Q0 до Q7. Они собраны так, что выход первого триггера в цепочке (Q0) расположен справа. Подключив к этим выводам лампочки, вы сможете прочитать 8- битовое число.

При каждом положительном переходе сигнала Clk некоторые выходы меняются, некоторые — нет, но все вместе они отображают увеличивающиеся двоичные числа.

Теперь давайте попробуем определить частоту вибратор. Если соединить вибратор с входом Clk 8-битового счетчика, счетчик покажет, сколько колебаний совершил вибратор. Когда результат достигнет 11111111 (255 в десятичной системе), счетчик сбросится в 00000000. Вероятно, легче всего определить частоту вибратора так. Соедините с выходами 8-битового счетчика лампочки. Дождитесь, чтобы сигнал на всех выходах стал 0 (когда это произойдет, все лампочки погаснут), и запустите секундомер. Остановите его, когда все лампочки снова погаснут. Вы получите время, которое потребовалось для 256 колебаний вибратора. Допустим, это 10 секунд. Частота колебаний, таким образом, равна 256 ¸ 10, или 25,6 Гц.

D-триггер с предустановкой и очисткой, срабатывающий по фронту (edgetriggered D-type flip-flop with preset and clear):

Входы Pre и Clr обладают более высоким приоритетом, чем входы Clk и Данные. Обычно оба они равны 0. Когда вход Pre обращается в 1, выход Q также обращается в 1, а Q — в 0. Когда вход Clr равен 1, выход Q равен 0, а Q — 1. Подобно входам Установка и Сброс RS-триггера, входы Pre и Clr не должны одновременно обращаться в 1. В остальном этот триггер ведет себя как обычный D-триггер со срабатыванием по фронту

Bite(кусок) = 8 bit, родилось в фирме IBM 1956 год, чтобы не путать с битом стали писать byte.

Будучи 8-разрядным числом, байт может принимать значения от 00000000 до 11111111. Этими кодами можно обозначить положительные числа от 0 до 255 или положительные и отрицательные числа от –127 до 128 (если они записаны с помощью дополнения до 2). 1 байт позволяет зашифровать 28 , или 256, различных вариантов.

8-битовый байт удобен для хранения текста, поскольку практически в любом языке мира меньше 256 символов.

Половину байта, т.е. 4 бита называют тетрадой.

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

Из двоичную в десятичную

Из десятичной в двоичную. Способ немного сложный, проще данное десятичное число делить на 2(если оно делится без остатка, то пишется 0, иначе 1, потому все число переворачивается, т.е. если мы получили 101011, то двоичное число будет 110101)

Можно превращать двоичные числа в восьмиричные используя это таблицу.

Нужно лишь двоичное число разделить на 3 бита начиная справа

Но с восьмиричной системой есть одна проблема.

В двоичном представление значений байта варьируется от 00000000 - 11111111, а в восьмиричной от 000 - 377. В предыдущем примере правой и средней восьмеричным цифрам соответствуют полные тройки битов, а на левую цифру осталось только два бита. Это значит, что восьмеричное представление 16-битового числа:

Не совпадает с восьмеричным представлением двух составляющих его байтов:

Для решения этой проблемы нужна система счисления в которай байты делились бы на группы с равным колличеством битов. Т.е. 4 группы по 2 бита, либо 2 группы по 4 бита. Поэтому будем использовать шестнадцатеричную систему счисления

1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, 13, ...

Соответствие между дестичные, двоичными и шестандцатеричными числами

Далее заменяем буквы на цифры из таблицы и получаем ответ.

Преобразование чисел(до 65 535) из десятичной в шестнадцатеричную:

Таблица сложения для шестандцатеричного формата:

Ранее мы научились сохранять 1 бит информации, раз смогли сохранить 1 бит, то сможем сохранить и 2 и 3.

Изменим в нашем триггире названия входов и выхода. Это тот же триггер, только его выход Q назван Выводом данных (Data Out, DO), а вход Clk (который мы называли «Запомнить этот бит») получил имя Запись (Write, W). Сигнал на этом входе означает, что значение сигнала на входе Ввод данных (Data In, DI) нужно записать, или сохранить. В обычном состоянии сигнал Запись равен 0, и сигнал Ввод данных на выходной сигнал не влияет. Если значение сигнала Ввод данных нужно сохранить, мы подаем на вход Запись 1, а затем снова 0. Такие типы триггеров называются защелками, т.к. мы запираем данные внутри него.

Изобразить можно и так:

Из нескольких 1-битовых защелок легко собрать многобитовую. Достаточно соединить их входы Запись:

У этой 8-битовой защелки 8 входов и 8 выходов. Кроме того, у нее имеется единственный вход Запись, в обычном состоянии равный 0. Чтобы сохранить 8 битов информации, на вход Запись подается 1, а затем снова 0. Для 8-битовой защелки тоже можно ввести единое обозначение:

Или так:

Но допустим мы хотим иметь 1 вход и 1 выход, также хотим просмотреть полученные данные не как одно 8-битовое число, а как 8 однобитовых. Понадобится 8 однобитовых защелок.

Как проверять значение сигнала Вывод данных для каждой защелки, используя единственную лампочку?

Допустим, номер защелки для просмотра бита задавать переключателями. Всего 8 зашелок, значит понадобится 2^(3)=8, т.е. 3 переключателя.000, 001, 010, 011, 100, 101, 110 и 111.

Это устройство представляет собой корпус с 8 входами сверху и 3 входами слева. Замыкая и размыкая три переключателя, вы задаете, какой из входов должен перенаправляться на выход, подключенный к лампочке

Когда-то мы уже использовали это "Некое устройство" в модернизированном калькуляторе, оно отвечает за то откуда брать сигнал с защелки или с набора переключателей, называлось селектор 2 линии на 1.

Сейчас нам нужен селектор 8 линий на 1:

Наверху показаны 8 входов для данных, а слева — 3 входа для выборки (Select). Используя их, вы задаете вход, сигнал с которого попадает на выход. Если сигналы Select равны 000, на выход попадает сигнал со входа D0. Сигналы 111 задают вывод данных со входа D7, а число 101 на входах для выборки означает вывод сигнала D5. Вот как выглядит таблица логики селектора.

Селектор «8 на 1» состоит из трех инверторов, восьми 4- входовых вентилей И и одного 8-входового вентиля ИЛИ:

На входе мы имеем сигналы Данные и Запись. И если входы D всех 1-битовых защелок можно соединить между собой, с сигналами Запись это уже не пройдет, поскольку мы хотим осуществлять запись в каждую защелку индивидуально. Нам нужен сигнал Запись, подаваемый на одну (и только одну) защелку:

Для решения этой задачи нам понадобится схема, которая напоминает селектор, но в действительности выполняет прямо противоположное действие, а именно дешифратор 3 линии на 8 (3-to-8 Decoder).

У дешифратора «3 на 8» восемь выходов. В любой момент времени все они равны 0, кроме выхода, указанного сигналами S0, S1 и S2. Его значение совпадает со значением входа Ввод данных.

И снова обратим внимание на шестой сверху вентиль И. Три из его сигналов равны S0, S– 1 и S2, которые ни на один другой вентиль не подаются. Это значит, что если на входы для выборки подается 101, то выход всех вентилей, кроме шестого, будет равен 0. Его же выход равен 1, если сигнал Данные равен 1, и 0, если сигнал Данные равен 0. Заполним таблицу логики для этого дешифратора.

А теперь посмотрим, как полностью выглядит схема с защелками.

Сигналы выборки для дешифратора и селектора совпадают. Обратите внимание и на слово, которым я назвал эти сигналы — адрес (address). 3-битовый адрес действует подобно почтовому индексу, указывая, к которой из 8 защелок происходит обращение. На входе сигнал Адрес определяет, в какую защелку будет записан сигнал Ввод данных. На выходе (в нижней части рисунка) адрес используется, чтобы с помощью селектора «8 на 1» считать содержимое одной из восьми защелок.

Защелки в такой конфигурации иногда называют памятью с записью/чтением (read/write memory), а чаще — памятью с произвольным доступом, или произвольной выборкой (random access memory, RAM). В данном варианте память RAM используется для хранения 8 независимых 1-битовых величин. На схеме ее можно обозначить так:

Это устройство названо Памятью из-за его способности сохранять информацию. Термин «произвольный доступ» означает, что данные могут быть записаны или прочитаны из любой защелки — достаточно подать соответствующие сигналы на вход Адрес. Этим память с произвольным доступом отличается от устройств с последовательным доступом: в них нельзя прочитать данные по адресу 101, не прочитав перед этим данные по адресу 100.

Разобранную нами конфигурацию RAM часто называют массивом RAM (RAM array). Наш массив собран по схеме, которую иногда сокращенно обозначают «8x1», т. е. восемь 1- битовых значений. Перемножив два этих числа, вы получите полное число битов, которое можно сохранить в массиве.

Массивы RAM можно объединять по-разному. Вот, например, как создать память для хранения восьми 2-битовых значений.

Сигналы Адрес и Запись двух массивов соединены между собой, поэтому в результате получаем массив 8x2

Массив по-прежнему способен хранить 8 значений, но каждое из них имеет размер 2 бита.

В другой схеме два массива RAM 8 ´ 1 соединены подобно отдельным защелкам — с помощью селектора «2 на 1» и дешифратора «1 на 2»

Сигнал Выборка, подаваемый на селектор и дешифратор, по сути выбирает один из двух массивов RAM 8 ´ 1 и является четвертой адресной линией. Иначе говоря, мы собрали массив RAM 16x1.

В нем можно хранить шестнадцать 1-битовых значений.

Число значений, хранение которых допускается в массиве, непосредственно связано с количеством адресных линий. Если бы входов Адрес вовсе не было (как в 1-битовой или 8-битовой защелке), хранить можно было бы всего одно значение. С одним входом Адрес допускается хранение уже двух значений, с тремя входами — 8 значений, с четырьмя — 16 и т. д. в соответствии с формулой:

Это массив предназначен для хранения 8 196 битов, разбитых на 1 024 восьмибитовых числа. Для выбора из них нужного используются 10 адресных линий, поскольку 1024 = 210. Кроме того, в массиве 8 входов и 8 выходов для данных. Другими словами, в этом массиве, как в почтовом отделении с 1 024 абонентскими ящиками, хранятся 1 024 байта, или 1 килобайт. Термин «килобайт» часто становится причиной некоторой путаницы.

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

Допустим у нас есть массив памяти емкостью 65 536 байтов

Создадим пульт управления памятью, который позволял бы записывать данные в ячейки памяти и проверять их содержимое. На этом пульте будет 16 переключателей для указания адреса, 8 — для ввода числа, которое нужно записать, еще один — для подачи сигнала на запись и 8 лампочек для отображения 8-разрядного числа из памяти.

На рисунке все переключатели стоят в положении «выключено» (0). Переключатель Перехват предназначен для того, чтобы разрешать использовать ту же память к которой подключен пульт, когда он выключен остальные переключатели с памятью не связаны, когда включен управления памятью осуществляется с помощью пульта.

Для реализации переключателя Перехват нам потребуется 25 селекторов «2 на 1» — 16 для адресных переключателей, 8 для переключателей, с помощью которых вводится число, и еще один для переключателя Запись. Вот как выглядит нужная схема:

Когда переключатель Перехват разомкнут, как показано на рисунке, информация на входы массива памяти Адрес, Данные и Запись поступает извне (эти сигналы схематически изображены в верхней левой части рисунка). Если переключатель замкнут, информация на эти входы подается с переключателей. Независимо от того, откуда в память поступает информация, из нее она идет на 8 лампочек.

Массив памяти RAM 64Kx8 с пультом

Если переключатель замкнут, с помощью 16 адрессов мы можем указать 65 536 восьмибитовых значений и отобразят все этой лампочки, если мы хотим изменить, мы должны написать это число с помощью переключателей и замкнуть переключатель Записать.

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

ОДНАЖДЫ

Появление транзисторв.

У полопроводников на внешней оболчке 4 электрона - половина того, что может вмещать эта оболочка. В чистом полупроводнике между амтомами формируется кристаллическая решетка, такие полупроводники проводят ток плохо.

Но их можно легировать, т.е. добавлять различные примеси.Примеси одного рода добавлять в кристалл избыточные электроны и он становится полупроводником n-типа(негавтиный), добавление примеси другого типа приводит к создания p-типа(позитивный)

Для создания усилителя нужно между слоями негативного разместить позитиивный. Полученное устройство называется npn-транзистором, а входящие в его состав полупроводниковые фрагменты известны как коллектор(collector), бза(base), эмиттер(emitter)

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

Транзисторы изготавливаются из твердого вещества - полупроводника, создаваемого из кремния.

Тразисторы компатнее, меньше греются, потребляют меньше энергии, чем вакуумные лампы.

Благодаря транзисторам компьютеры стали надежднее, компактнее, экономичнее.

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

Чаще других используется пластмассовый корпус DIP(dual inline package, корпус с двухрядным расположенем выводов) 14, 16 или 40 выводов.

На рисунке показана микросхема с 16 выводами. Если взять ее так, чтобы небольшая прорезь в корпусе оказалась слева (как на рисунке), то нумерация выводов от 1 до 16 будет идти против часовой стрелки, начинаясь с левого нижнего вывода и заканчиваясь на левом верхнем. Расстояние между выводами равно 1/10 дюйма (около 2,5 мм).

Для описания микросхем используются следующие понятия:

  • малый уровень интеграции (small-scale integration, SSI) —

    микросхемы менее чем с 10 логическими схемами;

  • средний уровень интеграции (medium-scale integration, MSI), или СИС (средняя интегральная схема) — микросхемы с 10–100 логическими схемами;

  • высокий уровень интеграции (large-scale integration, LSI), или БИС (большая интегральная схема) —

    микросхемы с 100–5000 логических схем;

  • сверхвысокий уровень

    интеграции (very-large-scale integration, VLSI), или СБИС

    (сверхбольшая интегральная схема) — микросхемы с 5000–

    50000 логических схем;

  • суперсверхвысокий уровень интеграции

    (super-large-scale integration, SLSI) — микросхемы с 50000–

    100000 логических схем;

  • ультравысокий уровень интеграции

    (ultra-large-scale integration, ULSI), или УБИС (ультрабольшая

    интегральная схема) — микросхемы более чем с 100000 логических схем.

Название 14 входа Vcc, эк.ивалентен контакту со значком V, которым обозначается питающее напряжение. Индекс "c" означает, что в микросхеме питание подается на коллектор транзистора, индекс удвоен, поскольку так обозначают входное напряжение. Символы Gnd в обозначении 7-го контакта означают «ground» — земля. Любая микросхема должны быть подключена к питанию и к земле.

Питающее напряжение для ТТЛ-микросхем серии 7400 заключено в пределах от 4,75 до 5,25 В, иначе говоря 5 вольт ± 5%. Если напряжение упадет ниже 4,75 В, микросхема не будет работать. Если оно превысит 5,25 В, микросхема может испортиться. Батарейки для питания микросхем обычно не применяются. Даже если вы найдете 5-вольтовую батарейку, неточность напряжения в ней превысит допустимые для микросхем пределы. Для устройств на микросхемах ТТЛ, как правило, используется питание от розетки.

У каждого из четырех вентилей И-НЕ микросхемы 7400 предусмотрено два входа и один выход. Работают они независимо друг от друга.

Раньше мы гооворили, что входной сигнал равен либо 1(есть напряжение), либо 0(нет напряжения). В действительности, выхдной сигнал любого из вентилей может варьироваться от 0(земля) до 5В(Vcc). Напряжение в диапазоне 0-0.8 считаются логическим нулем, а напряжение от 2-5В логической единицей, напряжений между 0.8 и 2В следует избегать.

Напряжение около 0,2 В на выходе вентиля ТТЛ соответствует нулю, напряжение 3,4 В — единице. Поскольку эти напряжения могут несколько варьироваться, иногда говорят не о 0 и 1, а о низком (low) и высоком (high) уровнях выходного сигнала. Более того, иногда высокое напряжение соответствует 0, а низкое — 1. Тогда говорят о конфигурации с отрицательной (negative) логикой.

Выходные напряжения 0,2 В (логический 0) и 3,4 В (логическая 1) на выходе вентиля ТТЛ заведомо попадают в допустимые пределы — от 0 до 0,8 В для нуля и от 2 до 5 В для единицы. Так микросхемы ТТЛ защищаются от шума. Единичный сигнал может упасть на 1,4 В и все же остаться единицей. Нулевой сигнал может вырасти на 0,6 В и остаться нулем.

Вероятно, самой важной характеристикой конкретной микросхемы является время установки (propagation time), т. е. временной интервал между изменением сигнала на входе и соответствующим изменением сигнала на выходе.

Время установки микросхем обычно измеряется в наносекундах (нс). Наносекунда — это очень короткий промежуток времени, одна миллиардная доля секунды. Время установки для вентилей И-НЕ в микросхеме 7400 гарантированно не превышает 22 нс — 0,000000022 секунды.

В целом ничего интересного, далее идут несколько схем ттл, но сейчас они вряд ли используются, поэтому вряд ли нужно в них разбираться.Ну и в конце про процессор 8008 8 разрядный частота 200 кГЦ адрессное пространство 16 кб от Intel.

ОДНАЖДЫ

В памяти компьютера информацаия хранится в битах, поэтоу информацию, которую мы будем сохранять нужно преобразовать в цифровую форму.

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

Для выполнения задачи откажемся от различных шрифтов, форматирования, начертаний(полужирный, курсив, подчеркивание, цвет, верхний и нижний индекс, диакритические знаки.

Наша задача: представить предложение набором кодов.

В предложение 17 символов(с пробелами)

Будем использовать ASCII - это 7-битовая кодировка. Ее коды принимают значения от 0000000 до 1111111 или в шестнадцатеричном выражении от 00h до 7Fh.

Следующая группа 32 кодов.

Следующая группа 32 кодов.

Коды прописных букв в ASCII отличаются от кодов соответствующих строчных букв на 20h. Благодаря этому легко написать программу, которая заменяла бы все строчные буквы в текстовой строке прописными. Допустим, некоторую область в памяти занимает текстовая строка, по 1 байту на символ. Ниже в подпрограмме для процессора 8080 считается, что адрес первого символа строки записан в паре регистров HL; в регистре С хранится длина строки в символах:

Capitalize: MOV A,C        ; C = число оставшихся символов
            CPI A,00h      ; Сравнить с 0
            JZ AllDone     ; Если С = 0, закончить
            MOV A,[HL]     ; Извлечь следующий символ
            CPI A,61h      ; Меньше, чем "a"?
            JC SkipIt      ; Если да, игнорировать
            CPI A,7Bh      ; Больше, чем "z"?
            JNC SkipIt     ; Если да, игнорировать
            SBI A,20h      ; Буква строчная, значит,
                           ; вычитаем 20h
            MOV [HL],A     ; Сохранить символ

SkipIt:     INX HL         ; Перейти к следующему символу
            DCR C          ; Уменьшить счетчик на 1
            JMP Capitalize ; Вернуться к началу

AllDone:    RET

В наборе ASCII есть 33 управляющих символа, которые на экране не отображаются.

Допустим, у нас есть код

Расшифровка будет такая

ОДНАЖДЫ

ОДНАЖДЫ

Нужно представить число в диапазоне -9 999999.99 до 9 999 999.99. Представим число -4 325 120, 25 в двоичном виде:

Перва слева тетрада = 1, т.е. число отрицательное. Если бы число = 0, то было бы положительным.

Для представления диапазона чисел -99 999 999.99 до 99 999 999.99 понадобится 5 байтов для цифр и 1 байт для знака.

Такой тип записи дробных чисел, называется записью с фиксированной точкой.

Формат с фиксированной точкой хорош, если вы знаете, что числа не «перерастут» ту область памяти, которую вы для них отвели, и что вам не понадобится увеличить количество знаков после запятой. Представьте, что вам нужно предусмотреть в памяти место для записи разнообразных расстояний. Но что это будут за числа? Расстояние от Земли до Солнца составляет 150 000 000 000 метров, а боровский радиус атома водорода — 0,00000000005 м. Чтобы заранее предусмотреть место для хранения любых промежуточных значений в формате с фиксированной точкой, вам придется отвести для них 12 байт памяти.

Удобнее представлять числа в научной нотации.

т.е. число

представим как:

Число перед степенью 10 называют мантиссой, либо значащей частью числа(significand). Порядком(exponent) называется сепень, в которую возводится 10.

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

В десятичной записи цифры справа от десятичного разделителя соответствуют отрицательным степеням 10. В двоичной записи цифры справа от двоичного разделителя соответствуют отрицательным степеням 2. Например, двоичное число 101,1101 преобразуется в десятичное так:

Заменяем знаки деления отрицательными степенями 2:

Отрицательные степени 2 записываем ввиде десятичных дробей:

В десятичной форме нормализованная значащая часть числа заключена между 1 и 10. Это верно и в двоичной системе: нормализованная значащая часть всегда больше либо равна 1 и меньше 10 (2 в десятичной системе). Поэтому в двоичной нотации число 101,1101 записывается как:

Отсюда интересный вывод: в нормализованном двоичном числе с плавающей точкой слева от разделителя всегда стоит 1 и только 1.

В большинстве современных компьютеров и программ для чисел с плавающей точкой применяется стандарт. Стандарт IEEE для двоичной арифметики с плавающей точкой (IEEE Standard for Binary Floating-Point Arithmetic).

В стандарте IEEE определены два основных формата: формат с простой точностью (single precision), в котором для записи числа отводится 4 байта, и формат с двойной точностью (double precision), занимающий 8 байт.

Формат с простой точностью. В нем число разделяется на 3 части: 1 бит для знака (0 для положительных чисел и 1 для отрицательных), 8 бит для порядка и 23 бита для дробной значащей части числа, в которой самый младший бит стоит справа:

Всего получается 32 бита, или 4 байта. Поскольку значащая часть нормализованного двоичного числа с плавающей точкой всегда начинается с 1, соответствующий бит в запись числа в формате IEEE не включается. Хранится только 23-битовая дробная часть, хотя это не мешает говорить, что число хранится с точностью 24 бита.

8-битовый порядок может принимать значения от 0 до 255. Он является смещенным (biased), т. е. для нахождения истинного значения порядка — с учетом знака — вы должны вычесть из e число, называемое смещением (bias). Для чисел простой точности с плавающей точкой оно равно 127.

Порядки 0 и 255 имеют особый смысл, о котором чуть позже. Если значение порядка заключено в пределах от 1 до 254, число, представленное конкретными значениями s (бита знака), e (порядка) и f (дробная часть), равно:

(степень e-127)

Знак числа вычисляется по формуле (–1)s. Если s равно 0, число положительно (так как любое число в степени 0 равно +1), если s равно 1, число отрицательно (так как –1 в степени 1 равно –1).

Следующая часть выражения — 1.f — символизирует 23- битовую дробную часть числа, стоящую после 1 и двоичного разделителя (в стандарте IEEE — точка). Все это умножается на 2 в степени e – 127.

Кроме того, в стандарте IEEE предусмотрено несколько специальных случаев.

  • Если е равно 0, а f — 0, число равно 0. Обычно 0 представляется нулевыми значениями всех 32 битов. Если бит знака равен 1, число называется отрицательным 0. Он символизирует очень маленькое число, для записи которого цифр

    и степени в простой точности недостаточно, но которое,

    однако, меньше 0 (не равно ему).

  • При е = 255 и f = 0 число, в зависимости от значения s символизирует положительную или отрицательную бесконечности.

  • Если е = 255, а f не равно 0, значение считается недопустимым числом и называется NaN ( Not a Number, не число).

    Величина NaN часто возникает в результате некорректного математического вычисления.

Самое большое(степень 127):

В десятичном выражении эти числа приблизительно равны(степень 38)

Это и есть диапазон чисел простой точности, которые можно представить в формате с плавающей точкой.

10 двоичных цифр приблизительно эквивалентны 3 десятичным. Я хочу сказать, что двоичное число, состоящее из 10 единиц (3FFh в шестнадцатеричной системе и 1023 в десятичной), примерно равно десятичному числу, состоящему из трех девяток. Иначе говоря:

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

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

или так:

За ним в сторону увеличения следует число:

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

Допустим, вы написали для банка программу, в которой для хранения денежных сумм в долларах и центах используются числа простой точности с плавающей точкой. Узнав, что с точки зрения программы 262 144,00 долларов не отличаются от 262 144,01 долларов, вы возможно, испытаете глубокое потрясение. Действительно, оба числа представляются в компьютере так:

Вот почему при работе с долларами и центами формат с фиксированной точкой более предпочтителен. Разрешив точке плавать, вы рискуете нарваться и на другие мелкие, но весьма досадные неприятности. Например, иногда в программе вместо 3,5 будет получаться 3,4999999. При работе с плавающей точкой такие фокусы случаются довольно часто, и поделать с этим ничего нельзя.

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

Смещение порядка равно 1023 или 3FFh, поэтому число двойной точности записывается так(степень e-1023):

Для значений 0, бесконечности и NaN применяются те же правила, что и в простой точности.

Самое маленькое положительное или отрицательное число двойной точности с плавающей точкой равно:

После двоичной точки стоит 52 нуля. Самое большое число равно:

53 бита значащей части числа (с учетом неуказываемого первого бита, который всегда равен 1) примерно эквивалентны 16 десятичным цифрам. Это, конечно, намного больше, чем в простой точности, но все равно от одинакового представления двух близких десятичных чисел нам никуда не деться. Например, в двоичном представлении число 140 737 488 355 328,00 не отличается от 140 737 488 355 328,01. Оба хранятся как 64-битовая величина 42Е0000000000000h, равная(степень 47):

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

Например, сложение двух чисел с плавающей точкой заключается в сложении их значащих частей; труднее всего здесь разобраться с порядками. Рассмотрим пример:

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

НИЧЕГО ИН ТЕРЕСНОГО

Last updated