Мікропроцесорна система обробки журнальних даних

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Завдання

Знайти найменший звіт, зареєстрований в «електронному журналі» під час передостаннього сеансу зняття показань датчиків.

Вихідний дані:

Кількість датчиків N - 5

Кількість сеансів n - 2

Початковий адреса для файлу G Аж.нач. - 2225 (10) = 08B1 (16)

Початковий адресу програми Апр.нач. - FA25 (16)

Мікропроцесорна система обробки журнальних даних

1. Кожному включенню МСОЖД повинен передувати робочий цикл деякого автомата для збору даних (АСД), який протягом свого добового циклу (коли сигнал X 1 = 1) організовує n сеансів зв'язку і під час кожного «сеансу» по черзі (у порядку зростання номерів) підключає датчики Д 1 ... Д n до входу даних Д ОЗУ, формує адресу (номер) Aij осередки для запису свідчень Д ij i-го датчика в j-му «сеансі» зв'язки і виробляє саму команду w запис. У результаті в кінці добового циклу збору даних, коли сигнал 1 | 0 змінить свій рівень з 1 на 0, в ОЗУ виявиться сформованим готовим до обробки файл G даних (тобто електронний журнал), структура якого повністю відома.

На малюнку 1 зображено спрощена структура такого автомата для збору даних (АСД): до його складу входять програмований електронний таймер, 8-розрядний N-канальний мультиплексор і два детектора, які, аналізуючи показання таймера, формують сигнали «сеанс» (= 1 під час сеансу) і «цикл» (= 1 під час циклу). Останній з них X 1 зберігається в регістрі паралельної дії RG, тобто в «порте» пристрої введення УВ № 1 МСОЖД.

Рис. 1. Автомат для збору даних.

2. Опис МСОЖД. Один з можливих варіантів побудови МСОЖД показаний на малюнку 2, де наведено мікропроцесорна система з трехшінной організацією, а в якості центрального процесора (CPU) використана БІС КР580ВМ80. Якщо в ОЗУ в область вільну від оброблюваного файлу G, розмістити програму, що реалізовує заданий користувачем алгоритм обробки, то стає можливою автоматизація процедури обробки. Програм запускається після закінчення добового циклу збору даних, а обробка починається за сигналом X = 0, що прочитується з «детектора циклу» АСД і вводиться через пристрій введення УВВ № 1 по команді INPUT програми. У ході опрацювання програма повинна забезпечувати неодноразове витяг з ОЗУ будь-якого елемента файлу G, виконання над ним необхідних арифметичних і логічних дій, що призводять до формування кінцевого результату F, та видачу F через пристрій виведення УВив № 1 користувачеві (по команді UOTPUT). Потрібно врахувати, що структура файлу G така (почергова запис свідчень датчиків у порядку зростання їх номерів під час кожного сеансу), що інформація g ij, прийнята по i-ому каналу (i = 1,2, ..., n-1) під час j-ого сеансу (j = 0,1,2, ..., n-1), буде зберігатися в осередку ОЗУ з номером = адресою A ij = A поч + j * N + i.

А область пам'яті, яку займає журнал, знаходиться в діапазоні адрес від А поч до (А поч + n * N +1).

Рис. 2. МП - система автоматичної ОЗ.

Якщо в програмі виконується команда, що вимагає звернення до пам'яті, то на 16-розрядну шину адреси ША виставляється номер необхідного елементу A ij, а на 10-розрядній шині управління ШУ формуються сигнали «читай пам'ять» MEMR або «пиши в пам'ять» MEMW, які задають режим роботи ОЗУ і напрям передачі по двобічної 8-розрядній шині даних ШД. Якщо ж програма виконає програму INPUT (або OUTPUT), то на ША видається номер пристрої введення (або висновку), а на ШУ формуються сигнали «введення / висновок читай» IOR (або «введення / висновок пиши» IOW).

«Портом» УВВ № 1 є 8-розрядний регістр-клямка, у якого молодший розряд зберігається в ньому числа визначається сигналом Х 1, а сигнал IOR надходить на вхід «дозвіл видачі» ОО. «Порт» УВив № 1 також є паралельним 8-рязрядний регістром, на тактовий вхід якого надходить сигнал IOW. Саме Увив являє собою 3-розрядний 7-сегментний індикатор (для відображення результату F) і відповідний кодопреобразователь, включений між портом і індикатором.

3. Процесор КР580ВМ80.

