Мікропроцесорні засоби та системи

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

скачати

Контрольне завдання, варіант № 7

Група Е-41-З, студент **********

Міністерство Освіти України

Кременчуцький Державний Політехнічний Інститут

Кременчук 1998

Перетворити числа з десяткової системи числення в двійкову і шістнадцяткову: 5; 38; 93; 175; 264.

Десяткова система Двійкова система Шістнадцяткова система
5 0 0 0 0 40 0 1 0 1 5
38 0 0 0 1 0 0 1 1 0 26
93 0 0 1 0 1 1 1 0 1 5D
175 0 1 0 1 0 1 1 1 1 AF
264 1 0 0 0 0 1 0 0 0 108

Завдання № 2

Перетворити числа, записані в прямому двійковому коді у десятковий та шістнадцятковий код: 0011; 1000010; 00011011000.

Прямий двійковий код Десятковий код Шістнадцятковий код
0 0 0 0 0 0 0 0 0 1 1 3 3
0 0 0 0 1 0 0 0 0 1 0 66 42
0 0 0 1 1 0 1 1 0 0 0 216 D8

Завдання № 3

Виконати такі арифметичні дії з двійковими числами, заданими у прямому коді: 0011 + 1000110; 10000001 - 1000110

+ 0 0 1 1 + 3 - 1 0 0 0 0 0 0 1 - 1 2 9
1 0 0 0 1 1 0 7 0 1 0 0 0 1 1 0 7 0
1 0 0 1 0 0 1 7 3 0 0 1 1 1 0 1 1 5 9

Завдання № 4

Виконати наступне арифметичну дію у 8-ми розрядної сітки (старший біт містить знак числа): 5 х 25

х 0 . 0 0 1 1 0 0 1 х 2 5
0 . 0 0 0 0 1 0 1 5
0 0 1 1 0 0 1
0 0 0 0 0 0 0
0 0 1 1 0 0 1
0 . 1 1 1 1 1 0 1 1 2 5

Контрольна робота № 2

Завдання № 1

Визначити розмір пам'яті в кілобайтах (байтах), якщо дана пам'ять адресується з адреси A0EDH по адресу EF34H. Одна комірка пам'яті займає 8 біт

Для вирішення визначимо спочатку кількість елементів пам'яті, адресованих одним розрядом при 16 - терічной системі адресації.

4-й розряд 3-й розряд 2-й розряд 1-й розряд H
4096 256 16 1 H

Таким чином, початковий і кінцевий адреси в десятковій системі будуть:

A0EDH = 4096 * 10 + 256 * 0 + 16 * 14 + 1 * 13 + 1 = 41 198;

EF34H = 4096 * 14 + 256 * 15 + 16 * 3 + 1 * 4 +1 = 61237.

61237 - +41198 = 20039.

20039 = 19 * 1024 + 583.

Отже, розмір пам'яті буде 20039 байт або 19 кБ. 583 байт

Завдання № 2

Символьна рядок розташований в ОЗУ починаючи з адреси 0006H. Відомо, що під кожен символ відводиться одна комірка пам'яті. Кількість символів у рядку = 731. Визначити адресу для звернення до останнього символу рядка.

Порядковий номер останньої комірки пам'яті в десятковій системі буде 731 + 6 = 737. Переведемо 738 з десяткової системи в двійкову:

73710 = 0010111000012

Тепер переводимо в 16 - терічную: 0010111000012 = 02E116

Відповідь: адресу останнього символу 02E1H

Завдання № 3

Скласти програму на Асемблері з коментарями:

Підрахувати кількість символів у рядку, розташованої в області починаючи з адреси 1000H і закінчуючи адресою 2000H без врахування пробілів, якщо відомо, що кожен символ займає одну комірку пам'яті і пробіл кодується як 01H.

Максимальне число символів у рядку 2000h-1000h = 1000h = 409610

Після виконання програми результат буде поміщений в HL.

LXI SP, 3000h; вказівку вершини стека

LXI H, 1000h; адресу 1-го елемента => в HL

LXI D, 1000h; завантаження лічильника в D, E

XRA A; обнулення акумулятора

STA 2001h; обнулення лічильника кількості символів

STA 2002h; обнулення лічильника кількості символів

MVI B, 01h; код пробілу => у В

LOOP:

MOV A, M; завантажити символ з осередку М в акумулятор

CMP B; перевірка на код пробілу

JNZ COUNT; якщо не збігається, перехід до COUNT, інакше - далі

INX H; адреса наступного символу

DCX D; зменшити лічильник

JZ EXIT; якщо лічильник = 0, на вихід

JMP LOOP; в початок циклу

COUNT:

PUSH H; вивантажити вміст HL в стек

LHLD 2001h; завантажити HL вмістом лічильника кількості символів

INX H; збільшити лічильник на 1

SHLD 2001h; зберегти лічильник кількості символів в 2001h, 2002h

POP H; відновити в HL збережений адресу

RET; повернення з підпрограми

EXIT:

LHLD 2001h; завантажити HL вмістом лічильника кількості символів

END

Завдання № 4

Скласти програму на Асемблері, спрямовану на вирішення математичної функції:

Z = lg (x +1)

Натуральний і десятковий логарифми одного і того ж числа (в даному випадку - вираження) пов'язані простим співвідношенням, що дозволяє переходити від одного до іншого:

lg x = Mlnx, де M = 1/ln10 = 0,434294481903252 ...

тобто, десятковий логарифм числа x = натуральному логарифму цього ж числа, помноженому на постійний множник M = 0,434294481903252 ..., званий модулем переходу від натуральних логарифмів до десятковим.

