Завдання
Знайти найменший звіт, зареєстрований в «електронному журналі» під час передостаннього сеансу зняття показань датчиків.
Вихідний дані:
Кількість датчиків 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