Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов О.С., Хiхловська I.В. Обчислювальна тех...doc
Скачиваний:
15
Добавлен:
01.09.2019
Размер:
4.12 Mб
Скачать

11.4.5 Підключення співпроцесора

Вхідний контроль:

  1. Які функції виконує співпроцесор у складі двопроцесорної системи: центральний процесор — співпроцесор?

  2. Які типи співпроцесорів Ви знаєте?

  3. Який пристрій, центральний процесор або співпроцесор, є ініціатором їх спільної роботи?

Робота співпроцесора здійснюється у циклі, коли FC2 = FC1 = FC0 = 1, або інакше, у просторі CPU.

Мікропроцесор МС68ЕС020 допускає підключення співпроцесора обробки чисел з плавучою крапкою типу МС68881; тип процесора визначається кодом, який вміщує поле формату команди CPID співпроцесора (рис. 11.35). Мнемоніка команди співпроцесора починається з символа F (1111).

15

12

11

9

8

6

5

0

1111

CpID

TYPE

TD

Додаткові слова

(адреса, команди, умови)

Рисунок 11.35 — Формат команд співпроцесора

Поле TYPE визначає тип команди, яку виконує співпроцесор — код операції, розгалуження за умовою, реалізація циклу тощо. Поле CD і інші слова команди вміщують додаткову інформацію: адресу операнда, вибір операції, умови тощо.

Після отримання команди співпроцесора мікропроцесор виконує цикл звернення до співпроцесора: FC2, FC1 та FC0 дорівнюють 1, а на шину адреси

31

20

19

16

15

13

12

5

4

0

0 ...

0

0010

CpID

0 ...

0

Регістр

поступає інформація, яка описує стан шини адреси при зверненні до співпроцесора. Вміст розрядів А19...А13 використовується для адресації вказаного у команді співпроцесора, а розряди А4...А0 вибирають регістр у складі інтерфейсу співпроцесора, який слугує джерелом або приймачем інформації.

При зверненні до співпроцесора мікропроцесор видає сигнали AS#, DS#, R/ , RESET# і приймає від нього сигнали підтвердження DSACK1#, DSACK0#.

Під час виконання команди співпроцесора програмний лічильник мікропроцесора РС вміщує адресу кода операції (першого слова команди). На рис. 11.36 показано ВІС математичного співпроцесора МС68881. Сигнал вибору співпроцесора СРСS формується на ПЛМ або на декодері адреси.

Рисунок 11.36 — ВІС співпроцесора та її підключення

Контрольні запитання:

  1. Які поля входять до складу формату команди співпроцесора і що вони визначають?

  2. З якого символу починається кожна команда співпроцесора і чому?

  3. Які пристрої можуть формувати сигнал CS# вибору мікросхеми співпроцесора?

  4. Яку розрядність має шина даних співпроцесора і чому?

  5. Яку функцію виконують у МПС вихідні сигнали співпроцесора DSACK0# та DSACK1#?

12 Програмування універсальних мп

ФІРМИ MOTOROLA

12.1 Мова Асемблер програмування мп фірми Motorola

Вхідний контроль:

  1. Який формат мають типові команди мови Асемблер-86?

  2. Де у форматі команди пересилань мови Асемблер-86 є джерело, а де приймач?

  3. Як у командах мови Асемблер-86 вказується розрядність операндів?

  4. У яких системах числення можуть бути подані операнди у командах мови Асемблер-86?

  5. Які способи адресування підтримують МП фірми Intel?

Мова Асемблер МП сімейства М680Х0 є спільна для МП МС68000 як базової моделі і подальших моделей та використовує формат двоадресної типової команди.

Формат типової двоадресної команди показано на рис. 12.1.

15

12

11

9

8

6

5

3

2

0

COP

Rn

OPM

MODE

REG

Рисунок 12.1 – Формат типової двоадресної команди

Поле COP визначає код виконуваної операції, поле Rn вміщує номер регістра – n, в якому зберігається операнд «приймач», OPM – розрядність і розміщування результату; поля MODE та REG спосіб адресування і розміщування операнда «джерело».

Якщо виконується адресація з індексуванням, код команди вміщує друге слово, формат котрого наведено на рис. 12.2.

15

14

12

11

10

8

7

0

D/A

Xn

W/L

000

d8

Рисунок 12.2 – Формат другого слова команди при адресації з індексуванням

Поле D/A визначає тип регістра, який використовується у якості індексного. При D/A = 0 в якості індексного використовується один з регістрів даних, а при D/A = 1 — регістр адреси.

Поле Xn вміщує номер регістра, який використовується в якості індексного.

Поле W/L визначає розрядність індексу. При W/L = 0 в якості індексу використовується 16 молодших розрядів індексного регістра з поширенням знака до 32 розрядів. При W/L = 1 індексом служить 32-розрядний вміст індексного регістра.

Поле d8 вміщує 8-розрядне зміщення, яке подано у доповнювальному коді.

