Главная страница
Навигация по странице:

  • Входы Выходы D Clk Q Q

  • Двоичное число Десятичное число

  • Входы Выходы Pre Clr D Clk Q Q

  • Входы Выходы Q(t − 1) J K Q(t) Q(t)

  • Входы Выходы Q(t − 1) Т Q(t) Q(t)

  • Двоичное число Восьмеричное число

  • Двоичное число Шестнадца- теричное число Десятичное число Двоичное число Шестнадца- теричное

  • кр гаряев. Чарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе. Книга принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании


    Скачать 6.11 Mb.
    НазваниеКнига принадлежит Контакты владельца Культовая книга талантливого преподавателя стала для многих первым уверенным шагом в программировании
    Анкоркр гаряев
    Дата19.10.2022
    Размер6.11 Mb.
    Формат файлаpdf
    Имя файлаЧарльз Петцольд - Код_ тайный язык информатики-Манн, Иванов и Фе.pdf
    ТипКнига
    #743064
    страница12 из 28
    1   ...   8   9   10   11   12   13   14   15   ...   28
    Входы
    Выходы
    D
    Clk
    Q
    Q
    1 0
    0 1
    Когда значение входного сигнала Clk изменяется с 0 на 1, выходной сиг- нал Q становится равным входному сигналу D.
    Входы
    Выходы
    D
    Clk
    Q
    Q
    0

    0 1
    1

    1 0
    Поскольку выходной сигнал Q изменяется на 0, входной сигнал D также поменяется на 0. Теперь входной сигнал Clk станет равен 1.
    Входы
    Выходы
    D
    Clk
    Q
    Q
    1 0
    0 1
    1

    1 0
    0 1
    1 0
    Входной сигнал Clk возвращается к 0, не влияя на значения выходных сигналов.
    Входы
    Выходы
    D
    Clk
    Q
    Q
    1 0
    0 1
    1

    1 0
    0 1
    1 0
    0 0
    1 0

    196
    Код
    Теперь значение входного сигнала Clk снова изменяется на 1. Поскольку входной сигнал D равен 0, выходной сигнал Q становится равным 0, а выход- ной сигнал Q — 1.
    Входы
    Выходы
    D
    Clk
    Q
    Q
    1 0
    0 1
    1

    1 0
    0 1
    1 0
    0 0
    1 0
    0

    0 1
    Таким образом, входной сигнал D также становится равным 1.
    Входы
    Выходы
    D
    Clk
    Q
    Q
    1 0
    0 1
    1

    1 0
    0 1
    1 0
    0 0
    1 0
    0

    0 1
    1 1
    0 1
    То, что здесь происходит, можно описать очень просто: каждый раз, ког- да значение входного сигнала изменяется с 0 на 1, значение выходного сигна- ла Q меняется либо с 0 на 1, либо с 1 на 0. Ситуацию может прояснить сле- дующий график.
    D/Q
    Clk
    Q
    Когда входной сигнал Clk изменяется с 0 на 1, значение на входе D (ко- торое совпадает со значением на выходе Q) передается на выход Q, при этом также изменяется значение Q и D до следующего перехода значения входного сигнала Clk от 0 к 1.

    Глава 14. Обратная связь и триггеры
    197
    Если частота осциллятора равна 20 герц (20 циклов в секунду), частота выхода Q в два раза меньше — 10 герц. По этой причине такая схема, в кото- рой выход Q соединен со входом триггера «Данные», также называется дели-
    телем частоты.
    Разумеется, выход делителя частоты может являться входом Clk другого делителя частоты для повторного деления частоты. На следующем изображе- нии показана схема, состоящая из трех делителей частоты.
    Q
    Q
    Q
    Q
    Clk
    D
    Clk
    Q
    D
    Clk
    Q
    D
    Clk
    Q
    Clk
    Q
    1
    Q
    2
    Q
    3
    Давайте рассмотрим четыре сигнала, которые я обозначил в верхней час- ти схемы.
    Clk
    Q
    1
    Q
    2
    Q
    3
    Признаю, что я выбрал самые подходящие точки начала и окончания этой диаграммы, однако ничего нечестного в этом нет: этот шаблон повторяется в данной схеме снова и снова. Не кажется ли она знакомой?
    Подскажу: обозначим эти сигналы нулями и единицами.

    198
    Код
    Clk
    Q
    1
    Q
    2
    Q
    3 0
    1 0
    1 0
    1 0
    1 0
    1 0
    1 0
    1 0
    1 0
    0 1
    1 0
    0 1
    1 0
    0 1
    1 0
    0 1
    1 0
    0 0
    0 1
    1 1
    1 0
    0 0
    0 1
    1 1
    1 0
    0 0
    0 0
    0 0
    0 1
    1 1
    1 1
    1 1
    1
    Не догадались? Попробуйте повернуть диаграмму на 90 градусов по ча- совой стрелке и прочитать 4-битные числа по горизонтали. Каждое из них со- ответствует десятичному числу от 0 до 15.
    Двоичное число
    Десятичное число
    0000 0
    0001 1
    0010 2
    0011 3
    0100 4
    0101 5
    0110 6
    0111 7
    1000 8
    1001 9
    1010 10 1011 11 1100 12 1101 13 1110 14 1111 15
    Эта схема производит подсчет в двоичном формате, и чем больше триг- геров добавляем в схему, тем большую сумму можно получить с ее помощью.
    В главе 8 я указал, что в последовательности возрастающих двоичных чисел каждый столбец цифр чередуется между 0 и 1 с частотой вдвое меньшей, чем столбец справа от него. Этот счетчик имитирует эту закономерность. При каж- дом положительном переходе сигнала Clk значения выходных сигналов счет- чика увеличиваются на 1, это и называется приращением или инкрементом.

    Глава 14. Обратная связь и триггеры
    199
    Давайте объединим восемь триггеров и поместим их в общий корпус.
    Clk
    8-битный сквозной счетчик
    Q
    7
    Q
    6
    Q
    5
    Q
    4
    Q
    3
    Q
    2
    Q
    1
    Q
    0
    Схема называется сквозным счетчиком, потому что выход каждого триг- гера становится входом Clk следующего. Изменения сигнала проходят после- довательно через все триггеры, а изменения триггеров, находящихся в конце, могут происходить с небольшой задержкой. Более сложные счетчики — син-
    хронные, в них все выходные сигналы изменяются одновременно.
    Я обозначил выходы буквами от Q
    0
    до Q
    7
    . Они расположены так, что выход первого триггера в цепочке (Q
    0
    ) является крайним справа. Если вы подключи- те к этим выходам лампочки, сможете прочитать 8-битное число. Временнáя диаграмма такого счетчика может отображать все восемь выходов отдельно или вместе следующим образом.
    Clk
    00000000 00000001 00000010 00000011 00000100
    Q
    При каждом положительном переходе сигнала Clk некоторые выходы Q могут измениться, некоторые — нет, однако вместе они отражают последова- тельность возрастающих двоичных чисел.
    Ранее в этой главе я говорил, что мы найдем способ определения часто- ты осциллятора. Итак, если вы подключите осциллятор к входу Clk 8-битного счетчика, последний покажет, сколько колебаний совершил осциллятор. Ко- гда общее число достигнет 11111111 (255 в десятичной системе счисления), счетчик вернется к 00000000. Вероятно, самый простой способ определения частоты осциллятора заключается в том, чтобы подключить восемь лампо- чек к выходам 8-битного счетчика. Теперь подождите, пока значения всех вы- ходов не станут равны 0, то есть пока не погаснут все лампочки, и запустите секундомер. Остановите секундомер, когда все лампочки погаснут снова. Это время, необходимое для 256 колебаний. Скажем, для этого требуется десять секунд. Таким образом, частота осциллятора составляет 256 / 10 = 25,6 герца.

    200
    Код
    С появлением в триггерах дополнительных функций они становятся бо- лее сложными. На следующем рисунке изображен D-триггер с предустановкой
    и очисткой, срабатывающий по фронту.
    Q
    Q
    Clr
    Pre
    D
    Clk
    Входы_Выходы_Pre_Clr_D_Clk_Q_Q'>Входы Pre (от «рreset» — «предустановка») и Clr обладают более высоким приоритетом, чем входы Clk и «Данные». Обычно эти два входа равны 0. Когда вход Pre равен 1, выход Q становится равным 1, а выход Q — 0. Когда вход Clr равен 1, выход Q — 0, а выход Q — 1. Как и в случае со входами S и R RS-триг- гера, входы Pre и Clr не должны одновременно быть равными 1. В остальном этот триггер ведет себя как обычный D-триггер со срабатыванием по фронту.
    Входы
    Выходы
    Pre
    Clr
    D
    Clk
    Q
    Q
    1 0
    X
    X
    1 0
    0 1
    X
    X
    0 1
    0 0
    0

    0 1
    0 0
    1

    1 0
    0 0
    X
    0
    Q
    Q
    D-триггер с предустановкой и очисткой, срабатывающий по фронту, обо- значается следующим образом.

    Глава 14. Обратная связь и триггеры
    Q
    D
    Clk
    Q
    Pre
    Clr
    Теперь наши телеграфные реле умеют складывать, вычитать и произво- дить подсчет в двоичном формате. Это значительное достижение, особенно учитывая то, что используемое оборудование было доступно более ста лет на- зад. Впереди у нас еще множество открытий. Однако давайте немного отдох- нем от конструирования схем и вернемся к системам счисления.
    Помимо упомянутых RS- и D-триггеров, существуют еще два основных вида: JK-триггеры (Jerk/Kill, внезапное включение / внезапное отключение) и Т-триггеры (Toggle, переключатель; он же счетный триггер). Таблица истин- ности JK-триггера отличается от таковой для RS-триггера наличием перехода при J = K = 1, где ввод J аналогичен вводу S, а ввод K — вводу R. Таким обра- зом, это отличие можно записать следующим образом.
    Входы
    Выходы
    Q(t − 1)
    J
    K
    Q(t)
    Q(t)
    0 1
    1 1
    0 1
    1 1
    0 1
    Получается, J = K = 1 инвертирует предыдущее состояние триггера. Во всем остальном принцип работы аналогичен RS-триггеру.
    Принцип действия Т-триггера заключается в том, что он инвертирует входной сигнал.
    Входы
    Выходы
    Q(t − 1)
    Т
    Q(t)
    Q(t)
    0 0
    0 1
    1 0
    1 0
    0 1
    1 0
    1 1
    0 1

    202
    Глава 15
    Байты и шестнадцатеричные числа
    Две усовершенствованные счетные машины, описанные в предыдущей главе, хо- рошо иллюстрируют концепцию потоков данных. Восьмибитные значения пе- ремещаются по цепи от одного компонента к другому. Эти значения подаются на входы сумматоров, защелок и селекторов, а также появляются на выходах этих устройств. Кроме того, 8-битные значения задаются с помощью переключателей и отображаются рядом лампочек. Таким образом, поток данных в этих схемах име- ет ширину восемь бит. Но почему? Почему не шесть, не семь, не девять и не десять?
    Можно было бы ответить, что основой наших усовершенствованных счет- ных машин является исходный сумматор из главы 12, работающий с 8-битными значениями. Однако нет никаких особых причин конструировать эту машину именно так. Просто при ее создании мы сочли эту величину удобной. Как бы то ни было, признаю, что схитрил, поскольку с самого начала знал (возможно, и вы тоже), что восемь бит данных соответствуют одному байту.
    Слово «байт» (byte) возникло в компании IBM примерно в 1956 году. Оно произошло от слова bite («кусок»), но его было решено писать через букву y, чтобы не путать со словом bit («бит»). В течение некоторого времени слово
    «байт» обозначало просто число битов в конкретном потоке данных. Однако в середине 1960-х, в связи с разработкой семейства компьютеров System/360 в компании IBM, это слово стало обозначать группу из восьми бит.
    Как 8-разрядное число, байт может принимать значения в диапазоне от 00000000 до 11111111. Эти значения могут описывать положительные це- лые числа от 0 до 255, а при использовании дополнения до двойки для пред- ставления отрицательных чисел они могут отображать как положительные, так и отрицательные целые числа в диапазоне от −128 до 127. Кроме того, кон- кретный байт может просто представлять одну из 2 8
    , или 256, разных вещей.

    Глава 15. Байты и шестнадцатеричные числа
    203
    Число 8 оказалось весьма удобной величиной. Компания IBM отдала пред- почтение 8-битным байтам в связи с простотой хранения чисел в формате
    BCD (о котором я расскажу в главе 23). Однако, как мы увидим далее, байт идеально подходит для хранения текста, поскольку бóльшую часть языков мира (за исключением идеограмм, использующихся в китайском, японском и корейском) можно представить менее чем 256 символами. Кроме того, байт идеально подходит для представления оттенков серого на черно-белых фото- графиях, поскольку человеческий глаз различает примерно 256 оттенков это- го цвета. А там, где не хватает одного байта (например, для представления выше упомянутых идеограмм китайского, японского и корейского языков), как правило, можно использовать два байта, которые позволяют выразить 2 16
    , или
    65 536, различных элементов.
    Половина байта, то есть четыре бита, иногда называется тетрадой, од- нако это слово употребляется гораздо реже, чем «байт».
    Поскольку байты часто используются при описании работы компьюте- ров, нам требуется как можно более лаконичный способ записи их значения.
    Например, запись числа, состоящего из восьми двоичных цифр 10110110, без- условно, является корректной, но едва ли лаконичной.
    Разумеется, мы всегда можем обращаться к байтам, используя их десятич- ные эквиваленты, но это потребует преобразования двоичного числа в деся- тичное, что хоть и несложно, но весьма обременительно. В главе 8 я продемон- стрировал один довольно простой подход. Поскольку каждая двоичная цифра соответствует степени 2, мы можем просто записать цифры двоичного числа, а под ними — степени 2, после чего перемножить числа в каждом столбце и сло- жить результаты. Далее представлен процесс преобразования числа 10110110.
    × 128
    +
    × 64 × 32 × 16
    × 8
    × 4
    × 2
    × 1
    +
    +
    +
    +
    +
    +
    =
    1 0
    1 1
    0 1
    1 0
    128 0
    32 16 0
    4 2
    0 182
    Процесс преобразования десятичного числа в двоичное менее удобен и предполагает деление десятичного числа на убывающие степени двойки.
    Частное от каждого деления — двоичная цифра, а остаток делится на следую- щую в порядке убывания степень двойки. Вот как десятичное число 182 пре- образуется в двоичное.
    1 0
    1 1
    0 1
    1 0
    182 54 54 22 6
    6 2
    0
    : 128
    : 64
    : 32
    : 16
    : 8
    : 4
    : 2
    : 1

    204
    Код
    В главе 8 эта техника описана подробно. Тем не менее для преобразова- ния двоичных чисел в десятичные и обратно обычно требуется бумага, каран- даш и практика.
    Мы уже узнали о восьмеричной системе счисления — системе счисления с основанием 8, где используются только цифры 0, 1, 2, 3, 4, 5, 6 и 7. Преобра- зовать восьмеричное число в двоичное легко. Все, что нужно, — это запомнить
    3-битный эквивалент каждой восьмеричной цифры.
    Двоичное число
    Восьмеричное число
    000 0
    001 1
    010 2
    011 3
    100 4
    101 5
    110 6
    111 7
    Если у вас есть двоичное число (например, 10110110), начинайте преоб- разование с правого края. Каждая группа из трех бит соответствует восьме- ричной цифре.
    10 110 110 2 6 6
    Таким образом, байт 10110110 можно выразить в виде восьмеричного чис- ла 266. Это выражение, безусловно, является более лаконичным, значит, вось- меричная система действительно подходит для представления байтов. Однако у нее есть небольшой недостаток.
    В двоичной системе байты выражаются значениями в диапазоне от 00000000 до 11111111, в восьмеричной — значениями в диапазоне от 000 до 377. Как было показано в предыдущем примере, средней и крайней справа восьмерич- ным цифрам соответствуют группы из трех бит, однако крайней слева восьме- ричной цифре соответствуют только два бита. Это означает, что восьмеричное представление 16-разрядного числа не совпадает с восьмеричными представ- лениями двух байтов, составляющих это 16-разрядное число.
    1 011 001 111 000 101 1 3 1
    7 0
    5 10 110 011 2 6 3
    11 000 101 3 0 5

    Глава 15. Байты и шестнадцатеричные числа
    205
    Чтобы согласовать представления многобайтных значений с представ- лениями отдельных байтов, нужна система, в которой каждый байт делится на равное количество битов. Следовательно, нам требуется разделить каж- дый байт на четыре значения по два бита каждое (система счисления с осно- ванием 4) или на два значения по четыре бита каждое (система счисления с основанием 16).
    Систему счисления с основанием 16 мы еще не рассматривали, и на то есть причины. Система счисления с основанием 16 называется шестнадцатерич-
    ной *, — даже название труднопроизносимо. В десятичной системе счисления считаем так:
    0 1 2 3 4 5 6 7 8 9 10 11 12 …
    В восьмеричной системе, как вы помните, не используются цифры 8 и 9:
    0 1 2 3 4 5 6 7 10 11 12 …
    В системе с основанием 4 не требуются цифры 4, 5, 6 и 7:
    0 1 2 3 10 11 12 …
    Наконец, в двоичной системе достаточно только 0 и 1:
    0 1 10 11 100 …
    Однако шестнадцатеричная система отличается тем, что в ней использу- ется больше цифр, чем в десятичной. В шестнадцатеричной системе подсчет происходит примерно так:
    0 1 2 3 4 5 6 7 8 9 ? ? ? ? ? ? 10 11 12 …
    В данном случае 10 соответствует числу 16
    ДЕСЯТЬ
    . Вопросительные знаки говорят о том, что нам нужны еще шесть символов для представления шест- надцатеричных чисел. Что это за символы? Откуда их брать? Что ж, поскольку
    * Шестнадцатеричная система счисления используется для обозначения МАС-адресов
    (уникальных физических адресов сетевого оборудования) и для записи сетевых (IP) адресов в современном протоколе IPv6. С этим вы можете столкнуться при настройке доступа в интернет на своем компьютере. Прим. науч. ред.

    206
    Код они не достались нам в наследство, подобно другим традиционным числовым символам, мы можем придумать их самостоятельно, например такие.
    В отличие от символов, используемых для обозначения большинства чи- сел, у этих обозначений есть преимущество: они легко запоминаются и отож- дествляются с теми величинами, которые представляют. Существует так на- зываемая десятигаллонная ковбойская шляпа, мяч для американского футбола
    (11 игроков в команде), дюжина пончиков (12 штук), черная кошка (с которой ассоциируется несчастливое число 13), полная луна (появляется на небе через
    14 дней после новолуния) и кинжал (напоминающий об убийстве Юлия Цеза- ря в 15-й день марта). Каждый байт можно выразить в виде двух шестнадца- теричных цифр. Другими словами, шестнадцатеричная цифра эквивалентна четырем битам, или одной тетраде. В следующей таблице показаны соответ- ствия двоичных, шестнадцатеричных и десятичных чисел.
    Двоичное
    число
    Шестнадца-
    теричное
    число
    Десятичное
    число
    Двоичное
    число
    Шестнадца-
    теричное
    число
    Десятичное
    число
    0000 0
    0 1000 8
    8 0001 1
    1 1001 9
    9 0010 2
    2 1010 10 0011 3
    3 1011 11 0100 4
    4 1100 12 0101 5
    5 1101 13 0110 6
    6 1110 14 0111 7
    7 1111 15

    Глава 15. Байты и шестнадцатеричные числа
    207
    Вот как можно представить двоичное число 10110110 в шестнадцатерич- ной системе.
    1011 0110 6
    И не важно, имеем ли мы дело с многобайтными числами.
    1100 0101 5
    1011 0110 6
    Один байт всегда представляется парой шестнадцатеричных цифр.
    К сожалению (а может быть, к счастью), мы не собираемся использовать футбольные мячи и пончики для записи шестнадцатеричных чисел, хотя они, безусловно, могли бы сгодиться для этой цели. Вместо них в шестнадцатерич- ной системе применяются обозначения, приводящие многих в замешательство.
    Дело в том, что шесть недостающих шестнадцатеричных цифр представляют шестью первыми буквами латинского алфавита:
    0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 …
    В следующей таблице показано реальное соответствие между двоичными, шестнадцатеричными и десятичными числами.
    1   ...   8   9   10   11   12   13   14   15   ...   28


    написать администратору сайта