Микропроцессорные средства и системы
Микропроцессорные средства и системы
Контрольное задание, вариант № 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= 41198 ;
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-й
байт
|
3-й
байт
|
Где
: S – знак числа ( 1-отрицательный,
0-положительный ), P0…P7 – 8-битный смещенный порядок, M1 … M15 – мантисса . Скрытый бит целой части
мантиссы в нормализованных числах содержит 1
1000h
|
X
|
1001h
|
1003h
|
1003h
|
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 ;
;
;нормализовать
и проверить антипереполнение
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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