Відповідно до вищесказаного, lg (x +1) = 0,434294481903252 ... * ln (x +1)

Для обчислення ln (x +1) використовуємо розкладання в ряд:

ln (x +1) = x-x2 / 2 + x3/3-x4/4 + x5/5-x6/6 + x7/7-x8/8 + ...

У результаті алгоритм розв'язання зводиться до чотирьох арифметичних дій: +; -; *; /.

Перед виконанням арифметичних дій над числами з плаваючою комою домовимося перше число розміщувати в регістрах EHL, друге - в регістрах DBC; результат операції залишати в EHL.

Формат представлення чисел з плаваючою комою:

S P P P P P P P P M M M M M M M M M M M M M M M
7 6 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1-й байт 2-й байт Третій байт

Де: S - знак числа (1-негативний, 0-позитивний), P0 ... P7 - 8-бітний зміщений порядок, M1 ... M15 - мантиса. Прихований біт цілої частини мантиси в нормалізованих числах містить 1

1000h X
1001h
1003h
1003h X2
1004h
1005h
1006h X3
1007h
1008h
1009h X4
100Ah
100Bh
100Ch X5
100Dh
100Eh
100Fh X6
1010h
1011h
1012h X7
1013h
1014h
1020h Адреса комірки з поточним XN
1021h
1022h Поточний N

До початку обчислень число Х повинно бути розміщено в пам'яті за адресами 1000h-1002h.; Початок циклу обчислень

CALC1:

LXI H, 1003h; збереження адреси першого осередку

SHLD 1020h; для зберігання XN

CALL LOAD; Завантаження Х в EHL

; Цикл обчислення XN

CALC2: CALL LOAD1; Завантаження Х в DBC CALL MULF; Множення чисел з плаваючою точкою

MOV B, H; HL => BC

MOV C, L

LHLD 1020h; завантажити адресу комірки пам'яті для зберігання Хn

MOV M, E; Хn => у пам'ять

INX H

MOV M, B

INX H

MOV M, C

INX H

SHLD 1020h; запам'ятати адресу комірки пам'яті для наступного Хn

MOV H, B; BC => HL

MOV L, C

LDA 1021h; вміст клітинки => в акумулятор

CPI 15h; якщо отримані всі значення Хn,

JZ CALC3; перехід на CALC3

JMP CALC2; інакше-в початок

CALC3:

LXI H, 1022h;

MVI M, 01h; завантажити в клітинку 1022h дільник

LXI H, 1003h;

SHLD 1020h; вміст HL => у пам'ять

; Цикл обчислення XN/NCALC4: MOV B, H; HL => BC MOV C, L LHLD 1020h; завантажити адресу комірки пам'яті для зберігання N MOV E, M; Хn => у регістри INX H MOV B, M INX H MOV C , M SHLD 1020h; запам'ятати адресу комірки пам'яті для наступного Хn

MOV H, B; BC => HL

MOV L, C

PUSH H;

LXI H, 1022h; N => у клітинку З

MOV C, M

POP H;

MVI D, 00h

MVI B, 00h

CALL DIVF; Розподіл чисел з плаваючою точкою

MOV B, H; HL => BC

MOV C, L

LHLD 1020h; завантажити адресу комірки пам'яті для зберігання Хn / N

DCX H;

DCX H;

MOV M, E; Хn / N => у пам'ять

INX H

MOV M, B

INX H

MOV M, C

INX H

SHLD 1020h; запам'ятати адресу комірки пам'яті для наступного Хn / N

MOV H, B; BC => HL

MOV L, C

PUSH H;

LXI H, 1022h; N => у клітинку З

MOV C, M; інкремент N

INR C

MOV M, C

POP H;

LDA 1021h; вміст клітинки => в акумулятор

CPI 15h; якщо отримані всі значення Хn,

JZ CALC5; перехід на CALC5

JMP CALC4; інакше-в початок

CALC5:

LXI H, 1003h;

SHLD 1020h;

;

CALC6:

LHLD 1020h; завантажити адресу комірки пам'яті для зберігання N

MOV D, M; Хn / N => у регістри D, B, C.

INX H

MOV B, M

INX H

MOV C, M

INX H

SHLD 1020h; запам'ятати адресу комірки пам'яті для наступного Хn / N

;

; Обчислення ln (x +1)

CALC7: CALL LOAD; Завантаження Х в EHL CALL SUBF; Віднімання чисел з плаваючою точкою CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C. CALL ADDF; Додавання чисел з плаваючою точкою CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C. CALL SUBF; Віднімання чисел з плаваючою точкою

CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C.

CALL ADDF; Додавання чисел з плаваючою точкою

CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C.

CALL SUBF; Віднімання чисел з плаваючою точкою

CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C.

CALL ADDF; Додавання чисел з плаваючою точкою

CALL CALC8; завантаження Хn +1 / N +1 в регістри D, B, C.

MVI D, 00h; завантаження модуля пере-

MVI B, 2Bh; ходу в DBC

MVI C, 2Bh

CALL MULF; Множення ln (x +1) на модуль переходу до lg

JMP EXIT; на вихід

;; Завантаження Хn +1 / N +1 в регістри D, B, C.CALC8: PUSH H LHLD 1020h; завантажити адресу комірки пам'яті для зберігання N MOV D, M; Хn / N => у регістри D, B, C. INX H MOV B, M INX H MOV C, M INX H SHLD 1020h; запам'ятати адресу комірки пам'яті для наступного Хn / N

POP H;

RET;

;

EXIT:

HLT; Зупинка

;

;

;

; Завантаження Х в EHLLOAD: LXI H, 1000h; завантаження в HL адреси порядку Х MOV E, M; завантаження порядку Х в Е LHLD 1001h; завантаження мантиси в HL

