Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

пособие Вычислительная техника

.pdf
Скачиваний:
49
Добавлен:
09.02.2015
Размер:
2.5 Mб
Скачать

Работа с графическим редактором (Graphic Editor)

Выбрав графический редактор, двойным щелчком в рабочей области (окне) вызываем библиотеку элементов. Лучше начать работать с библиотекой prim, которая содержит стандартные логические элементы. Вводя в поле symbol name имя логического элемента или выбрав необходимый из элементов в поле symbol files, собираем требуемую логическую схему. Схему любого библиотечного элемента можно посмотреть, выполнив двойной щелчок на выделенном элементе. Пример построения схемы приведён на рисунке 1.12.

Рис.1.12. Пример построения цифровой схемы

В случае отсутствия необходимого элемента в справочниках библиотеки в пакете MAX+ PLUS II возможно создание необходимого элемента с использованием мегафункций «MegaWizard Plug-In Manager» (создание сумматоров, перемножителей, компараторов и т.п.).

Проведение шин выполняется через команду Options/LineStyle с выбором вида соединительной линии. Обозначение шины выполняется латиницей в режиме указателя (наклонная стрелка в левом инструментальном поле), но лучше это делать в текстовом режиме,

11

поместив маркер в тексте входа/выхода или над маркируемой линией. Например, in_a[12..1], где 12 и 1, соответственно, старший и младший индексы связей. Обозначение отдельной связи в шине состоит из имени шины и её индекса, например in_a[1]. Линии, идущие от входов/выходов, можно не обозначать, так как им автоматически присваиваются имена входов/выходов.

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

Точка на шине или связи ставится с помощью инструментальной

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

Вращение элемента выполняется командой Rotate, выбираемой из меню, которое появляется после щелчка правой клавишей «мыши» (контекстное меню). Проще выполнить команду вращения из оп-

ции Edit.

Для создания элемента и внесения его в библиотеку элементов необходимо создать файл .gdf, задав входы и выходы, произвести трассировку системы и проверить компилятором работоспособность и наличие ошибки; во вкладке File/Create Default Symbol создать символ.

Компиляция и отладка

Перед компиляцией в опции File/ Project задать имя проекта (имя головного файла с расширением *.gdf). Компиляция проводится либо через опцию MAX+PLUS II/Compiler, либо через главную инст-

рументальную линейку или . При появлении окна компилятора нужно щёлкнуть по клавише Start.

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

Для отмены глобальных входов тактирования, сброса и выбора кристалла нужно в меню выбрать опцию Assign, а в ней – Global Project Logic Synthesis и убрать все «галочки» в секциях Automatic Global, MAX Device Synthesis Options и др. Убедиться, что в окне Global Project Synthesis Style установлен режим NORMAL. В этом случае глобальные входы можно использовать в качестве обычных.

Для определения ёмкости, используемой проектом, необходимо

в значке пирамида открыть вкладку rpt и посмотреть сообщение

%LCS Utilized.

Моделирование

Открываем файл с расширением *.sсf, щёлкнув по соответствующему значку главной инструментальной линейки. Двойным щелчком вызываем меню ввода входных/выходных переменных.

12

Для установки интервала времени моделирования, приведённого на рисунке 1.1, нужно войти в опцию File/EndTime и выставить нужное время (us, ms, s) или масштаб (1, 10, 100, 1000). Через меню можно вводить как одиночные входы/выходы, так и группы. На рисунке 1.14 приведён пример проверки работы устройства. В качестве входных значений представлена группа входов, выходных – одиночные элементы.

Рис. 1.13. Меню ввода входных/выходных значений

Рис. 1.14. Пример моделирования электронных схем

Для задания тактовой частоты нужно использовать левую инструментальную линейку (иконка с символом «С»), предварительно щелчком выделив диаграмму тактовой частоты.

Для установки значений входных сигналов нужно с помощью вертикального репера установить щелчком с протаскиванием длительность сигнала, а затем и его значение с помощью иконки с символом «1» на левой инструментальной панели . Для установки известного по параметрам сигнала можно использовать кнопку или , позволяющие задавать сигнал определённой длительности.

Просмотреть результаты своей работы по распределению ресурсов можно, вызвав файл .acf.

13

2. СИСТЕМЫ ИСЧИСЛЕНИЙ, ОСНОВЫ ПЕРЕВОДА ЧИСЕЛ

В РАЗЛИЧНЫЕ СИСТЕМЫ ИСЧИСЛЕНИЯ

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

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

Система исчисления:

даёт представления множества чисел (целых или вещественных);

даёт каждому числу уникальное представление (или, по крайней мере, стандартное представление);

отражает алгебраическую и арифметическую структуру чисел. Системы исчисления подразделяются на позиционные, непози-

ционные и смешанные.

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

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

Смешанная система исчисления является обобщением b-рич- ной системы исчисления, она также зачастую относится к позиционным системам исчисления. Основанием смешанной системы исчисления является возрастающая последовательность чисел {bk }k =0 , и каж-

дое число x представляется как линейная комбинация:

n1

x = ak bk ,

k =0

где на коэффициенты ak накладываются некоторые ограничения.

14

Наиболее известным примером смешанной системы исчисления можно считать представление времени в виде количества суток, часов, минут и секунд. При этом величина d (дней), h (часов), m (минут), s (секунд) соответствует значению d 24 60 60 h 60 60 m 60 s

