Документ взят из кэша поисковой машины. Адрес оригинального документа : http://www.sm.bmstu.ru/sm5/n4/oba/proz2.html
Дата изменения: Thu Feb 15 17:43:25 2007
Дата индексирования: Mon Oct 1 18:58:14 2012
Кодировка: Windows-1251

Поисковые слова: п п п п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п р п
СМ5 : Принципы построения вычислительных устройств на базе устройств программируемой логики
 

Принципы построения вычислительных устройств на базе устройств программируемой логики
Заводсков С.Д.


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

При построении микропроцессорных устройств обработки или управления практически всегда требуется введение дополнительных дискретных элементов или реализация этих устройств на ПЛИС с целью согласования или предварительной обработки входных сигналов. Модули предварительной обработки могут содержать как простые логические элементы, так и логические устройства: мультиплексоры, счетчики, делители, триггеры, АЛУ, массивы памяти и др. Далее нас будут интересовать устройства, построенные с применением ПЛИС, как более перспективные.

Реализация логических операций и логических устройств на ПЛИС не представляет труда, так как ПЛИС по своей сути являются логическими устройствами. Поэтому уделим наше внимание организации арифметических функций:

    • Сложению и вычитанию
    • Умножению
    • Делению.

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

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

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

Прямой код двоичного числа G, представленного в n - разрядной сетке, определяется как

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

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

Обратный код двоичного числа G, представленного в n - разрядной сетке, определяется как

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

Дополнительный код двоичного числа G, представленного в n - разрядной сетке, определяется как

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

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

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

    1. Построение сумматоров

Сумматором называется узел ЭВМ, выполняющий арифметическое суммирование кодов чисел. Обычно сумматор представляет собой комбинацию одноразрядных суммирующих схем.

При сложении двух чисел в каждом разряде производится сложение трех цифр:

    • Цифры данного разряда первого слагаемого;
    • Цифры данного разряда второго слагаемого;
    • Перенос из младшего разряда.

В таблице1 представлены варианты, возникающие при сложении двух двоичных чисел.

Таблица 1

Перенос из младшего разряда

Первое слагаемое

Второе слагаемое

Сумма

Перенос в старший разряд

0

0

0

0

0

0

1

0

1

0

0

0

1

1

0

0

1

1

0

1

1

0

0

1

0

1

1

0

0

1

1

0

1

0

1

1

1

1

1

1

По таблице1 можно составить булевы функции для описания одноразрядного сумматора:

; ;

 

 

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

По характеру распространения переноса различают следующие виды сумматоров:

    • с поразрядным последовательным переносом;
    • с параллельным одновременным переносом;
    • с групповым переносом.

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

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

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

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

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

Сигнал =1 (генерация переноса) вырабатывается в тех случаях, когда в данном разряде перенос происходит из-за комбинации значений входных переменных .

Сигнал =1 (разрешение переноса) разрешает прохождение сигнала переноса на выход сумматора.

Следовательно, функции сумматора можно представить в виде:

;

;

где или, где

 

Функции, выполняемые Устройством быстрого переноса (CRU- Carry Unit - устройство переноса), можно описать следующими логическими выражениями:

Для других линий перенос формируется аналогично.

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

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

      2. Формирование признаков результата

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

    • признак нулевого результата
    • признак положительного результата
    • признак отрицательного результата
    • признак переполнения

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

Признак нулевого результата формируется с помощью логической функции

. Он равен единице при нулевом результате и нулю в противном случае.

Признак переполнения формируется из анализа переноса из знакового и старшего разрядов числа в соответствии с выражением

.

      3. Построение умножителей

В этом разделе рассмотрим только целочисленное умножение, то есть умножение чисел с фиксированной точкой.

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

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

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

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

1. Умножение, начиная с младших разрядов множителя, со сдвигом суммы частичных произведений вправо при неподвижном множимом. Регистр множителя и сумматор частичных произведений при этом должны иметь цепи сдвига вправо. Регистр множимого цепей сдвига может не иметь.

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

  1. Умножение, начиная с младших разрядов множителя при сдвиге множимого влево и неподвижной сумме частичных произведений. Регистр множителя при этом должен иметь цепи сдвига вправо, регистр множимого - цепи сдвига влево, а сумматор частичных произведений не содержит цепей сдвига.

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

3. Умножение, начиная со старших разрядов множителя, при сдвиге суммы частичных произведений влево и неподвижном множимом. Регистр множителя и сумматор частичных произведений должны иметь цепи сдвига влево, регистр множимого цепей сдвига не имеет.

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

4. Умножение, начиная со старших разрядов множителя, при сдвиге вправо множимого и неподвижной сумме частичных произведений. Регистр множителя должен иметь цепи сдвиге влево, регистр множимого - цепи сдвига вправо.

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

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

    1. Берутся модули от сомножителей.
    2. Исходное значение суммы частичных произведений принимается равным 0.
    3. Если анализируемая цифра множителя равна 1, то к сумме частичных произведений прибавляется множимое, если 0 - то прибавления не производится.
    4. Производится сдвиг суммы частичных произведений вправо на 1 разряд.
    5. Пункты 3 и 4 последовательно выполняются для всех цифровых разрядов множителя, начина с младшего.
    6. Произведению присваивается знак "+", если знаки сомножителей одинаковы, в противном случае - знак "-".

Методы ускорения умножения.

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

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

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

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

    • 00 - производится простой сдвиг вправо на два разряда суммы частичных произведений;
    • 01 - к сумме частичных произведений прибавляется одинарное множимое, затем производится сдвиг вправо на два разряда;
    • 10 - прибавляется удвоенное множимое, затем выполняется сдвиг на два разряда;