До складу даного 8-розрядного процесора (рис. 3) входить АЛУ і програмно-доступні регістри: акумулятор РОН А, 6 регістрів загального призначення РОН (з «ім'ям» B, C, D, E, H і L) і лічильник команд РС . АЛП, отримавши від УУіС вказівки про тип виконуваної операції f над доставленими на його вході операндами х 1 і х 2, формує результат F = f (x 1 x 2) і «прапори» Ф (ознаки нульового - Z, негативного - S і парного результат Р або наявність переносу З 7). Істотно, що результат F завжди (за замовчуванням) розміщується в РОН А. Це означає, що, якщо вміст РОН А чи не є операндом наступної команди, то при програмуванні її повинна передувати додаткова команда (якої немає в алгоритмі обробки користувача) перезапису вмісту РОН А у вільний РОН або в клітинку М пам'яті ОЗУ (= Ме-точку). Для програмуванні операцій з РОН кожному з них присвоєно порядковий номер i і відповідний індивідуальний двійковий код ri (табл. 1). Для зберігання 16-розрядний чисел d16 = adr Роня можуть об'єднуватися в реєстрові пари rp: BC = rpB, DE = rpD, HL = rpH.

Рис. 3. Упрощешшая модель мікропроцесора КР580ВМ80

Нумерація РОН. Табл. 1

i

Ім'я РОН

Код ri

0

1

2

3

4

5

6

7

B

C

D

E

H

L

M

A

000

001

010

011

100

101

110

111

Покажчик стека SP зберігає поточний адресу осередки ОЗУ, що є на даний момент вершиною стека.

Лічильник команд PC зберігає адресу виконуваної (поточної) команди: після її завершення вміст PC инкрементируется, т. е.PC (PC) + 1, і через буферний PrАдр видається на системну ША, а з ОЗУ (за сигналом MEM R) витягується перший байт <B 1> коду наступної команди з осередки ОЗУ з номером (PC) + 1) і з системної шині ШД передається в регістр команд PrK.

Це означає, що у звичайній ситуації процесор може виконувати команди програми тільки в тому порядку, в якому вони записані в ОЗУ.

Щоб змінити порядок виконання команд (зробити стрибок на кілька осередків ОЗУ вперед або назад, організувати розгалуження або цикл, виконати програму), необхідно в програму вставити команду безумовного або умовного переходу, яка дозволяє стрибком міняти вміст (РС) лічильника команд РС.

Всі регістри і АЛУ обмінюються між собою 8-розрядними даними d8 через внутрішню двонаправлену ШД, проте на кожному такті обмін здійснюється тільки між однією парою «абонентів» (один - відправник, інший - одержувач).

Обмін між внутрішньою і зовнішньою = системної ШД відбувається через двонаправлений буферний регістр.

Кожен (поточна) команда програми (її код знаходиться в PrK, а адреса в РС) виконується процесором протягом певного часу, званого командним циклом тривалістю від 1 до 4 тактів (при тактовій частоті 2 MГц). У перебігу командного циклу пристрій управління і синхронізації УуіС, будучи звичайним керуючим автоматом (УА), декодує за допомогою дешифратора ДШК перший байт <B 1> коду команди і відповідно з цим кодом на кожному такті виробляє сигнали для внутрішнього виконання управлінням мікрооперацій на «обраних »(на даному такті) функціональних вузлах (регістрах, АЛУ, селекторі та ін), а також зовнішні керуючі сигнали (типу MEMR, MEMW, IOW та ін), що видаються на системну ШУ.

4. Система команд.

Кожен процесор вміє виконувати обмежений набір «наказів», що входять в його систему команд. Кожна команда представляє собою багаторозрядних двійковий код (від 8 до 24 біт) певного формату. Для процесора КР580ВМ80 передбачені команди трьох форматів: «короткі» однобайтні <B 1>, двухбайтное <B 1> <B 2> і трехбайтние <B 1> <B 2> <B 3>. Перший байт <B 1> команди будь-якого формату містить код операцій Коп, другий <B 2> - в двобайтових командах містить числове значення безпосередньо задається операнда d8 або порядковий номер n пристрої введення / виведення = port n. Третій і другий байти «довгих» команд містять або чисельне значення 16-розрядного операнда d16, або 16-розрядний адреса ("adr"): причому старший байт адреси / операнда розміщується в <B 3>, а молодший у <B 2>.

Нижче в таблиці 2 наведені дані про найбільш ходових командах процесора.

У таблиці 2 поле 1 характеризує формат команди (у байтах), поле 2 - тривалість командного циклу в кількості тактів; в полі 3 описується (мовою мікрокоманд) виконувана операція: запис (ri) означає «вміст» регістру ri, запис <B i > - «вміст байта B i? (HL) - реєстрової пари HL, а в полі 5 побітова структура 1 - го байта <B 1> коду команди.

У командах пересилання та завантаження (NN1 і 2) потрібно врахувати, що при ri = 110 в обміні бере участь осередок М ОЗУ, адреса якої (за замовчуванням) зберігається в реєстрової парі HL. Це означає, що команда MOV і MVI обов'язково повинна передувати команда завантаження реєстрової пари (HL adr), тобто команда LXI.

