Контрольне завдання, варіант № 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;
;
Завдання № 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