Смекни!
smekni.com

Последовательный 16-ти разрядный сумматор (стр. 3 из 4)

Тактирующий импульс будет продолжаться до бесконечности, если не создать блокировки. Для этого используется третий вход ИЛИ-НЕ (DD2:1). Как только выполнится 14 счет, на третий вход ИЛИ-НЕ подается 1, и тактирующий сигнал блокируется, D‑триггер DD3:2 не позволит ему снова установиться в 0. Поскольку счетчик имеет задержку, превышающую один такт, то он успеет выполнить также и 15-й счет.

В начальный момент времени пока на X еще не подалась 1, на выходах ИЛИ-НЕ будет неопределенное состояние, выходы счетчика и тактирующий сигнал, тоже имеют неопределенное состояние. Для того чтобы не пропустить случайный сигнал на выход блока опорных частот, используется серия элементов И (DD7:2, DD7:3, DD7:4, DD8:1), управляемых D‑триггером DD3:1. Если импульс X еще не подан – на выходе D‑триггера сохраняется 0, и, следовательно, на выходах элементов И тоже будет 0 независимо от состояния другого входа этих элементов. Как только подается импульс единицы, через определенную задержку на вход И подается 1 и тогда на выходе будут значения сигналов, которые уже успели установиться в определенные состояния. Вместе с номером очередного такта (CN0, CN1, CN2, CN3) на выход (CLK) блока опорных частот выходит тактирующий сигнал для основных элементов последовательного сумматора.

3.2 Блок выбора числа

Блок выбора строится на селекторах-мультиплексорах DD3, DD4, DD5, DD6 (DD8, DD9, DD10, DD11), которые содержат два управляющих сигнала: A, OE. В случае если OE=1, то на выходах мультиплексора всегда ноль, если OE=0, то сигналы на выходах зависит от состояния A. Если A=0, то на выходы мультиплексора подаются сигналы DI00, DI10, DI20, DI30, если A=1, то – DI01, DI11, DI21, DI31.

Выход OE выведен на землю, сигнал A соединен с прямым выходом триггера DD2:2 (DD7:1). В случае подачи логического нуля на вход NX, триггер устанавливается в 0, и на выходы подаются сигналы DI00, DI10, DI20, DI30, если подан импульс PR, триггер устанавливается в 1 и на выход подаются значения входов DI01, DI11, DI21, DI31.

3.3 Блок ввода числа

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

Регистр имеет пять управляющих сигналов DR, L, R, C1, C2. В случае если сигнал DR равен 0, то после сдвига регистр заполняется нулями и после 8‑ми тактов на выходе всегда будет 0, поэтому DRустанавливается на обоих регистрах в 0. Нулевое значение сигнала С1 необходимо для, того чтоб регистры могли реагировать на тактирующий сигнал, поэтому С1=0. Остается только три сигнала управляя, которыми можно осуществлять процесс загрузки числа.

– R – если сигнал 0, то на выходе всегда 0.

– C2 – тактирующий сигнал, при подаче которого происходит либо сдвиг, либо загрузка в зависимости от состояния L.

– L – если сигнал 0, то происходит загрузка числа, если 1 – сдвиг.

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

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

С первыми восемью тактами будет подаваться сигнал только с младшего регистра, поскольку сигнал R старшего регистра установиться в 1 только после 8‑го такта. Со вторыми восемью тактами будет подаваться только сигнал со старшего регистра, поскольку младший регистр за счет нулевого DRуспеет к этому моменту полностью обнулиться.

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

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

3.4 Блок вывода числа

Основная задача блока вывода преобразование числа из последовательной формы в параллельную. Регистры DD34, DD35 блока вывода содержат два информационных сигнала: D1, D2, и два управляющих: R, C. В случае если R=0, то на выходе всегда 0, поэтому на входы R обоих регистров подается логическая единица. В случае подачи тактового сигнала на вход C, значения на выходах регистра сдвигаются в сторону младшего разряда, а в старший разряд добавляется значение информационных сигналов. Тактовые сигналы подаются на регистры через элементы И DD28:3, DD28:4. В случае если на второй вход И подается 1, то тактовый сигнал пропускается если 0, то тактовый сигнал равен 0. Второй вход элемента И для каждого регистра соединен с соответствующим JK‑триггером DD33:1, DD33:2. В начальном состоянии на выходе триггера младшего разряда 1, старшего – 0. Поэтому до 8‑го такта информационный сигнал загружается только на младший регистр. После восьмого такта состояния обоих триггеров меняется на противоположные, и информационный сигнал загружается только на старший регистр.