У ассемблерной запису команд NN3 і 21 фігурує старший регістр ri (= B, D або H) реєстрової пари rp. При виконанні двухоперандних команд (NN7 - 18) перші операнд x 1 завжди береться з РОН А, а другий x 2 з іншого РОНА або задається безпосередньо в другому байті <B 2> команди. Логічні операції, на відміну від арифметичних, виконуються поразрядно.

Для всіх команд умовного переходу (NN25 - 30) при невиконанні перевіряється умови в PC завантажується адреса adr = (PC) + 3.

Система команд процесора КР580ВМ80. Табл.2

NN

n / n

Ассемблерние запис команди

Формат

(Байти)

Такти

Виконувана операція


Форми-

Аналізовані

прапори

Структура <B 1>

(Номери розрядів)

Команди пересилання та завантаженні

1.

2.

3.

4.

5.

6.

MOV_ri, rj

MVI_ri, d8

LXI_ri, d16

XCHD

PCHL

SPHL

1

2

3

1

1

1

5

7

10

4

5

5

ri ← (rj)

ri ← B 2>

ri ← <B 2>, ri +1 ← <B 2>

(HL) ↔ (DE)

PC ← (HL)

SP ← (HL

немає

немає

немає

немає

немає

немає

0

0

0

1

1

1

1

0

0

1

1

1

1

1

1

ri

ri

ri

0

0

0

1

1

1

1

0

0

0

0

ri

1

0

1

0

0

0

1

1

1

1

Арифметичні та логічні операції

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

ADD_ ri

SUB_ ri

ANA_ ri

XRA_ ri

ORA_ ri

CMP_ ri

ADI_ d8

SUI_ d8

ANI_ d8

XRI_ d8

ORI_ d8

CPI_ d8

SMA

1

1

1

1

1

1

2

2

2

2

2

2

1

4

4

4

4

4

4

7

7

7

7

7

7

4

A ← (A) + (ri)

A ← (A) - (ri)

A ← (A) / \ (ri)

A ← (A) + (ri)

A ← (A) \ / (ri)

Сравн. A - (ri)

A ← (A) + <B 2>

A ← (A) - <B 2>

A ← (A) / \ <B 2>

A ← (A) + <B 2>

A ← (A) \ / <B 2>

Сравн. A - <B 2>

A ← (A)

всі

всі

z, s, p

z, s, p

z, s, p

всі

всі

всі

z, s, p

z, s, p

z, s, p

всі

немає

1

1

1

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

0

1

1

1

1

1

1

0

0

0

1

1

1

1

0

0

1

1

1

1

1

0

1

0

0

1

1

0

1

0

0

1

1

0

0

0

0

1

0

1

0

0

0

1

0

1

1

1

1

1

1

1

1

1

ri

ri

ri

ri

ri

ri

1

1

1

1

1

1

1

0

0

0

0

0

0

1

Операції циклічного зсуву і інкремента

20.

21.

22.


23

INR_ri

INX_ri

RLC


RRC

1

1

1


1

5

5

4


4

ri ← (ri) + 1

rp ← (rp) + 1

Ai +1 ← (Ai); A 0 ← (A 7);

C 7 ← (A 7)

Ai ← (Ai +1); A 7 ← (A 0);

C 7 ← (A 0)

z, s, p

немає

З 7


З 7

0

0

0


0

0

0

0


0

0


0

ri

ri

0


0

0


1

1

0

1


1

0

1

1


1

0

1

1


1

Безумовний перехід

24

JMP_adr

3

10

PC ← <B 3> <B 2>

немає

1

1

0

0

0

0

1

1

Умовні переходи

25.


26.

27

28

29

30

JNZ_adr


JZ_adr

JNC_adr

JC_adr

JP_adr

JM_adr

3


3

3

3

3

3

10


10

10

10

10

10

при z = 0

PC ← <B 3> <B 2>

при z = 1 ... .. | ... ..

при С 7 = 0 ... .. | ... ..

при С 7 = 1 ... .. | ... ..

при S = 0 ... .. | ... ..

при S = 1 ... .. | ... ..

немає


немає

немає

немає

немає

немає

1


1

1

1

1

1

1


1

1

1

1

1

0


0

0

0

1

1

0


0

1

1

1

1

0


1

0

1

0

1

0


0

0

0

0

0

1


1

1

1

1

1

0


0

0

0

0

0

Допоміжні функції

31.

32.

33.

34.

IN_port n

OUT_port m

NOP

HLT

2

2

1

1

10

10

4

7

Введення: А ← (port n)

Висновок: А ← (port m)

Ні операції

Зупинка, стоп

немає

немає

немає

немає

1

1

0

0

1

1

0

1

0

0

0

1

1

1

0

1

1

0

0

0

0

0

0

1

1

1

0

1

1

1

0

0

5. Розробка алгоритму

Рис.4. Блок - схема алгоритму обробки журнальних записів.

Алгоритм обробки наказує почергове читання з ОЗУ показань gt з осередків з адресами At, попарне порівняння їх за величиною і запам'ятовування меншого з них. Блок - схема алгоритму наведена на рис. 4 і містить 19 команд к1 ... К19: тут формується величина gmin розміщена в РОН Е, поточний адресу Аt = Aпред + ΔAt - у реєстрової парі HL, а приріст адреси ΔAt = kt є параметром циклу обробки і розміщується в РОН С; максимальне (= граничне) приріст krp = N = 5 є індикатором закінчення циклу аналізу даних gt з журнального файлу G.

На блок-схемі рис.4:

У таблиці 3 (у полях 2-6) наведена ассемблерних запис програми, що реалізує цей алгоритм. З неї видно, що для розміщення завантажувального модуля (в двійкових кодах) цієї програми необхідно 34 байти (осередки ОЗУ).

Сам завантажувальний модуль представлений полями 0 і 1табліци 3, але для простоти і кратності записаний в 16-ковий кодах (h-кодах): коди перший байтів взяті з таблиці 2, а числові значення <B 3> і <B 2>, а також початкової адреси передостаннього сеансу FA25 (16) для розміщення програми в ОЗУ встановлюються за вихідними даними завдання.

Текст програми на асемблері і її завантажувальні модуль (у h-кодах). Табл.3

Мет-

ки

Адреса ОЗУ

h-коди

NN

коман-

ди

Асемблер

Коментар

Бай-

ти

Так-

ти


0

1

2

3

4

5

6

М1

FA25

FA26

<B 1> DB

<B 2> 01

K1

IN_00

A ← (port 0)

2

10


FA27

FA28

<B 1> E6

<B 2> 01

K2

ANI_01

A ← (A) ^ maska

maska ​​= 01h

2

7


FA29

FA2A

FA2B

<B 1> C2

<B 2> 89

<B 3> FE

K3

JNZ_M1:

Ум. Перехід (УП) за умовою Х1 = 0

(«Обробку розпочати»)

3

10


FA2C

FA2D

FA2E

<B 1> 21

<B 2> 86

<B 3> 26

K4

LXI_H, 08B1

HL ← Апред

(Апред = adr = 08B1

3

10


FA2F

<B 1> 5E

K5

MOV_E, M

E ← gt (з ОЗУ)

1

5


FA30

FA31

<B 1> 0E

<B 2> 00

K6

MVI_C, 00

З ← 0 (At: = 0)

2

7

M2

FA32


<B 1> 23

K7

INX_H

HL ← (HL) +1

інкремент At

1

5


FA33

<B 1> 0C

K8

INR_C

C ← (C) +1 (інкр. Kt)

1

5


FA34

<B 1> 79

K9

MOV_A, C

А ← З

1

5


FA35

FA36

<B 1> FE

<B 2> 0D

K10

CPI_0C

Порівняння (А) з Krp = 05

2

7


FA37

FA38

FA39

<B 1> F2

<B 2> A7

<B 3> FE

K11

JP_M2:

УП на мітку М2

(«Кінець файлу G»)

3

10


FA3A

<B 1> 7E

K12

MOV_A, M

А ← gt (з ОЗУ)

1

5


FA3B

<B 1> BB

K13

CMP_E

Порівняння (А) і gmin

1

4


FA3C

FA3D

FA3E

<B 1> F2

<B 2> 96

<B 3> FE

K14

JP_M3:

УП на мітку М3

(«Новий відлік gt менше, ніж gmin?»)

3

10


FA3F

<B 1> 5F

K15

MOV_E, A

Зберегти gt в РОН E

1

5


FA40

FA41

FA42

<B 1> C3

<B 2> 98

<B 3> FE

K16

JMP_M3:

Безусл. Перехід (БП)

на мітку М3

(PC) ← <B 3> <B 2>

3

10

M2

FA43

<B 1> 7B

K17

MOV_A, E

A ← (E)

1

5


FA44

FA45

<B 1> D3

<B 2> 01

K18

OUT_01

Видати g min на індикацію через Увив № 1

2

10


FA46

<B 1> 76

K19

HLT

Стоп

1

7

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Контрольна робота
124кб. | скачати


Схожі роботи:
Автоматизована система обробки структур даних
Обчислювальна система обробки даних в реальному часі 2
Обчислювальна система обробки даних в реальному часі
Мікропроцесорна система
Мікропроцесорна система та її функціонування
Мікропроцесорна система управління на базі інтерфейсів персонального комп`ютера
Система обробки аудіоінформації Підсистема фільтрації і обробки сигналу
Структури та алгоритми обробки даних
Методика обробки експериментальних даних
© Усі права захищені
написати до нас