ВВЕДЕНИЕ
Режим работы данного узла - преобразование чисел, поэтому
стоит поговорить о самих числах и их представлении в ЭВМ.
В ЭВМ используются двоичные числа, которые не привычны
обыкновенному человеку, привыкшему к арабским - десятичным
числам. Но для ЭВМ операции и само хранение двоичных чисел бо-
лее удобно. Двоичные числа - это числа, составленные из 0 и 1.
Например:
Десятичные числа Двоичные числа
0 0
1 1
2 10
3 11
4 100
5 101
6 110
и т.д.
С физической точки зрения, 1 можно представить как неко-
торый импульс/уровень напряжения, а 0 - как отсутствие таково-
го. Тогда, устанавливая некоторый порог напряжения, можно все,
что выше этого порога считать 1, а что ниже - 0. С десятичными
числами пришлось бы поступить сложнее - пришлось бы вводить
несколько пороговых уровней и на порядок усложнились бы все
узлы и блоки ЭВМ. Поэтому в современных ЭВМ используются дво-
ичные числа и двоичная арифметика.
Также в современных ЭВМ применяется шестнадцатиричная
арифметика. Это связано с тем, что очень легко выполнить пре-
образование из шестнадцатиричной системы исчисления в двоич-
ную и наоборот. Одна шестнадцатиричная цифра представляется
четыремя двоичными, например:
Десятичные Двоичные Шестнадцатиричные
1 0001 1
9 1001 9
10 1010 A
11 1011 B
12 1100 C
15 1111 F
и т.д.
Принятая минимальная единица информации в ЭВМ - 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. С фиксированной точкой:
5.8 d = 0 0101 110 b
T -T-- -T-
¦ ¦ L--- цифры после запятой (.8)
¦ L-------- цифры до запятой (5.0)
L----------- знаковый разряд (0='+', 1='-')
Но таким образом большие вещественные числа хранить не-
удобно и неэффективно. Поэтому используется второй вариант
хранения:
2. С плавающей точкой.
5.8 d = 0 1001 011 b
T -T-- -T-
¦ ¦ L--- порядок числа
¦ L-------- мантисса числа
L----------- знаковый разряд
То есть в формате с плавающей точкой хранится 2 числа -
порядок и мантисса. Так как порядок может быть и отрицатель-
ным, то приняли еще одно правило: порядок всегда смещенный. То
есть если порядок колеблется от +128d до -127d то к порядку
всегда прибавляют 127d и тогда он колеблется в пределах от 0
до +255d и таким образом нам не приходится хранить знак числа.
В связи с такими разными форматами представления чисел в
ЭВМ и был разработан данный узел, задача которого - преобразо-
вание чисел из формата с фиксированной точкой в формат с пла-
вающей точкой.
ВЫБОР СТРУКТУРЫ УЗЛА
Так как по заданию ввод/вывод в данном узле должен проис-
ходить параллельно, то потребуется 2 регистра (один для вход-
ных данных, один для выходных), разрядность которых исходя из
условия - 8 бит. Также, для промежуточных результатов потребу-
ется 1 восьмиразрядный регистр (для хранения и работы с ман-
тиссой) и один четырехразрядный регистр и один сумматор для
обработки порядка. Дополнительно также потребуется 13 элемен-
тов И-НЕ. Это пока все без доказательства - оно будет позже. В
качестве 8-ми разрядных регистров нам хорошо подходят
К155ИР13, в качестве 4-х разрядного - К155ИР1. Также мы ис-
пользуем сумматор К155ИМ3, а для дополнительной логики 4
микросхемы К155ЛА3. Итого вся схема собрана собрана, как и
требовалось на микросхемах серии К155. Альтернативный вариант
схемы будет рассмотрен далее. Общая схема узла приводится в
приложении.
РАСЧЕТ ПОСТРОЕНИЯ И ОПИСАНИЕ
ПРИНЦИПИАЛЬНЫХ СХЕМ
Как же именно, с моей точки зрения, должен работать дан-
ный узел? В целом его работу можно описать так:
Обозначим:
1. Число с фиксированной точкой
S1.I1.R1
¦ ¦ L-- цифры после запятой, 3 разряда
¦ L----- цифры до запятой, 4 разряда
L-------- знак, 1 разряд
2. Число с плавающей точкой
S2.M2.P2
¦ ¦ L-- порядок, 3 разряда
¦ L----- мантисса, 4 разряда
L-------- знак, 1 разряд.
Учитывая приведенные выше обозначения, общий принцип ра-
боты данного узла можно изобразить так:
Входные¦S1¦-------------+знак+------------->¦S2¦Выходные
данные ¦I1¦--¬ ----------¬ -->¦M2¦данные
¦R1¦-¬¦ ¦хранение ¦ ¦->¦P2¦
¦L->¦и работа ¦-¬ ---------¬ ¦¦
L-->¦с мантис-¦ ¦ ¦нормали-¦--¦
¦сой числа¦ L>¦зация ¦ ¦
L---------- ->¦резуль- ¦---
----------¬ ¦ ¦тата ¦
¦хранение ¦ ¦ L---------
¦и работа ¦--
¦с поряд- ¦
¦ком числа¦
L----------
Словесно, алгоритм преобразования можно описать так:
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(i-1)+a*b*P(i-1)+a*b*P(i-1)+a*b*P(i-1)
_ _ _
P(i)=a*b*P(i-1)+a*b*P(i-1)+a*b*P(i-1)+a*b*P(i-1),
где:
S(i) - сумма в i-ом разряде,
P(i) - перенос в i-ом разряде,
a,b - слагаемые в i-ом разряде,
P(i-1) - перенос из i-1 разряда.
Один из вариантов схемы для реализации такого сумматора
(точнее говоря элемента сумматора для одного разряда, из кото-
рых можно построить сумматор любой разрядности) выглядит так:
Формирователь суммы (вариант комбинационного сумматора) :
P(i-1)-T--------------------¬ --T-----¬
¦ L---T-+&¦1 ¦
a----T-+---------T--------------+-+ ¦ ¦
¦ ¦ ¦ --T+-+ ¦ ¦
b----+T+---------+------------ ¦¦ +-+ O-¬
¦¦¦ ----¬ L-------------++-+&¦ ¦ ¦
¦¦¦--+& ¦ ------------T++-+ ¦ ¦ ¦
¦¦L+ ¦ O---- ---+++-+ ¦ ¦ ¦
¦¦ L-+ ¦ ----¬ ¦ ¦¦¦ L-+------ ¦ ----¬
¦¦ L---- --+& ¦ ¦ ¦¦¦ --T-----¬ L--+& ¦
¦L------------+ ¦ O-+ ¦L+-+&¦1 ¦ ¦ O-- S(i)
¦ ----¬ L-+ ¦ ¦ L-+-+ ¦ ¦ ---+ ¦
¦ --+& ¦ L---- ¦ ---+-+ ¦ ¦ ¦ L----
L--+ ¦ O-------¬ ¦ ¦ ¦ +-+ O--
L-+ ¦ ¦ ¦ ¦ L-+&¦ ¦
L---- L----+-+----+ ¦ ¦
L------+ ¦ ¦
L-+------
Этот элемент сумматора работает по несколько измененной
формуле (в связи с базисом реализации И-НЕ и И-ИЛИ-НЕ):
_______________________________________________
_____________________ _____________________
_ _ _ _ _ _
S(i)=(a*b*P(i-1)+a*b*P(i-1))*(a*b*P(i-1)+a*b*P(i-1))
Можно показать, что формирователь переноса строится абсо-
лютно аналогично.
Затем перенос из i-того разряда передается на (i+1)-ый
разряд, а сумма i-того разряда выводится. Соединяя такие бло-
ки, можно получить сумматор любой разрядности.
Таким образом, в представленном сумматоре сумма формиру-
ется параллельно, а перенос последовательно. Данный сумматор
не отличается высоким быстродействием, а для повышения быстро-
действия используют так называемый сквозной и групповой пере-
нос.
В качестве элементов для такого сумматора можно взять
микросхемы К155ЛА3 и две К155ЛР4.
Возможно также построение сумматоров на основе тригге-
ров - тогда сумматор будет накапливающим, то есть результат
суммы будет доступен для считывания даже после отключения
входных сигналов.
РЕГИСТР
Регистры в данном курсовом проекте используются для хра-
нения и преобразования (сдвига) мантиссы и порядка. В целом
регистры делятся на параллельные, последовательные и комбини-
рованные. В нашем узле используются возможности как параллель-
ных (для хранения) так и последовательных (для сдвига) регист-
ров.
Как же строятся регистры? Регистры строятся на основании
триггеров, количество которых зависит от разрядности регистра.
Параллельные регистры.
Вот пример простейшего параллельного однофазного регистра
на RS-триггерах:
Вывод прямого кода----------------T---------------------------
Ввод---T--------------------------+---------------------------
¦ ----¬ ----T------¬ ¦ ----¬
L-+& ¦ ¦ ¦ TT ¦ L-+& ¦
¦ O-----O S ¦ +-¬ ¦ O-------¬
X(i) ---+ ¦ ¦ ¦ ¦ L---+ ¦ ¦