Учебная работа № 1666. Разработка узла с функцией перевода чисел из формата в формат

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (6 оценок, среднее: 4,67 из 5)
Загрузка...
Контрольные рефераты

Учебная работа № 1666. Разработка узла с функцией перевода чисел из формата в формат

ВВЕДЕНИЕ

Режим работы данного узла преобразование чисел, поэтому стоит поговорить о самих числах и их представлении в ЭВМ.

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

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

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

Принятая минимальная единица информации в ЭВМ 1 бит. Один бит равен одной двоичной цифре. Более крупной единицей является байт. Один байт равен 8 битам. Существуют и более крупные единицы слово (2 байта), двойное слово (4 байта), килобайт (1024 байта), мегобайт (1024 Кбайта) и т.д.

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

Немного надо сказать о представлении чисел в ЭВМ.

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

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

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

Далее введем одно обозначение. Если после цифры стоит «d» это десятичная цифра, «b» двоичная, а «h» шестнадцатиричная.

Прямой код это так сказать «естественный» код, то есть 1d=0001b, 10d=1010b, 15d=1111b и т.д.

Обратный код образуется из прямого путем инвертирования всех разрядов прямого кода, например 1d=0001b в прямом=1110b в обратном, 10d=1010b в прямом=0101b в обратном коде.

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

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

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

Но выше мы рассматривали только целые числа, а как поступить с дробными?

Существует два возможных варианта хранения в формате с фиксированной точкой и в формате с плавающей точкой. Покажем «в живую» эти форматы на примере:

1. С фиксированной точкой:

Но таким образом большие вещественные числа хранить неудобно и неэффективно. Поэтому используется второй вариант хранения:

2. С плавающей точкой.

То есть в формате с плавающей точкой хранится 2 числа порядок и мантисса. Так как порядок может быть и отрицательным, то приняли еще одно правило: порядок всегда смещенный. То есть если порядок колеблется от +128d до 127d то к порядку всегда прибавляют 127d и тогда он колеблется в пределах от 0 до +255d и таким образом нам не приходится хранить знак числа.

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

ВЫБОР СТРУКТУРЫ УЗЛА

Так как по заданию ввод/вывод в данном узле должен происходить параллельно, то потребуется 2 регистра (один для входных данных, один для выходных), разрядность которых исходя из условия 8 бит. Также, для промежуточных результатов потребуется 1 восьмиразрядный регистр (для хранения и работы с мантиссой) и один четырехразрядный регистр и один сумматор для обработки порядка. Дополнительно также потребуется 13 элементов ИНЕ. Это пока все без доказательства оно будет позже. В качестве 8ми разрядных регистров нам хорошо подходят К155ИР13, в качестве 4х разрядного К155ИР1. Также мы используем сумматор К155ИМ3, а для дополнительной логики 4 микросхемы К155ЛА3. Итого вся схема собрана собрана, как и требовалось на микросхемах серии К155. Альтернативный вариант схемы будет рассмотрен далее. Общая схема узла приводится в приложении.

РАСЧЕТ ПОСТРОЕНИЯ И ОПИСАНИЕ ПРИНЦИПИАЛЬНЫХ СХЕМ

Как же именно, с моей точки зрения, должен работать данный узел? В целом его работу можно описать так:

Обозначим:

1. Число с фиксированной точкой

2. Число с плавающей точкой

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

Словесно, алгоритм преобразования можно описать так:

1. Занесение исходных данных в регистр RG1.

2. Занесение мантиссы числа с регистр RG2.

3. Занесение 7d(111b) в регистр порядка RG4 (автоматический сдвиг на 4 разряда + 3, так как порядок смещенный).

4. Нормализация результата:

а. Если мантисса не нормализована, т.е. старший бит равен «0», то сдвигаем мантиссу влево на 1 разряд с помощью регистра RG2 и с помощью сумматора SM вычитаем 1 из регистра RG4, который содержит порядок числа и заносим результат снова в регистр RG4. Возвращаемся к пункту 4.

б. Если в старшем разряде мантиссы «1», то значит число нормализовано и мы переходим к пункту 5.

5. Занесение результата в регистр RG3

Это было о алгоритме. Как же работает сама схема и отдельные ее части?

Сначала о частях. Рассмотрим два элемента данной схемы: сумматор и регистр.

СУММАТОР

Формулы для суммы и переноса и iтом разряде выглядят так:

S(i)=a*b*P(i1)+a*b*P(i1)+a*b*P(i1)+a*b*P(i1)

P(i)=a*b*P(i1)+a*b*P(i1)+a*b*P(i1)+a*b*P(i1), где:

S(i) сумма в iом разряде,

P(i) перенос в iом разряде,

a,b слагаемые в iом разряде,

P(i1) перенос из i1 разряда.