RET;

; Завантаження Х в DBC

LOAD1:

PUSH H; вивантаження в стек HL

LXI H, 1000h; завантаження в HL адреси порядку Х

MOV D, M; завантаження порядку Х в D

INX H;

MOV B, M;

INX H;

MOV C, M; завантаження мантиси у BC

POP H; завантаження з стека HL

RET;

; Освіта додаткового коду числа в регістрі HL

comp:

mov A, H;

CMA;

MOV H, A;

MOV A, L;

CMA;

MOV L, A;

INX H;

RET;

; Перевірка знака і утворення додаткової коду

NEG:

MOV A, E;

ORA E;

JP NOTDK;

CALL COMP; Освіта додаткового коду числа в регістрі HL

NOTDK: RET;

; Зрушення вмісту HL вправо на 1 біт:

SHIFT:

MOV A, H;

RAR;

MOV H, A;

MOV A, L;

RAR;

MOV L, A;

RET;

; Обмін вмісту регістрів EHL і DBC

SWAP:

PUSH B;

XTHL;

POP B;

MOV A, D;

MOV D, E;

MOV E, A;

RET;

; Відновлення числа з плаваючою точкою

REC:

MOV A, H;

ADD A;

MOV A, E;

RAL;

MOV E, A;

MOV A, H;

ORI 80H;

MOV H, A;

RET;

; Перетворення числа в стандартний формат

PACK:

LDA SIGN;

ADD A;

MOV A, E;

MOV D, A;

RAR;

MOV E, A;

MOV A, H;

ANI 7FH;

MOV H, A;

MOV A, D;

RRC;

ANI 80H;

ORA H;

MOV H, A;

RET;

; Додавання чисел з плаваючою точкою

ADDF:

MOV A, D;

XRA E;

JP ADDF1;

MOV A, D;

XRI 80H;

MOV D, A;

JMP SUBF;

;

ADDF1:

MOV A, D;

ORA B;

ORA C;

JZ ADDF8;

MOV A, E;

ORA H;

ORA L;

JNZ ADDF2;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

JMP ADDF8;

;

ADDF2:

MOV A, D;

STA SIGN;

CALL REC;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

CALL REC; Відновлення числа з плаваючою точкою

;

MOV A, E;

SUB D;

JNC ADDF3;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

MOV A, E;

SUB D;

;

; У EHL більше число, в акумуляторі різниця потенціалів

ADDF3:

JZ ADDF6;

CPI 16;

JC ADDF4;

JMP ADDF7;

;

; Можна зрушувати мантиссу меншого числа

ADDF4:

MOV E, A;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

ADDF5:

ORA A;

CALL SHIFT; Зрушення вмісту HL вправо на 1 біт:

INR E;

DCR D;

JNZ ADDF5;

;

; У регістрі Е загальний порядок. Можна складати мантиси

ADDF6:

DAD B;

JNC ADDF7;

INR E;

JZ ADDF8;

ORA A;

CALL SHIFT; Зрушення вмісту HL вправо на 1 біт:

;

ADDF7:

CALL PACK; Перетворення числа в стандартний формат

;

ADDF8:

RET;

;

; Віднімання чисел з плаваючою точкою

SUBF:

MOV A, D;

XRA E;

JP SUBF1;

MOV A, D;

XRI 80H;

MOV D, A;

JMP ADDF; Додавання чисел з плаваючою точкою

SUBF1:

MOV A, D;

ORA B;

ORA C;

JZ SUBFA;

MOV A, E;

ORA H;

ORA L;

JNZ SUBF2;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

MOV A, E;

XRI 80H;

MOV E, A;

JMP SUBFA;

SUBF2:

MOV A, E;

STA SIGN;

CALL REC; Відновлення числа з плаваючою точкою

CALL SWAP; Обмін вмісту регістрів EHL і DBC

CALL REC; Відновлення числа з плаваючою точкою

MOV A, D;

SUB E;

JNZ SUBF3;

MOV A, B;

CMP H;

JNZ SUBF3;

MOV A, C;

CMP L;

JNZ SUBF3;

MVI E, 0;

LXI H, 0;

JMP SUBFA;

;

; Операнди не рівні, необхідно віднімати

SUBF3:

JNC SUBF4;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

LDA SIGN;

XRI 80H;

STA SIGN;

;

SUBF4:

MOV A, D;

SUB E;

JZ SUBF7;

CPI 16;

JC SUBF5;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

JMP SUBF;

;

; У регістрі А різниця порядків, в DBC більший операнд

SUBF5:

MOV E, A;

SUBF6:

ORA A;

CALL SHIFT; Зрушення вмісту HL вправо на 1 біт:

DCR E;

JNZ SUBF6;

;

; Відняти мантиси, результат у EHL

SUBF7:

MOV A, C;

SUB L;

MOV L, A;

MOV A, B;

SBB H;

MOV H, A;

MOV E, D;

;

; Нормалізувати і перевірити антіпереполненіе

SUBF8:

MOV A, H;

ORA H;

JM SUBF9;

DCR E;

MOV A, E;

CPI 0FFH;

STC;

JZ SUBFA;

DAD H;

JMP SUBF8;

;

SUBF9:

CALL PACK; Перетворення числа в стандартний формат

SUBFA:

RET;

;

; Множення чисел з плаваючою точкою

MULF:

MOV A, E;

ORA H;

ORA L;

JZ MULF8;

MOV A, D;

ORA B;

ORA C;

JNZ MULF1;

CALL SWAP; Обмін вмісту регістрів EHL і DBC

JMP MULF8;

;

; Операнди ненульові, можна множити

