- •Отчёт по курсовой работе.
- •1. Уточнение структуры системы.
- •2. Проектирование структуры внешних выводов.
- •3. Форматы данных
- •4. Организация памяти
- •5. Формат команды
- •6. Система команд
- •7. Внутренняя организация
- •8. Алгоритмы исполнения отдельных операций
- •8.1. Выборка команды
- •8.2. Обработка адресной части команды.
- •8.3. Выполнение арифметических и логических операций
3. Форматы данных
Исходя из ТЗ, данные должны быть представлены 16-ти и 32-хразрядными числами с фиксированной запятой. Ниже показаны форматы данных, используемых в проектируемой системе:
Слово:
Двойное слово:
Число с ПТ одинарной точности:
Отрицательные целые числа представляются в дополнительном коде.
4. Организация памяти
Так как процессор проектируется по гарвардской архитектуре, то память команд и память данных разделяются. Как было сказано ранее, память команд и память данных адресуются раздельно.
Структура памяти команд приведена на рисунке ниже:
Память команд представляет собой flash-память с организацией 16К x 8. Начиная с нулевого адреса, в памяти размещаются пользовательские программы. Адреса с 0x3F0F по 0x3FFF предназначены для хранения таблицы векторов прерываний (15 векторов по 16 байт (4 команды)).
Структура памяти данных рассмотрена ниже:
Память данных представляет собой SDRAM- или SRAM-память с организацией 128K x 8. На соседнем рисунке изображена регистровая модель, состоящая из 16 регистров общего назначения (РОН), а также 2 регистра спец функций: регистр флагов (eflags) и счётчик команд (Program Counter).
Аппаратно стек не реализуется, а адрес возврата хранится в одном из РОН (R0).
Формат регистра флагов приведён ниже:
Пояснения: каждый флажок занимает 1 бит. Используются 5 младших битов, остальные зарезервированы.
C (Carry) – флаг переноса из старшего разряда
Z (Zero) – флаг нулевого результата
O (Overflow) – флаг переполнения
I (Interrupt enable) – флаг маскирования прерываний (0 – все прерывания маскированы, 1 – прерывания разрешены)
S (Sign) – флаг знака результата
Структура адресного пространства приведена ниже:
Под порты ввода-вывода отводится диапазон адресов с 0x0001FFFF по 0x0011FFFF. Остальные адреса зарезервированы.
Согласно ТЗ, требуется представить три типа адресации: непосредственная, относительная и косвенная.
Непосредственная адресация предполагает, что операнд занимает одно из полей команды.
пример: ADD R5,#0FDh
Косвенная адресация предполагает, что в поле команды подставляется номер регистра, содержащего адрес операнда в памяти данных.
Пример: ADD R5,@R6 *В R6 – АДРЕС ОПЕРАНДА
Относительная адресация удобна для работы с массивами. Она предполагает, что адрес операнда складывается из некоторого базового адреса, хранящегося в одном из РОН, и смещения относительно этого базового адреса.
Пример: MOV R11, @R4 + 3
5. Формат команды
Согласно ТЗ, команда должна иметь длину 32 бита. Формат команды представлен на рисунке ниже:
Пояснения к формату команды.
ПА – префикс адресации. Задёт тип адресации операндов. Длина – 2 разряда. 00 – непосредственная, 01 – косвенная, 10 - относительная
ОпКод – опкод, задаёт код выполняемой операции. Имеет длину 5 бит
DST – номер регистра назначения. Имеет длину 4 бита.
OP1 – номер регистра-приёмника. Также 4 бита
F – признак адресации. При F=0 поле OP2 трактуется как константа и используется либо при непосредственной, либо при относительной адресации. При F=1 поле OP2 рассматривается как номер регистра
OP2 – операнд 2. Имеет длину 16 бит.