Один из вариантов схемы для реализации такого сумматора (точнее говоря элемента сумматора для одного разряда, из которых можно построить сумматор любой разрядности) выглядит так:

Формирователь суммы (вариант комбинационного сумматора) :


Этот элемент сумматора работает по несколько измененной формуле (в связи с базисом реализации ИНЕ и ИИЛИНЕ):

Можно показать, что формирователь переноса строится абсолютно аналогично.

Затем перенос из iтого разряда передается на (i+1)ый разряд, а сумма iтого разряда выводится. Соединяя такие блоки, можно получить сумматор любой разрядности.

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

В качестве элементов для такого сумматора можно взять микросхемы К155ЛА3 и две К155ЛР4.

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

РЕГИСТР

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

Как же строятся регистры? Регистры строятся на основании триггеров, количество которых зависит от разрядности регистра.

Параллельные регистры.

Вот пример простейшего параллельного однофазного регистра на RSтриггерах:

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

Такой регистр является 2х тактным, поскольку ввод информации производится в 2 такта: первым тактом на шину «Уст. 0» подается 0 сигнал для установки в 0 всех триггеров, при этом на шине «Ввод» 0; вторым тактом устанавливается 1 на шинах «Уст. 0» и «Ввод» и значения разрядов X1,X2,..,X(i),.. записываются по входу S триггеров. Ввод в прямом коде. Вывод как в прямом так и в обратном. Для вывода в нужном нам коде подается 1 на нужную нам шину, причем одновременная подача 1 на обе шины запрещена.

Парафазный регистр на RSтриггерах:

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

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

Однофазный регистр на Dтриггерах:

Значения подаются на входы D соответствующих триггеров, а сигнал «Ввод» подается подается на входы C, причем предварительная установка в «0» не требуется.

Парафазный регистр на JKтриггерах:

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

Последовательные регистры

(регистры сдвига)

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

Как же построить регистр данного вида? Для этого необходимо определить взаимодействие между триггерами:

Для Dтриггера:

Для сдвига влево используется формула: D(i)=Q(i+1). Строится такой регистр аналогично.

Вот формулы и схема для для аналогичного регистра на JKтриггерах:

Наиболее экономичной для построения регистров сдвига является схема на Dтриггерах, которая требует в 2 раза меньше корпусов микросхем по сравнению со схемой на JKтриггерах и в 2 раза меньше связей между триггерами за счет однофазной передачи информации.

Реверсивный сдвиговый регистр имеет схемы управления межтриггерными связями для чего обычно используют элементы ИИЛИНЕ. С помощью этих элементов в соответствии с сигналами, управляющими направлением сдвига обеспечиваются связи между триггерами для выполнения сдвига в заданном направлении.

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

Теперь перейдем к конкретному рассмотрению схемы нашего узла.

Входные данные подаются на регистр RG1 в параллельном виде. Для этого на входы D1D8 подаем входные данные а на остальные: V1=V2=R=1, D(+)=D()=0. Тогда по приходу синхроимпульса C1 данные со входов D1D8 будут занесены в регистр. Общая схема работы (с точки зрения синхроимпульсов) приведена ниже:

Затем, как видно из вышеприведенной схемы, данные с выходов 28 регистра RG1 поступают на входы D1D7 регистра RG2, причем на вход D8 подается 0. Абсолютно аналогично, то есть подав V1=V2=R=1, D(+)=D()=0 мы заносим данные (это мантисса числа, которую нам надо нормализовать) по приходу синхроимпульса C2 в регистр RG2. По приходу этого же синхроимпульса в регистр RG4 заносится 7d=111b это сразу смещенный порядок числа. Затем, начинается подача импульсов C3. Что же происходит при этом? Здесь начинает работать логика на элементах ИНЕ. То есть, проверяется содержится ли в старшем разряде мантиссы 0 (выход 1 регистра RG2). Если да, то сихнроимпульс приходит на регистры RG2 и RG4. Это приводит к тому, что мантисса, содержащаяся в регистре RG2 сдвигается на 1 разряд влево, а информация из регистра RG4 поступает на сумматор, где из порядка вычитается 1 и обратно заносится в регистр RG4. Таким образом мы разряд за разрядом нормализуем мантиссу. Когда в старшем разряде мантиссы окажется 1, то сработает логика на элементах ИНЕ и синхроимпульс C3 пойдет на регистр RG3, в который попадут выходные данные: старший разряд с регистра RG1 (знак), четыре разряда с регистра RG2 (мантисса) и три разряда с регистра RG4 (порядок). Для обеспечения работы регистра RG2 в параллельном и последовательном режиме на входе узла имеется управляющий вход V2. В начале работы, для обеспечения параллельного занесения из регистра RG1 в RG2 на вход V2 должна подаваться 1, а затем, для сдвига влево, должен подаваться 0. В регистре RG4, для обеспечения параллельного занесения на входы D0, V и C1 подается 1. Занесение 0111b (07d) в регистр RG4 происходит при появлении синхроимпульса C2, который не только обеспечивает занесение 7d в регистр порядка но и обеспечивает занесение в регистр RG2 мантиссы, а синхроимпульсы C3 отвечают за нормализацию мантиссы и за занесение выходных данных в регистр RG3 (это так сказать «выходной» регистр, с которого снимаются результаты преобразования).

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