MULF1:

MOV A, D;

XRA E;

STA SIGN;

CALL REC; Відновлення числа з плаваючою точкою

CALL SWAP; Обмін вмісту регістрів EHL і DBC

CALL REC; Відновлення числа з плаваючою точкою

MOV A, D;

ADD E;

JC MULF2;

SUI 127;

JNC MULF3;

JMP MULF8;

;

MULF2:

ADI 129;

JNC MULF3;

JMP MULF8;

;

; В акумуляторі А зміщений порядок твори

MULF3:

MOV C, A;

MOV E, B;

MVI D, 0;

MOV A, H;

LXI H, 0;

XCHG;

DAD H;

XCHG;

;

; Початок циклу множення

MULF4:

ORA A;

RAR;

JNC MULF5;

DAD D;

;

MULF5:

JZ MULF6;

XCHG;

DAD H;

XHG;

JMP MULF4;

;

; Перевірити порушення нормалізації

MULF6:

JNC MULF7;

CALL SHIFT; Зрушення вмісту HL вправо на 1 біт:

INR C;

STC;

JZ MULF8;

;

MULF7:

MOV E, C;

CALL PACK; Перетворення числа в стандартний формат

;

MULF8:

RET;

;

; Розподіл чисел з плаваючою точкою

DIVF:

MOV A, E;

ORA H;

ORA L;

JZ DIVF7;

MOV A, D;

ORA B;

ORA C;

STC;

JZ DIVF7;

; Операнди не дорівнюють нулю

MOV A, D;

XRA E;

STA SIGN;

CALL REC; Відновлення числа з плаваючою точкою

CALL SWAP; Обмін вмісту регістрів EHL і DBC

CALL REC; Відновлення числа з плаваючою точкою

CALL SWAP; Обмін вмісту регістрів EHL і DBC

MOV A, E;

SUB D;

JNC DIVF1;

ADI 127;

CMC;

JC DIVF7; возікло антіпереполненіе

JMP DIVF2; перейти на поділ мантис

;

DIVF1:

ADI 127; додати зсув

JC DIVF7; виникло антіпереполненіе

;

; Можна починати поділ мантис

DIVF2:

STA EXP;

XCHG;

LXI H, 0;

MVI A, 16; ініціалізувати лічильник

PUSH PSW;

JMP DIVF4; увійти в цикл розподілу

;

DIVF3:

PUSH PSW;

DAD H; зрушити вліво

XCHG; приватне і залишок

DAD H;

XCHG;

;

DIVF4:

PUSH D; зберегти остаок в стеку

MOV A, E; відняти дільник із залишку

SUB C;

MOV E, A;

MOV A, D;

SBB B;

MOV D, A;

JC DIVF5;

POP PSW; видалити залишок з стека

INR L;

PUSH D;

;

DIVF5:

POP D; витягти попередній залишок

POP PSW; витягти лічильник

DCR A; декремент лічильника

JNZ DIVF3; повторити цикл розподілу

; Поділ мантис закінчено

LDA EXP;

MOV E, A;

; Нормалізувати приватне

MOV A, H;

ORA A;

JM DIVF6;

DAD H;

DCR E;

CPI 0FFH; перевірити антіпереполненіе

STC;

JZ DIVF7; виникло антіпереполненіе

;

DIVF6:

CALL PACK; Перетворення числа в стандартний формат

DIVF7:

RET;

;

Контрольна робота № 3

Завдання № 1

Побудувати модель розподілу адресного простору з зазначенням діапазонів адрес в 16-й системі числення. Як дешифратора адрес використовується стандартний дешифратор, до інформаційних входів якого підключені лінії А15, А12, А9 16-розрядної шини адреси.

Виходи дешіф-ратора Розряди адреси Діапазони адрес
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Y0 0 X X 0 X X 0 X X X X X X X X X

0000h-01FFh, 0400h-05FFh, 0800h-0DFFh

2000h-21FFh, 2400h-25FFh, 2800h-2DFFh

4000h-41FFh, 4400h-45FFh, 4800h-4DFFh

6000h-61FFh, 6400h-65FFh, 6800h-6DFFh

Y1 0 X X 0 X X 1 X X X X X X X X X

0200h-03FFh, 0600h-07FFh, 0A00h-0FFFh

2200h-23FFh, 2600h-27FFh, 2A00h-2FFFh

4200h-43FFh, 4600h-47FFh, 4A00h-4FFFh

6200h-63FFh, 6600h-67FFh, 6A00h-6FFFh

Y2 0 X X 1 X X 0 X X X X X X X X X

1000h-11FFh, 1400h-15FFh, 1800h-1DFFh

3000h-31FFh, 3400h-35FFh, 3800h-3DFFh

5000h-51FFh, 5400h-55FFh, 5800h-5DFFh

7000h-71FFh, 7400h-75FFh, 7800h-7DFFh

Y3 0 X X 1 X X 1 X X X X X X X X X

1200h-13FFh, 1600h-17FFh, 1A00h-1FFFh

3200h-33FFh, 3600h-37FFh, 3A00h-3FFFh

5200h-53FFh, 5600h-57FFh, 5A00h-5FFFh

7200h-73FFh, 7600h-77FFh, 7A00h-7FFFh

Y4 1 X X 0 X X 0 X X X X X X X X X

8000h-81FFh, 8400h-85FFh, 8800h-8DFFh

A000h-A1FFh, A400h-A5FFh, A800h-ADFFh

C000h-C1FFh, C400h-C5FFh, C800h-CDFFh

E000h-E1FFh, E400h-E5FFh, E800h-EDFFh

Y5 1 X X 0 X X 1 X X X X X X X X X