3.5 Блок преобразований кода

Блок преобразований кода предназначен для представления результата последовательного суммирования в коде Грея и формирования управляющих сигналов для семисегментных индикаторов. 16-ти разрядное число поступает в данный блок в параллельной форме. Затем оно сохраняется в два 8-ми разрядных регистра DD47 и DD48 с приходом управляющего сигнала C на соответствующие входы регистров. Сигнал C формируется из импульсного сигнала R (сигнал окончания сложения), с помощью схемы выделения переднего фронта, образованной элементами DD26:4, DD26:5, DD26:6, DD49:1, DD49:2 и DD26:1. Для разрешения приема данных на входы Lрегистров подается уровень логического нуля.

Преобразование 16-ти разрядного числа происходит на 14 элементах ИСКЛЮЧАЮЩЕЕ ИЛИ (DD41:2…DD52:3), при этом знаковый разряд (SN) числа не участвует в преобразовании.

В данном блоке исходное число в двоичном коде также преобразуется в двоично-десятичный код с помощью схемы, составленной из преобразователей двоичного кода в двоично-десятичный (DD53, DD57…DD69). Двоично-десятичный код необходим для формирования управляющих сигналов семисегментных индикаторов. Данные сигналы формируются с помощью дешифраторов DD54, DD55, DD56, DD70, DD71, обладающих собственной памятью. Память необходима для сохранения управляющих сигналов на выходах дешифраторов (т.е. сохранение индикации) до прихода следующей комбинации входных сигналов.

Данные в коде Грея и управляющие сигналы семисегментных индикаторов поступают на выход блока преобразований кода.

3.6 Сумматор

Сумматор запускается подачей импульса на сигнал X. В этот момент происходит обнуление всех регистров и триггеров. Т. е. устройство устанавливается в начальное состояние. Сигнал X запускает Блок опорных частот и сообщает блоку выбора числа о том, что происходит подача начальных операндов A и B и разрешено преобразование чисел в обратный код (единица на сигнал INV). После чего операнды поступают на блок ввода числа. Под воздействием тактовых сигналов и управляющих сигналов счетчика, числа преобразуются из параллельного кода в последовательный. Полученные последовательные сигналы синхронно с тактовым сигналом подаются на D‑триггеры, а с выходов D‑триггеров на одноразрядный сумматор DD32:1. Такая подача позволяет синхронизировать информационный сигнал по тактовому. На выходе сумматора получается сумма и перенос, перенос подается обратно на вход сумматора, также через D‑триггер вместе с тактовым сигналом. Начальное значение переноса устанавливается в ноль вместе с подачей импульса на сигнал X. На выходе S0 одноразрядного сумматора получается сумма в последовательном коде. В результате получается синхронная подача суммы, тактирующего сигнала и управляющих сигналов счетчика на блок вывода. Блок вывода преобразует сумму из последовательной формы в параллельную, после чего, сообщает о завершение операции сложения (сигнал R).

Следующий этап сложения – анализ последнего переноса. Поскольку перенос подавался на сумму через D‑триггер значение последнего переноса сохранилось на этом триггере. Значение последнего переноса и сигнал завершения операции сложения подается на элемент И (DD36:1). В случае если сложение завершилось и последний перенос равен 1, на выходе этого элемента получается 1 – признак переноса. Признак переноса подается на блок выбора, сообщая, что в данном случае будут складываться не начальные операнды, а их сумма с единицей. После этого сигнал INV – разрешение инверсии обнуляется, т.е. даже если сумма будет отрицательной ее не надо преобразовать в обратный код, поскольку она и так уже находится в обратном коде. Заключительный этап работы признака переноса – подача его на блок опорных частот и повторный запуск сложения.