Более подробное описание логики (уже на основе конкретной схемы, приведенной в приложении и на основе позиционных обозначений микросхем) следует далее:

Как было описано выше, после появления синхроимпульса на входе XP6 (C1) входные данные с шины XP5 заносятся в регистр D1. После чего появляется сигнал XP8 (C2) который заносит значения 28 регистра D1 (мантисса) в регистр D2. Надо помнить, что при этом управляющий вход XP7 (управление регистром, V2) подана 1. Кроме того, сигнал XP8, проходит через логику на элементах D6.1D6.3, D7.1D7.3, которые появляются на входах d1d3 регистра D4. После пропадания сигнала XP8 по заднему фронту в регистр D4 заносится значение 0111b (07d). Затем синхроимпульсы появляются на входе XP9 (C3). На логике D8.3 старший разряд регистра D2 инвертируется и поступает совместно с XP9 на элементы D6.4 и D7.4. Если в старшем разряде регистра D2 содержится 0, то данная логика сработает и на входах C1 регистра D4 и C регистра D2 возникнет синхроимпульс. На входе XP7 (управление регистром) у нас уже 0. Это приводит к тому, что значение в регистре D2 сдвинется влево на один разряд. Выходные данные с регистра D4 уже прошли через сумматор D5 и (всвязи с тем, что каждый четный выход у этого сумматора инверсный) логику на элементах D8.1, D8.2 поступили на вход регистра D4. В сумматоре данные складываются со значением 1111b (1d), то есть фактически вычитается 1. Итак, эти данные уже поступили на вход регистра D4 и после прихода синхроимпульса на C2 эти данные в параллельном виде заносятся в регистр D4.

В эти же моменты времени у нас работает логика на элементах D8.4, D9.1, которая проверяет, а не появилась ли у нас в старшем разряде регистра D2 единица?

Пока в старшем разряде D2 будет появляться 0 будет идти сдвиг мантиссы и вычитание из порядка 1. Но как только в старшем разряде регистра D2 появится 0, то сработает логика на элементах D6.4 и D7.4 которая прекратит подачу синхроимпульсов и преобразования над мантиссой и порядком. С другой стороны, сработает логика на регистрах D8.4 и D9.1 и синхроимпульс XP9 (C3) появится на входе регистра D3, что приведет к занесению результатов преобразования в регистр D3 (старший разряд из регистра D1 знак, 4 разряда из регистра D2 мантисса и 3 разряда из регистра D4 порядок).

Все преобразования закончились и узел готов к следующему преобразованию.

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

АНАЛИЗ БЫСТРОДЕЙСТВИЯ

Временная диаграмма для конкретного числа (1 0010 101) приведена в приложении, а мы займемся быстродействием.

1. Занесение данных в регистр D1 30 нс.

2. Занесение данных в регистры D2, D4:

а. D2: 30 нс.

б. D4: логика ИНЕ 15+22 нс=37 нс и занесение в регистр

35 нс.

3. Работа логики D8.3: 22 нс; D8.4+D9.1=37 нс (просиходит

параллельно с пунктом 4a).

4. Обработка порядка и мантиссы:

а. Сдвиг в регистре D2: 30 нс.

б. Порядок: сумматор, логика ИНЕ, параллельное занесение

в регистр: 55+22+35=112

5. Занесение информации в регистр D3: 30 нс.

То есть при худшем раскладе 6 преобразований над мантиссой и порядком, суммарное быстродействие узла:

30+72+112*6+30=804 нс.

То есть максимальная частота преобразования=1,24 МГц.

ЗАКЛЮЧЕНИЕ

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

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

ЛИТЕРАТУРА

1. Каган Б.М., Электронные вычислительные машины и системы, М. 1991 год.

2. Рахимов Т.М., Справочник по микросхемам серии К155, Новосибирск 1991 год.

3. Иванов Л.Н., Пентегов В.В., Архитектура вычислительных систем и сетей. Методические указания к курсовому проектированию, Новосибирск 1986 год.

ВРЕМЕНННАЯ ДИАГРАММА РАБОТЫ УЗЛА

ДЛЯ ЧИСЛА 1 0010 101

Учебная работа № 1666. Разработка узла с функцией перевода чисел из формата в формат