8200h-83FFh, 8600h-87FFh, 8A00h-8FFFh

A200h-A3FFh, A600h-A7FFh, AA00h-AFFFh

C200h-C3FFh, C600h-C7FFh, CA00h-CFFFh

E200h-E3FFh, E600h-E7FFh, EA00h-EFFFh

Y6 1 X X 1 X X 0 X X X X X X X X X

9000h-91FFh, 9400h-95FFh, 9800h-9DFFh

B000h-B1FFh, B400h-B5FFh, B800h-BDFFh

D000h-D1FFh, D400h-D5FFh, D800h-DDFFh

F000h-F1FFh, F400h-F5FFh, F800h-FDFFh

Y7 1 X X 1 X X 1 X X X X X X X X X

9200h-93FFh, 9600h-97FFh, 9A00h-9FFFh

B200h-B3FFh, B600h-B7FFh, BA00h-BFFFh

D200h-D3FFh, D600h-D7FFh, DA00h-DFFFh

F200h-F3FFh, F600h-F7FFh, FA00h-FFFFh

У результаті адресний простір розміром в 64 Кбайт розбито на діапазони для 8 пристроїв. У кожному діапазоні виділено 8 ділянок по 512 байт і 4 ділянки по 1536 байт.

Завдання № 2

Потрібно виділити зони адресного простору для розміщення в них адрес для пристроїв, зазначених у таблиці. Як адресного дешифратора використовується ПЗУ. Побудувати схеми виділення відповідних блоків адрес і таблицю діапазонів з підрахунків.

Найменування пристрої Діапазон адрес Ємність (Кбайт)
ПЗУ1 0000h-03FFh 1
ОЗУ1 0400h-0BFFh 2
УВВ1 2000h-2FFFh 4
ПЗУ2 3000h-4FFFh 8
ОЗУ2 5000h-6FFFh 8
УВВ2 8000h-FFFFh 32

Так як найменший блок має розмір 1К комірок, то роздільна здатність дешифратора повинна забезпечувати розподіл адресного простору з точністю до зон розміром 1К осередків. Аналізуючи шестеро старших розрядів адреси, отримуємо необхідну точність, оскільки вони ділять весь адресний простір об'ємом 64К осередків на 26 = 64 частини по 1К комірок, що й потрібно.

Вибираємо за основу ПЗУ з 10 адресними входами 2716 (К573РФ2), що має структуру 2К * 8 біт. Виходи 00 - 05 цього ПЗУ підключаємо до інверсним входам вибору кристала відповідних мікросхем.

Розробляємо прошивку ПЗУ.

Пристрій Діапазон адрес Адресні входи Виходи
A5 A4 A3 A2 A1 A0 0 1 2 3 4 5
ROM 1 0000h-03FFh 0 0 0 0 0 0 0 1 1 1 1 1
RAM 1 0400h-07FFh 0 0 0 0 0 1 1 0 1 1 1 1
0800h-0BFFh 0 0 0 0 1 0 1 0 1 1 1 1
- 0C00h-0FFFh 0 0 0 0 1 1 1 1 1 1 1 1
1000h-13FFh 0 0 0 1 0 0 1 1 1 1 1 1
1400h-17FFh 0 0 0 1 0 1 1 1 1 1 1 1
1800h-1BFFh 0 0 0 1 1 0 1 1 1 1 1 1
1C00h-1FFFh 0 0 0 1 1 1 1 1 1 1 1 1
IN-OUT 1 2000h-23FFh 0 0 1 0 0 0 1 1 0 1 1 1
2400h-27FFh 0 0 1 0 0 1 1 1 0 1 1 1
2800h-2BFFh 0 0 1 0 1 0 1 1 0 1 1 1
2C00h-2FFFh 0 0 1 0 1 1 1 1 1 1 1 1
ROM 2 3000h-33FFh 0 0 1 1 0 0 1 1 1 1 1 1
3400h-37FFh 0 0 1 1 0 1 1 1 1 1 1 1
3800h-3BFFh 0 0 1 1 1 0 1 1 1 1 1 1
3C00h-3FFFh 0 0 1 1 1 1 1 1 1 1 1 1
4000h-43FFh 0 1 0 0 0 0 1 1 1 1 1 1
4400h-47FFh 0 1 0 0 0 1 1 1 1 1 1 1
4800h-4BFFh 0 1 0 0 1 0 1 1 1 1 1 1
4C00h-4FFFh 0 1 0 0 1 1 1 1 1 1 1 1
RAM 2 5000h-53FFh 0 1 0 1 0 0 1 1 1 1 1 1
5400h-57FFh 0 1 0 1 0 1 1 1 1 1 1 1
5800h-5BFFh 0 1 0 1 1 0 1 1 1 1 1 1
5C00h-5FFFh 0 1 0 1 1 1 1 1 1 1 1 1
6000h-63FFh 0 1 1 0 0 0 1 1 1 1 1 1
6400h-67FFh 0 1 1 0 0 1 1 1 1 1 1 1
6800h-6BFFh 0 1 1 0 1 0 1 1 1 1 1 1
6C00h-6FFFh 0 1 1 0 1 1 1 1 1 1 1 1
- 7000h-73FFh 0 1 1 1 0 0 1 1 1 1 1 1
7400h-77FFh 0 1 1 1 0 1 1 1 1 1 1 1
7800h-7BFFh 0 1 1 1 1 0 1 1 1 1 1 1
7C00h-7FFFh 0 1 1 1 1 1 1 1 1 1 1 1
Пристрій Діапазон адрес Адресні входи Виходи
A5 A4 A3 A2 A1 A0 0 1 2 3 4 5
IN-OUT 2 8000h-83FFh 1 0 0 0 0 0 1 1 1 1 1 1
8400h-87FFh 1 0 0 0 0 1 1 1 1 1 1 1
8800h-8BFFh 1 0 0 0 1 0 1 1 1 1 1 1
8C00h-8FFFh 1 0 0 0 1 1 1 1 1 1 1 1
9000h-93FFh 1 0 0 1 0 0 1 1 1 1 1 1
9400h-97FFh 1 0 0 1 0 1 1 1 1 1 1 1
9800h-9BFFh 1 0 0 1 1 0 1 1 1 1 1 1
9C00h-9FFFh 1 0 0 1 1 1 1 1 1 1 1 1
A000h-A3FFh 1 0 1 0 0 0 1 1 1 1 1 1
A400h-A7FFh 1 0 1 0 0 1 1 1 1 1 1 1
A800h-ABFFh 1 0 1 0 1 0 1 1 1 1 1 1
AC00h-AFFFh 1 0 1 0 1 1 1 1 1 1 1 1
B000h-B3FFh 1 0 1 1 0 0 1 1 1 1 1 1
B400h-B7FFh 1 0 1 1 0 1 1 1 1 1 1 1
B800h-BBFFh 1 0 1 1 1 0 1 1 1 1 1 1
BC00h-BFFFh 1 0 1 1 1 1 1 1 1 1 1 1
C000h-C3FFh 1 1 0 0 0 0 1 1 1 1 1 1
C400h-C7FFh 1 1 0 0 0 1 1 1 1 1 1 1
C800h-CBFFh 1 1 0 0 1 0 1 1 1 1 1 1
CC00h-CFFFh 1 1 0 0 1 1 1 1 1 1 1 1
D000h-D3FFh 1 1 0 1 0 0 1 1 1 1 1 1
D400h-D7FFh 1 1 0 1 0 1 1 1 1 1 1 1
D800h-DBFFh 1 1 0 1 1 0 1 1 1 1 1 1
DC00h-DFFFh 1 1 0 1 1 1 1 1 1 1 1 1
E000h-E3FFh 1 1 1 0 0 0 1 1 1 1 1 1
E400h-E7FFh 1 1 1 0 0 1 1 1 1 1 1 1
E800h-EBFFh 1 1 1 0 1 0 1 1 1 1 1 1
EC00h-EFFFh 1 1 1 0 1 1 1 1 1 1 1 1
F000h-F3FFh 1 1 1 1 0 0 1 1 1 1 1 1
F400h-F7FFh 1 1 1 1 0 1 1 1 1 1 1 1
F800h-FBFFh 1 1 1 1 1 0 1 1 1 1 1 1
FC00h-FFFFh 1 1 1 1 1 1 1 1 1 1 1 1

