Электроника?.. Нет ничего проще!
Шрифт:
Н. — Чтобы мне было легче ориентироваться, я попробую разобраться на уже рассматривавшемся нами случае с первоначально записанным числом 011. Первый поданный на вход Z сигнал изменяет нашу запись на 110, но, как я полагаю, при этом мы должны учитывать и то обстоятельство, что триггер В3 не даст импульса, ибо он переключается из положения 0 в положение 1.
Л. — В самом деле он дает только положительный импульс, который мы задерживаем с помощью диода. Следовательно, на выходе триггера В3 ничего нет. А
Н. — О, теперь это ужасно сложно! Как я вижу, триггер В2, находящийся в положении 1, под воздействием импульса Z опрокинется в положение нуль. По-моему, он должен дать на выход импульс, потому что нас интересуют только импульсы, соответствующие переходу на нуль. Импульс с триггера В2 поступает на элемент задержки D2, откуда он через некоторое время поступает на триггер В3 и переключает его на 1. Но я не очень хорошо представляю, что в итоге получилось.
Л. — В итоге мы получили импульс с триггера В3 и записанное на регистре число превратилось в 100. При третьем переключении регистра на нуль мы вновь получим импульс с триггера В3, потому что он переходит на нуль из положения 1. Теперь уже ни один триггер не может переключиться в положение 1, так как запись постепенно перемешалась и в результате полностью вышла за пределы регистра.
Н. — Но это более чем странно! Трехкратным переключением на нуль ты выталкивал цифру за цифрой записанное в регистре число. Только вытолкнул его не в том направлении, которое нам нужно; сначала мы получили отсутствие импульсов (цифра четверок), затем получили один импульс (цифра двоек) и, наконец, еще один импульс (цифра единиц).
Л. — Совершенно верно, мы цифру за цифрой вытолкнули наше число с того места, где оно было записано. Иначе говоря, на выходе S3 мы получили наше число в последовательной форме. Ты правильно заметил, что выходящее из регистра число заканчивается единицами. При желании получить его единицами вперед, следует записать число на трех триггерах в обратном порядке: единицы подать на вход Е3, двойки — на вход Е2 и четверки — на вход Е1.
Н. — Таким образом, мы можем сказать, что твой сдвигающий регистр способен преобразовывать параллельное представление числа в последовательное.
Л. — О, ты знаешь, транзисторы этой схемы способны (да позволят мне так сказать) не только на один фокус. Схема может выполнить и обратное преобразование. Представь себе, что мы подаем на вход А последовательное число и после передачи очередной цифры посылаем импульс сброса на нуль. Первая цифра записывается триггером B1, а затем импульс сброса на нуль продвигает ее на триггер В2. В этот момент следующая цифра записывается предварительно выставленным на нуль триггером B1.
Второй поступающий на вход Z импульс сброса на нуль продвигает первую цифру с триггера В2 на триггер В3 и вторую цифру с В1 на В2. В это время триггер B1 выставлен на нуль и готов получить третью цифру передаваемого на вход А числа в последовательной форме.
Н. —
Л. — Но этим мы еще не исчерпали всех возможностей сдвигающего регистра. Представь себе, что на входы E1,Е2 и Е3 нашей схемы мы подали параллельное число. А через некоторое время подаем еще одно такое же число на эти же входы: единицы на E1, двойки на Е2 и четверки на Е3. Что мы получим в результате?
Н. — Ужасную смесь!
Л. — Совсем нет. Рассмотрим, что произойдет на одном из триггеров. Предположим, что после записи первого числа он стоит на нуле. Если в соответствующем этому триггеру месте второго числа стоит нуль, то триггер не получит никакого импульса и останется на нуле. Но при записи второго числа наш триггер может получить импульс (на соответствующем ему месте находится единица) и тогда он переключится на 1. Возможно также, что при записи первого числа триггер получит импульс, а при записи второго импульса не получит. В этом случае, как и в предыдущем после передачи второго числа, триггер будет стоять на 1. Как ты видишь, во всех этих трех случаях на каждом триггере мы получим цифру, равную сумме соответствующих цифр из двух чисел.
Н. — Очень занятно, но признайся, что все рассказанное тобой справедливо лишь для некоторых случаев.
Л. — Сейчас я докажу тебе, что справедливо для всех случаев. Предположим, например, что триггер В1 при записи первого числа получил один импульс (что означает, что в первом числе на месте единиц стоит цифра 1). Теперь предположим, что при записи второго числа на вход Е1 поступил еще один импульс. Этот импульс переключит триггер на нуль и тем самым запишет последнюю цифру суммы двух полученных цифр. При опрокидывании на нуль триггер посылает импульс на элемент задержки D1. Этот импульс представляет собой не что иное, как единицу, переносимую при сложении в следующий разряд. После того как сдвигающий регистр зафиксирует второе число, эта переносимая единица поступает на триггер В2 и прибавляется к записанной в нем цифре, т. е. переключает триггер В2 из одного состояния в другое.
Н. — Поразительно, твоя схема способна производить сложения и учитывать переносы единиц в следующие разряды. Это идеальное решение для создания сумматора.
Л. — Это возможное, но не наилучшее решение. Представь себе, что первым мы передали на сдвигающий регистр число 111, а вторым — число 001. Когда мы запишем второе число, триггер В1 опрокинется и вернется на нуль. Через элемент D1 он передаст импульс на триггер В2, который после соответствующей задержки опрокинется и вернется на нуль. Триггер В2 через элемент D2пошлет импульс на триггер В3, который спустя еще один период задержки опрокинется и вернется на нуль. Как ты видишь, задержки накапливаются и может оказаться, что для завершения записи суммы потребуется значительное время.