Деякі способи адресації потребують доповнення кодів команди, які розглянуті. Так, при безпосередньому адресуванні код команди доповнюється одним або двома словами, які вміщують безпосередній операнд Im8, Im16 або Im32. Якщо при адресуванні операнда «джерело» або «приймач» використовується 16-розрядне зміщення або використовується абсолютна адреса, яка має розмір слово (Abs.W) або подвійне слово (Abs.L), то код команди доповнюється відповідними словами.

В загальному вигляді типова двоадресна команда мови Асемблер МП МС68000 має вигляд

COP.х <src>, <dst>,

де СОР — мнемокод відповідної команди, замість х ставиться символ; який визначає розрядність операндів: В — байт, W — слово (16 розрядів), L — довге слово (32 розряди); якщо символ розрядності є відсутній, то за умовчанням операнд — є слово. Операнди умовно визначаються як <src> — джерело, <dst> — приймач, який слугує саме приймачем результату операції. При записуванні конкретних команд замість <src> та <dst> вказуються символічні адреси операндів на мові асемблера відповідно до способу їх адресації. При безпосередній адресації замість <src> вказується число, перед яким ставиться префікс #.

Операнди, адреси та зміщення у командах можуть подаватись у системах числення, які визначаться символами:

& — десяткова система,

% — двійкова система,

@ — вісімкова система,

$ — шістнадцяткова система,

символи ставляться перед даними.

При відсутності символу, який визначає систему числення, дане сприймається як десяткове число.

Мікропроцесор МС68000 виконує читання з пам’яті 16-розрядних операндів, так само як їх запис у пам’ять, навіть коли у команді вказується у якості операнда байт; у циклі звернення до пам’яті вибирається слово, молодший байт якого використовується як операнд. Довге слово вибирається за два послідовних цикли шини, причому першими вибираються старші 16 розрядів. Таким чином, адреси команд або даних, що їх формує МП, мають бути парними.

Мікропроцесори МС68000 та старші моделі використовують такі способи адресації операндів:

  • регістрова (операнд у регістрі даних або адреси), наприклад

МOVЕ.В D1, D0

MOVЕ.L A2, A3;

  • непряма регістрова (операнд у комірці пам’яті, яка є адресована вмістом регістра адреси), наприклад

MOVЕ (A0), D1

  • непряма регістрова з постінкрементом (операнд у комірці пам’яті, адреса якої знаходиться в адресному регістрі і після виконання команди нарощується на 1, 2 або 4 залежно від довжини вказаного операнда), наприклад

MOVЕ D3, (A1)+ ; Вміст А1 після виконання команди

; нарощується на 2

  • непряма регістрова з предекрементом (операнд у комірці пам’яті, адреса якої знаходиться в адресному регістрі, і перед виконанням команди зменшується на 1, 2 або 4 залежно від довжини вказаного операнда), наприклад

MOVЕ.L -(A1), D2 ; Вміст A1 перед виконанням команди

; зменшується на 4

  • непряма регістрова зі зміщенням (операнд у комірці пам’яті, адреса якої є алгебраїчна сума вмісту регістра адреси та 16-розрядного зміщення, яке задається у команді), наприклад

MOVЕ.B -$A (A0), D3 ; Для МП МС68000

MOVЕ.В ($44, А3), D4 ; Для старших моделей

  • непряма регістрова з індексуванням (операнд у комірці пам’яті, адреса якої є сума вмісту регістра адреси, індексного регістра та зміщення, заданого у команді), наприклад

CLR.B $40 (A0, D3.W) ; Для МП МС68000

CLR ($1234 A2, D3.L) ; Для старших моделей

  • пряма (операнд у комірці пам’яті, адреса якої задається числом зі знаком, прямо указаним у команді), наприклад

JMP $1234 ; Для МП МС68000

MOVЕ.B D0, -$07FF.W ; Для старших моделей, ефективна адреса

; становить $FFF801

  • відносна (операнд у комірці пам’яті, адреса якої є сума поточного вмісту програмного лічильника РС та заданого у команді зміщення); поточний вміст РС, який використовується для обчислення відносної адреси, дорівнює адресі першого слова виконуваної команди плюс 2, наприклад

JMP * + $10 ; Для МП МС68000

JMP (* + $10, PС) ; Для старших моделей

  • відносна з індексуванням (операнд у комірці пам’яті, адреса якої є сума вмісту РС, індексного регістра та зміщення, заданого у команді), наприклад

СLR $10 (PC, A2.W) ; Для старших моделей

СLR ($1000, PC, A2.W) ; Для старших моделей

  • безпосередня (значення операнда задано безпосередньо у команді), наприклад

MOVЕQ #$40, D3 ; Швидке завантаження

MOVЕQ #64, D3 ; безпосередньо заданого операнда у D3

МП сімейства М680Х0 підтримують усі способи адресації, що і МП МС68000, і крім того, додаткові типи непрямої регістрової адресації з індексуванням.