Схема дешифратора:

Мікропроцесорні засоби та системи

Карта пам'яті:

3FFh 7FFh BFFh FFFh
0000h ROM 1 RAM 1 - 0FFFh
1000h - 1FFFh
2000h IN-OUT 1 2FFFh
3000h ROM 2 3FFFh
4000h 4FFFh
5000h RAM 2 5FFFh
6000h 6FFFh
7000h - 7FFFh
8000h IN-OUT 2 8FFFh
9000h 9FFFh
A000h AFFFh
B000h BFFFh
C000h CFFFh
D000h DFFFh
E000h EFFFh
F000h FFFFh
000h 400h 800h C00h

Завдання № 3

Розділити адресний простір 64 кілобайт на 18 рівних частин. Як дешифратора адреси використовується ПЛМ. Розбиття адресного простору показати у вигляді схеми і таблиці.

Розмір однієї частини 65536 / 18 = 3640 байт. Оскільки 3640 * 18 = 65520, останні 16 осередків не будуть використовуватися.

Зробимо розбиття 3640 байт на ділянки 2N:

3640 = 2048 + 1024 + 512 + 32 + 16 + 8

У результаті отримаємо 6 областей пам'яті по 18 ділянок у кожній:

0000h-8FFFh (ділянки розміром 2048)

9000h-D7FFh (ділянки розміром 1024)

D800h-FBFFh (ділянки розміром 512)

FC00h-FE3Fh (ділянки розміром 32)

FE40h-FF5Fh (ділянки розміром 16)

FF60h-FFEFh (ділянки розміром 8)

Прошивка ПЛМ 1

Область Діапазон адрес Розряди адреси

1

5

1

4

1

3

1

2

1

1

1

0