Чтобы определить число, недостаточно знать тип и алфавит системы исчисления. Для этого необходимо ещё использовать правила, которые позволяют по значениям цифр установить значение числа. Простейшим способом записи натурального числа является изображение его с помощью соответствующего количества палочек, чёрточек или узелков. Таким способом можно обозначить небольшие числа. В непозиционной системе каждый знак в записи независимо от места означает одно и то же число. Хорошо известным примером непозиционной системы исчисления является римская система, в которой роль цифр играют буквы алфавита: І – один, V – пять, Х – десять, L – пятьдесят, С – сто, D – пятьсот, М – тысяча. Например, 324 = = СССХХІV. В непозиционной системе исчисления арифметические операции выполнять неудобно и сложно.

Майя использовали двадцатеричную систему исчисления за одним исключением: во втором разряде было не 20, а 18 ступеней, т.е. за числом (17)(19) сразу следовало число (1)(0)(0). Это было сделано для облегчения расчётов календарного цикла, поскольку (1)(0)(0) = 360, что примерно равно числу дней в солнечном году. Для записи основными знаками были точки (единицы) и отрезки (пятёрки).

Рассмотрим привычную и общепринятую систему исчислений –

позиционную.

Общепринятой в современном мире является десятичная позиционная система исчисления, которая из Индии через арабские страны пришла в Европу.

Десятичная непозиционная система исчисления с единичным кодированием десятичных цифр возникла во второй половине третьего тысячелетия до н. э. в Древнем Египте. В другой великой цивилизации – вавилонской – за две тысячи лет до н. э. внутри шестидесятеричных разрядов использовалась позиционная десятичная система исчисления с единичным кодированием десятичных цифр.

Древнейшая известная запись позиционной десятичной системы обнаружена в Индии в 595 г. Нуль в то время применялся не только в Индии, но и в Китае. В этих старинных системах для записи одинакового числа использовались символы, рядом с которыми дополнительно помечали, в каком разряде они стоят. С течением времени, для упрощения записи перестали помечать разряды, но число всё равно можно

15

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

Индийская нумерация пришла сначала в арабские страны, затем и в Западную Европу. О ней рассказал среднеазиатский математик Аль-Хорезми. Простые и удобные правила сложения и вычитания чисел, записанных в позиционной системе, сделали её особенно популярной. А поскольку труд Аль-Хорезми был написан на арабском, то за индийской нумерацией в Европе закрепилось неправильное название – «арабская».

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

Общеупотребительной формой записи числа является сокращённая форма записи разложения по степеням основы системы исчисления, например:

130678 1 105 3 104 0 103 6 102 7 101 8 100 .

Здесь 10 служит основой системы исчисления, а показатель степени – это номер позиции цифры в записи числа (нумерация ведётся слева направо начиная с нуля). Арифметические операции в этой системе выполняют по правилам, предложенным ещё в Средневековье. Например, складывая два многозначных числа, применяем правило сложения столбиком. При этом всё сводится к сложению однозначных чисел, для которых необходимо знать таблицу сложения.

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

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

16

система исчисления. Эта система близка к оптимальной по экономичности, и, кроме того, таблицы сложения, вычитания и умножения в этой системе элементарные:

0 0 0

0 0 0

0 0 0

0 1 1

1 0 1

0 1 0

1 0 1

1 1 0

1 0 0

1 1 10

10 1 1

1 1 1.

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

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

Обратный код отрицательных двоичных чисел может быть сформирован по следующему правилу: цифры всех разрядов, кроме знакового, заменяются на обратные (инвертируются) – единицы заменяются нулями, а нули единицами. В знаковый разряд ставится единица. Обратное преобразование из обратного кода в прямой производится по тому же правилу. При использовании обратного кода операция вычитания реализуется как арифметическое сложение положительного числа, представленного в прямом коде, с отрицательным числом, представленным в обратном коде. Например, при вычитании из числа 0 10110 числа 1 01101 уменьшаемое представляется как положитель-

ное число в прямом коде 0 10110, а вычитаемое – как отрицательное число в обратном коде 1 10010.

17

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

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

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

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

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

Поскольку 23 8, а 24 16, то каждых три двоичных разряда числа образовывают один восьмеричный, а каждых четыре двоичных разряда – один шестнадцатеричный. Поэтому для сокращения записи

18

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

Система исчисления

десятичная

двоичная

восьмеричная

шестнадцатеричная

010

00002

08

016

110

00012

18

116

210

00102

28

216

310

00112

38

316

410

01002

48

416

510

01012

58

516

610

01102

68

616

710

01112

78

716

810

10002

108

816

910

10012

118

916

1010

10102

128

A16

1110

10112

138

B16

1210

11002

148

C16

1310

11012

158

D16

1410

11102

168

E16

1510

11112

178

F16

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

ричную. Например, 101102 10_110 268, 10111002 101_1100 5C16 .

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

19

системы исчисления в количестве, равном показателю степени новой системы исчисления. Например, 4728 100_111_010 1001110102 ,

B516 1011_0101 101101012 .

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

Алгоритмы перевода из одной позиционной системы исчисления в другую.

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

– из шестнадцатеричной в десятичную:

92C816 9 10163 2 10162 C 10161 8 10160

9 16103 2 16102 12 16101 8 16100 3757610;

из восьмеричной в десятичную:

7358 7 1082 3 1081 5 1080 7 10102 3 10101 5 10100 47710 ;

– из двоичной в десятичную:

1101001012 1 1028 1 1027 0 1026 1 10250 1024 0 1023 1 1022 0 1021 1 1020

1 2108 1 2107 0 2106 1 2105 0 2104 0 2103

1 2102 0 2101 1 2100 42110.

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

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

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

20