РефератыИнформатика, программированиеМиМикропроцессорные средства и системы

Микропроцессорные средства и системы

Контрольное задание, вариант № 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.


LXISP,3000h ; указание вершины стека


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


LXID,1000h ; загрузка счетчика в D,E


XRAA ; обнуление аккумулятора


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


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


MVIB,01h ; код пробела => в В


LOOP:


MOVA,M ; загрузить символ из ячейки М в аккумулятор


CMPB ; проверка на код пробела


JNZCOUNT ; если не совпадает, переход к COUNT, иначе - дальше


INXH ; адрес следующего символа


DCXD ; уменьшить счетчик


JZEXIT ; если счетчик = 0, на выход


JMPLOOP ; в начало цикла


COUNT:


PUSHH ; выгрузить содержимое HL в стек


LHLD 2001h ; загрузить HL содержимым счетчика количества символов


INXH ; увеличить счетчик на 1


SHLD 2001h ; сохранить счетчик количества символов в 2001h, 2002h


POPH ; восстановить в HL сохраненный адрес


RET ; возврат из подпрограммы


EXIT:


LHLD 2001h ; загрузить HL содержимым счетчика количества символов


END


Задача № 4


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


Z = lg(x+1)


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


lgx = 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 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


MOVC,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


MOVL,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


MOVC,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


MVIC,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
B4
00h-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), выбираем в качестве элементной базы выпускаемую фирмой ADVANCEDMICRODEVICES микросхему ПЛМ 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

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Микропроцессорные средства и системы

Слов:7017
Символов:86521
Размер:168.99 Кб.