9 8 7 6 5 4 3 2 1 0
1 0000h-07FFh 0 0 0 0 0 X X X X X X X X X X X
9000h-93FFh 1 0 0 1 0 0 X X X X X X X X X X
D800h-D9FFh 1 1 0 1 1 0 0 X X X X X X X X X
FC00h-FC1Fh 1 1 1 1 1 1 0 0 0 0 0 X X X X X
FE40h-FE4Fh 1 1 1 1 1 1 1 0 0 1 0 0 X X X X
FF60h-FF67h 1 1 1 1 1 1 1 1 0 1 1 0 0 X X X
2 0800h-0FFFh 0 0 0 0 1 X X X X X X X X X X X
9400h-97FFh 1 0 0 1 0 1 X X X X X X X X X X
DA00h-DBFFh 1 1 0 1 1 0 1 X X X X X X X X X
FC20h-FC3Fh 1 1 1 1 1 1 0 0 0 0 1 X X X X X
FE50h-FE5Fh 1 1 1 1 1 1 1 0 0 1 0 0 X X X X
FF68h-FF6Fh 1 1 1 1 1 1 1 1 0 1 1 0 1 X X X
3 1000h-17FFh 0 0 0 1 0 X X X X X X X X X X X
9800h-9BFFh 1 0 0 1 1 0 X X X X X X X X X X
DC00h-DDFFh 1 1 0 1 1 1 0 X X X X X X X X X
FC40h-FC5Fh 1 1 1 1 1 1 0 0 0 1 0 X X X X X
FE60h-FE6Fh 1 1 1 1 1 1 1 0 0 1 1 0 X X X X
FF70h-FF77h 1 1 1 1 1 1 1 1 0 1 1 1 0 X X X
4 1800h-1FFFh 0 0 0 1 1 X X X X X X X X X X X
9C00h-9FFFh 1 0 0 1 1 1 X X X X X X X X X X
DE00h-DFFFh 1 1 0 1 1 1 1 X X X X X X X X X
FC60h-FC7Fh 1 1 1 1 1 1 0 0 0 1 1 X X X X X
FE70h-FE7Fh 1 1 1 1 1 1 1 0 0 1 1 1 X X X X
FF78h-FF7Fh 1 1 1 1 1 1 1 1 0 1 1 0 0 X X X
5 2000h-27FFh 0 0 1 0 0 X X X X X X X X X X X
A000h-A3FFh 1 0 1 0 0 0 X X X X X X X X X X
E000h-E1FFh 1 1 1 0 0 1 0 X X X X X X X X X
FC80h-FC9Fh 1 1 1 1 1 1 0 0 1 0 0 X X X X X
FE80h-FE8Fh 1 1 1 1 1 1 1 0 1 0 0 0 X X X X
FF80h-FF87h 1 1 1 1 1 1 1 1 1 0 0 0 0 X X X
6 2800h-2FFFh 0 0 1 0 1 X X X X X X X X X X X
A400h-A7FFh 1 0 1 0 0 1 X X X X X X X X X X
E200h-E3FFh 1 1 1 0 0 0 1 X X X X X X X X X
FCA0h-FCBFh 1 1 1 1 1 1 0 0 1 0 1 X X X X X
FE90h-FE9Fh 1 1 1 1 1 1 1 0 1 0 0 1 X X X X
FF88h-FF8Fh 1 1 1 1 1 1 1 1 1 0 0 0 1 X X X
7 3000h-37FFh 0 0 1 1 0 X X X X X X X X X X X
A800h-ABFFh 1 0 1 0 1 0 X X X X X X X X X X
E400h-E5FFh 1 1 1 0 0 1 0 X X X X X X X X X
FCC0h-FCDFh 1 1 1 1 1 1 0 0 1 1 0 X X X X X
FEA0h-FEAFh 1 1 1 1 1 1 1 0 1 0 1 0 X X X X
FF90h-FF97h 1 1 1 1 1 1 1 1 1 0 0 1 X X X X
8 3800h-3FFFh 0 0 1 1 1 X X X X X X X X X X X
AC00h-AFFFh 1 0 1 0 1 1 X X X X X X X X X X
E600h-E7FFh 1 1 1 0 0 1 1 X X X X X X X X X
FCEOh-FCFFh 1 1 1 1 1 1 0 0 1 1 1 X X X X X
FEB0h-FEBFh 1 1 1 1 1 1 1 0 1 0 1 1 X X X X
FF98h-FF9Fh 1 1 1 1 1 1 1 1 1 0 0 1 X X X X
9 4000h-47FFh 1 0 1 1 0 0 X X X X X X X X X X
B000h-B3FFh 1 0 1 1 0 0 X X X X X X X X X X
E800h-E9FFh 1 1 1 0 1 0 0 X X X X X X X X X
FD00h-FD1Fh 1 1 1 1 1 1 0 1 0 0 0 X X X X X
FEC0h-FECFh 1 1 1 1 1 1 1 0 1 1 0 0 X X X X
FFA0h-FFA7h 1 1 1 1 1 1 1 1 1 0 1 0 X X X X

Прошивка ПЛМ 2

Область Діапазон адрес Розряди адреси

1

5

1

4

1

3

1

2

1

1

1

0

9 8 7 6 5 4 3 2 1 0
10 4800h-4FFFh 0 1 0 0 1 X X X X X X X X X X X
B400h-B7FFh 1 0 1 1 0 1 X X X X X X X X X X
EA00h-EBFFh 1 1 1 0 1 0 1 X X X X X X X X X
FD20h-FD3Fh 1 1 1 1 1 1 0 1 0 0 1 X X X X X
FED0h-FEDFh 1 1 1 1 1 1 1 0 1 1 0 1 X X X X
FFA8h-FFAFh 1 1 1 1 1 1 1 1 1 0 1 0 1 X X X
11 5000h-57FFh 0 1 0 1 1 X X X X X X X X X X X
B800h-BBFFh 1 0 1 1 1 0 X X X X X X X X X X
EC00h-EDFFh 1 1 1 0 1 1 0 X X X X X X X X X
FD40h-FD5Fh 1 1 1 1 1 1 0 1 0 1 0 X X X X X
FEE0h-FEEFh 1 1 1 1 1 1 1 0 1 1 1 0 X X X X
FFB0h-FFB7h 1 1 1 1 1 1 1 1 1 0 1 1 0 X X X
12 5800h-5FFFh 0 1 0 1 0 X X X X X X X X X X X
BC00h-BFFFh 1 0 1 1 1 1 X X X X X X X X X X
EE00h-EFFFh 1 1 1 0 1 1 1 X X X X X X X X X
FD60h-FD7Fh 1 1 1 1 1 1 0 1 0 1 1 X X X X X
FEF0h-FEFFh 1 1 1 1 1 1 1 0 1 1 1 1 X X X X
FFB8h-FFBFh 1 1 1 1 1 1 1 1 1 0 1 1 1 X X X
13 6000h-67FFh 0 1 1 0 1 X X X X X X X X X X X
C000h-C3FFh 1 1 0 0 0 0 X X X X X X X X X X
F000h-F1FFh 1 1 1 1 0 0 0 X X X X X X X X X
FD80h-FD9Fh 1 1 1 1 1 1 0 1 1 0 0 X X X X X
FF00h-FFOFh 1 1 1 1 1 1 1 1 0 0 0 0 X X X X
FFC0h-FFC7h 1 1 1 1 1 1 1 1 1 1 0 0 0 X X X
14 6800h-6FFFh 0 1 1 0 0 X X X X X X X X X X X
C400h-C7FFh 1 1 0 0 0 1 X X X X X X X X X X
F200h-F3FFh 1 1 1 1 0 0 1 X X X X X X X X X
FDA0h-FDBFh 1 1 1 1 1 1 0 1 1 0 1 X X X X X
FF10h-FF1Fh 1 1 1 1 1 1 1 1 0 0 0 1 X X X X
FFC8h-FFCFh 1 1 1 1 1 1 1 1 1 1 0 0 1 X X X
15 7000h-77FFh 0 1 1 1 1 X X X X X X X X X X X
C800h-CBFFh 1 1 0 0 1 0 X X X X X X X X X X
F400h-F5FFh 1 1 1 1 0 1 0 X X X X X X X X X
FDC0h-FDDFh 1 1 1 1 1 1 0 1 1 1 0 X X X X X
FF20h-FF2Fh 1 1 1 1 1 1 1 1 0 0 1 0 X X X X
FFD0h-FFD7h 1 1 1 1 1 1 1 1 1 1 0 1 0 X X X
16 7800h-7FFFh 0 1 1 1 0 X X X X X X X X X X X
CC00h-CFFFh 1 1 0 0 1 1 X X X X X X X X X X
F600h-F7FFh 1 1 1 1 0 1 1 X X X X X X X X X
FDE0h-FDFFh 1 1 1 1 1 1 0 1 1 1 1 X X X X X
FF30h-FF3Fh 1 1 1 1 1 1 1 1 0 0 1 1 X X X X
FFD8h-FFDFh 1 1 1 1 1 1 1 1 1 1 0 1 X X X X
17 8000h-87FFh 1 0 0 0 1 X X X X X X X X X X X
D000h-D3FFh 1 1 0 1 0 0 X X X X X X X X X X
F800h-F9FFh 1 1 1 1 1 0 0 X X X X X X X X X
FE00h-FE1Fh 1 1 1 1 1 1 1 0 0 0 0 X X X X X
FF40h-FF4Fh 1 1 1 1 1 1 1 1 0 1 0 0 X X X X
FFE0h-FFE7h 1 1 1 1 1 1 1 1 1 1 1 0 X X X X
18 8800h-8FFFh 1 0 0 0 0 X X X X X X X X X X X
D400h-D7FFh 1 1 0 1 0 1 X X X X X X X X X X
FA00h-EBFFh 1 1 1 1 1 0 1 X X X X X X X X X
FE20h-FE3Fh 1 1 1 1 1 1 1 0 0 0 1 X X X X X
FF50h-FF5Fh 1 1 1 1 1 1 1 1 0 1 0 1 X X X X
FFE8h-FFEFh 1 1 1 1 1 1 1 1 1 1 1 0 X X X X

У результаті отримана таблиця прошивки ПЛМ для поділу адресного простору 64 кБ на 18 несплошних рівних частин.

Виходячи з необхідної кількості творів (18 * 6 = 108) і кількості вихідних функцій (18), вибираємо в якості елементної бази випускається фірмою ADVANCED MICRO DEVICES мікросхему ПЛМ PLS30S16. Ця мікросхема дозволяє за рахунок мультиплексування чотирьох адресних входів з виходами мати від 12 до 17 входів і від 8 до 12 виходів при кількості творів до 64.

Для вирішення поставленого завдання беремо дві ПЛМ, запараллеленние входи яких підключені до шини адреси, а виходи - до входів вибору кристала відповідних мікросхем.

Технічні дані на ПЛМ PLS30S16 фірми AMD:

- IC MASTER / Windows -

(Title): PLD | BIP | | OTPRC

Section: PROGRAMMABLE LOGIC DEVICES

CAT0: PLD

Category: Bipolar

CAT1: BIP

MinorA: One-Time

Programmable ~ Registered / Combinatorial Outputs

CAT3: OTPRC

MDD Code: AMD

Manufacturer's Name: ADVANCED MICRO DEVICES

Device Number: PLS30S16-40

Disc: * 93

Date: 10/26/92

Oper: BAC

Transcode: E

RBASE: 30S16

MBase: PLS30S16

Data Book: DATASHEET

Propagation Delay (: 40

Maximum Clock (MHz): 22.2

Product Terms: 64

Flip-Flops: 12

Dedicated Inputs :12-17

Bidirectional I / Os :8-12

Standby Current (mA: 225

Active Current (mA): 225

Pins: 28

Has Image: N


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

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

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


Схожі роботи:
Мікропроцесорні системи
Мікропроцесорні системи автоблокування
Комп ютерні та мікропроцесорні системи
Мікропроцесорні системи управління інформацією
Мікропроцесорні системи керування автотранспортного засобу та їх структура
Вбудовані мікропроцесорні системи на основі однокристальних мікро ЕОМ
Мікропроцесорні пристрої
Системи і засоби формування звітів
Програмні засоби Системи безпеки інформації
© Усі права захищені
написати до нас