Контрольное задание, вариант № 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 | X2 | 1004h | 1005h | 1006h | X3 | 1007h | 1008h | 1009h | X4 | 100Ah | 100Bh | 100Ch | X5 | 100Dh | 100Eh | 100Fh | X6 | 1010h | 1011h | 1012h | X7 | 1013h | 1014h | 1020h | Адрес ячейки с текущим XN | 1021h | 1022h | Текущий N | До начала вычислений число Х должно быть размещено в памяти по адресам 1000h-1002h.;начало цикла вычислений CALC1: LXI H,1003h ; сохранение адреса первой ячейки SHLD 1020h ; для хранения XN CALL LOAD ; Загрузка Х в EHL ;цикл вычисления XN CALC2: CALL LOAD1 ;Загрузка Х в DBC CALL MULF ; Умножение чисел с плавающей точкой MOV B,H ; HL=>BC MOV C,L LHLD 1020h ;загрузить адрес ячейки памяти для хранения Хn MOV M,E ;Хn => в память INX H MOV M,B INX H MOV M,C INX H SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn MOV H,B ;BC=>HL MOV L,C LDA 1021h ;содержимое ячейки => в аккумулятор CPI 15h ;если получены все значения Хn, JZ CALC3 ;переход на CALC3 JMP CALC2 ;иначе- в начало CALC3: LXI H,1022h ; MVI M,01h ;загрузить в ячейку 1022h делитель LXI H,1003h ; SHLD 1020h ;содержимое HL => в память ;цикл вычисления XN/NCALC4: MOV B,H ; HL=>BC MOV C,L LHLD 1020h ;загрузить адрес ячейки памяти для хранения N MOV E,M ;Хn => в регистры INX H MOV B,M INX H MOV C,M SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn MOV H,B ;BC=>HL MOV L,C PUSH H ; LXI H,1022h ;N => в ячейку С MOV C,M POP H ; MVI D,00h MVI B,00h CALL DIVF ; Деление чисел с плавающей точкой MOV B,H ; HL=>BC MOV C,L LHLD 1020h ;загрузить адрес ячейки памяти для хранения Хn/N DCX H ; DCX H ; MOV M,E ;Хn/N => в память INX H MOV M,B INX H MOV M,C INX H SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N MOV H,B ;BC=>HL MOV L,C PUSH H ; LXI H,1022h ;N => в ячейку С MOV C,M ;инкремент N INR C MOV M,C POP H ; LDA 1021h ;содержимое ячейки => в аккумулятор CPI 15h ;если получены все значения Хn, JZ CALC5 ;переход на CALC5 JMP CALC4 ;иначе- в начало CALC5: LXI H,1003h ; SHLD 1020h ; ; CALC6: LHLD 1020h ;загрузить адрес ячейки памяти для хранения N MOV D,M ;Хn/N => в регистры D,B,C. INX H MOV B,M INX H MOV C,M INX H SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N ; ;вычисление ln(x+1) CALC7: CALL LOAD ; Загрузка Х в EHL CALL SUBF ; Вычитание чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. CALL ADDF ; Сложение чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. CALL SUBF ; Вычитание чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. CALL ADDF ; Сложение чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. CALL SUBF ; Вычитание чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. CALL ADDF ; Сложение чисел с плавающей точкой CALL CALC8 ; загрузка Хn+1/N+1 в регистры D,B,C. MVI D,00h ; загрузка модуля пере- MVI B,2Bh ; хода в DBC MVI C,2Bh CALL MULF ; Умножение ln(x+1) на модуль перехода к lg JMP EXIT ; на выход ;;загрузка Хn+1/N+1 в регистры D,B,C.CALC8: PUSH H LHLD 1020h ;загрузить адрес ячейки памяти для хранения N MOV D,M ;Хn/N => в регистры D,B,C. INX H MOV B,M INX H MOV C,M INX H SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn/N POP H ; RET ; ; EXIT: HLT ; Останов ; ; ; ;Загрузка Х в EHLLOAD: LXI H,1000h ;загрузка в HL адреса порядка Х MOV E,M ;загрузка порядка Х в Е LHLD 1001h ;загрузка мантиссы в HL RET ; ;Загрузка Х в DBC LOAD1: PUSH H ;выгрузка в стек HL LXI H,1000h ;загрузка в HL адреса порядка Х MOV D,M ;загрузка порядка Х в D INX H ; MOV B,M ; INX H ; MOV C,M ;загрузка мантиссы в BC POP H ;загрузка из стека HL RET ; ;Образование дополнительного кода числа в регистре HL comp: mov A,H ; CMA ; MOV H,A ; MOV A,L ; CMA ; MOV L,A ; INX H ; RET ; ;Проверка знака и образование дополнительного кода NEG: MOV A,E ; ORA E ; JP NOTDK ; CALL COMP ; Образование дополнительного кода числа в регистре HL NOTDK: RET ; ;Сдвиг содержимого HL вправо на 1 бит: SHIFT: MOV A,H ; RAR ; MOV H,A ; MOV A,L ; RAR ; MOV L,A ; RET ; ;Обмен содержимого регистров EHL и DBC SWAP: PUSH B ; XTHL ; POP B ; MOV A,D ; MOV D,E ; MOV E,A ; RET ; ;Восстановление числа с плавающей точкой REC: MOV A,H ; ADD A ; MOV A,E ; RAL ; MOV E,A ; MOV A,H ; ORI 80H ; MOV H,A ; RET ; ;Преобразование числа в стандартный формат PACK: LDA SIGN ; ADD A ; MOV A,E ; MOV D,A ; RAR ; MOV E,A ; MOV A,H ; ANI 7FH ; MOV H,A ; MOV A,D ; RRC ; ANI 80H ; ORA H ; MOV H,A ; RET ; ;Сложение чисел с плавающей точкой ADDF: MOV A,D ; XRA E ; JP ADDF1 ; MOV A,D ; XRI 80H ; MOV D,A ; JMP SUBF ; ; ADDF1: MOV A,D ; ORA B ; ORA C ; JZ ADDF8 ; MOV A,E ; ORA H ; ORA L ; JNZ ADDF2 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC JMP ADDF8 ; ; ADDF2: MOV A,D ; STA SIGN ; CALL REC ; CALL SWAP ; Обмен содержимого регистров EHL и DBC CALL REC ; Восстановление числа с плавающей точкой ; MOV A,E ; SUB D ; JNC ADDF3 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC MOV A,E ; SUB D ; ; ; В EHL большее число, в аккумуляторе разность потенциалов ADDF3: JZ ADDF6 ; CPI 16 ; JC ADDF4 ; JMP ADDF7 ; ; ;Можно сдвигать мантиссу меньшего числа ADDF4: MOV E,A ; CALL SWAP ; Обмен содержимого регистров EHL и DBC ADDF5: ORA A ; CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит: INR E ; DCR D ; JNZ ADDF5 ; ; ;В регистре Е общий порядок. Можно складывать мантиссы ADDF6: DAD B ; JNC ADDF7 ; INR E ; JZ ADDF8 ; ORA A ; CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит: ; ADDF7: CALL PACK ; Преобразование числа в стандартный формат ; ADDF8: RET ; ; ;Вычитание чисел с плавающей точкой SUBF: MOV A,D ; XRA E ; JP SUBF1 ; MOV A,D ; XRI 80H ; MOV D,A ; JMP ADDF ; Сложение чисел с плавающей точкой SUBF1: MOV A,D ; ORA B ; ORA C ; JZ SUBFA ; MOV A,E ; ORA H ; ORA L ; JNZ SUBF2 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC MOV A,E ; XRI 80H ; MOV E,A ; JMP SUBFA ; SUBF2: MOV A,E ; STA SIGN ; CALL REC ; Восстановление числа с плавающей точкой CALL SWAP ; Обмен содержимого регистров EHL и DBC CALL REC ; Восстановление числа с плавающей точкой MOV A,D ; SUB E ; JNZ SUBF3 ; MOV A,B ; CMP H ; JNZ SUBF3 ; MOV A,C ; CMP L ; JNZ SUBF3 ; MVI E,0 ; LXI H,0 ; JMP SUBFA ; ; ;операнды не равны, необходимо вычитать SUBF3: JNC SUBF4 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC LDA SIGN ; XRI 80H ; STA SIGN ; ; SUBF4: MOV A,D ; SUB E ; JZ SUBF7 ; CPI 16 ; JC SUBF5 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC JMP SUBF ; ; ;В регистре А разность порядков, в DBC больший операнд SUBF5: MOV E,A ; SUBF6: ORA A ; CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит: DCR E ; JNZ SUBF6 ; ; ;Вычесть мантиссы, результат в EHL SUBF7: MOV A,C ; SUB L ; MOV L,A ; MOV A,B ; SBB H ; MOV H,A ; MOV E,D ; ; ;нормализовать и проверить антипереполнение SUBF8: MOV A,H ; ORA H ; JM SUBF9 ; DCR E ; MOV A,E ; CPI 0FFH ; STC ; JZ SUBFA ; DAD H ; JMP SUBF8 ; ; SUBF9: CALL PACK ; Преобразование числа в стандартный формат SUBFA: RET ; ; ;Умножение чисел с плавающей точкой MULF: MOV A,E ; ORA H ; ORA L ; JZ MULF8 ; MOV A,D ; ORA B ; ORA C ; JNZ MULF1 ; CALL SWAP ; Обмен содержимого регистров EHL и DBC JMP MULF8 ; ; ;операнды ненулевые, можно умножать MULF1: MOV A,D ; XRA E ; STA SIGN ; CALL REC ; Восстановление числа с плавающей точкой CALL SWAP ; Обмен содержимого регистров EHL и DBC CALL REC ; Восстановление числа с плавающей точкой MOV A,D ; ADD E ; JC MULF2 ; SUI 127 ; JNC MULF3 ; JMP MULF8 ; ; MULF2: ADI 129 ; JNC MULF3 ; JMP MULF8 ; ; ;в аккумуляторе А смещенный порядок произведения MULF3: MOV C,A ; MOV E,B ; MVI D,0 ; MOV A,H ; LXI H,0 ; XCHG ; DAD H ; XCHG ; ; ;начало цикла умножения MULF4: ORA A ; RAR ; JNC MULF5 ; DAD D ; ; MULF5: JZ MULF6 ; XCHG ; DAD H ; XHG ; JMP MULF4 ; ; ;проверить нарушение нормализации MULF6: JNC MULF7 ; CALL SHIFT ; Сдвиг содержимого HL вправо на 1 бит: INR C ; STC ; JZ MULF8 ; ; MULF7: MOV E,C ; CALL PACK ; Преобразование числа в стандартный формат ; MULF8: RET ; ; ;Деление чисел с плавающей точкой DIVF: MOV A,E ; ORA H ; ORA L ; JZ DIVF7 ; MOV A,D ; ORA B ; ORA C ; STC ; JZ DIVF7 ; ;операнды не равны нулю MOV A,D ; XRA E ; STA SIGN ; CALL REC ; Восстановление числа с плавающей точкой CALL SWAP ; Обмен содержимого регистров EHL и DBC CALL REC ; Восстановление числа с плавающей точкой CALL SWAP ; Обмен содержимого регистров EHL и DBC MOV A,E ; SUB D ; JNC DIVF1 ; ADI 127 ; CMC ; JC DIVF7 ; возикло антипереполнение JMP DIVF2 ; перейти на деление мантисс ; DIVF1: ADI 127 ; прибавить смещение JC DIVF7 ; возникло антипереполнение ; ;можно начинать деление мантисс DIVF2: STA EXP ; XCHG ; LXI H,0 ; MVI A,16 ; инициализировать счетчик PUSH PSW ; JMP DIVF4 ; войти в цикл деления ; DIVF3: PUSH PSW ; DAD H ; сдвинуть влево XCHG ; частное и остаток DAD H ; XCHG ; ; DIVF4: PUSH D ; сохранить остаок в стеке MOV A,E ; вычесть делитель из остатка SUB C ; MOV E,A ; MOV A,D ; SBB B ; MOV D,A ; JC DIVF5 ; POP PSW ; удалить остаток из стека INR L ; PUSH D ; ; DIVF5: POP D ; извлечь предыдущий остаток POP PSW ; извлечь счетчик DCR A ; декремент счетчика JNZ DIVF3 ; повторить цикл деления ; деление мантисс закончено LDA EXP ; MOV E,A ; ; нормализовать частное MOV A,H ; ORA A ; JM DIVF6 ; DAD H ; DCR E ; CPI 0FFH ; проверить антипереполнение STC ; JZ DIVF7 ; возникло антипереполнение ; DIVF6: CALL PACK ; Преобразование числа в стандартный формат DIVF7: RET ; ; Контрольная работа № 3 Задача № 1 Построить модель распределения адресного пространства с указанием диапазонов адресов в 16-й системе счисления. В качестве дешифратора адресов используется стандартный дешифратор, к информационным входам которого подключены линии А15, А12, А9 16-разрядной шины адреса. Выходы дешиф-ратора | Разряды адреса | Диапазоны адресов | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Y0 | 0 | X | X | 0 | X | X | 0 | X | X | X | X | X | X | X | X | X | 0000h-01FFh, 0400h-05FFh, 0800h-0DFFh 2000h-21FFh, 2400h-25FFh, 2800h-2DFFh 4000h-41FFh, 4400h-45FFh, 4800h-4DFFh 6000h-61FFh, 6400h-65FFh, 6800h-6DFFh | Y1 | 0 | X | X | 0 | X | X | 1 | X | X | X | X | X | X | X | X | X | 0200h-03FFh, 0600h-07FFh, 0A00h-0FFFh 2200h-23FFh, 2600h-27FFh, 2A00h-2FFFh 4200h-43FFh, 4600h-47FFh, 4A00h-4FFFh 6200h-63FFh, 6600h-67FFh, 6A00h-6FFFh | Y2 | 0 | X | X | 1 | X | X | 0 | X | X | X | X | X | X | X | X | X | 1000h-11FFh, 1400h-15FFh, 1800h-1DFFh 3000h-31FFh, 3400h-35FFh, 3800h-3DFFh 5000h-51FFh, 5400h-55FFh, 5800h-5DFFh 7000h-71FFh, 7400h-75FFh, 7800h-7DFFh | Y3 | 0 | X | X | 1 | X | X | 1 | X | X | X | X | X | X | X | X | X | 1200h-13FFh, 1600h-17FFh, 1A00h-1FFFh 3200h-33FFh, 3600h-37FFh, 3A00h-3FFFh 5200h-53FFh, 5600h-57FFh, 5A00h-5FFFh 7200h-73FFh, 7600h-77FFh, 7A00h-7FFFh | Y4 | 1 | X | X | 0 | X | X | 0 | X | X | X | X | X | X | X | X | X | 8000h-81FFh, 8400h-85FFh, 8800h-8DFFh A000h-A1FFh, A400h-A5FFh, A800h-ADFFh C000h-C1FFh, C400h-C5FFh, C800h-CDFFh E000h-E1FFh, E400h-E5FFh, E800h-EDFFh | Y5 | 1 | X | X | 0 | X | X | 1 | X | X | X | X | X | X | X | X | X | 8200h-83FFh, 8600h-87FFh, 8A00h-8FFFh A200h-A3FFh, A600h-A7FFh, AA00h-AFFFh C200h-C3FFh, C600h-C7FFh, CA00h-CFFFh E200h-E3FFh, E600h-E7FFh, EA00h-EFFFh | Y6 | 1 | X | X | 1 | X | X | 0 | X | X | X | X | X | X | X | X | X | 9000h-91FFh, 9400h-95FFh, 9800h-9DFFh B000h-B1FFh, B400h-B5FFh, B800h-BDFFh D000h-D1FFh, D400h-D5FFh, D800h-DDFFh F000h-F1FFh, F400h-F5FFh, F800h-FDFFh | Y7 | 1 | X | X | 1 | X | X | 1 | X | X | X | X | X | X | X | X | X | 9200h-93FFh, 9600h-97FFh, 9A00h-9FFFh B200h-B3FFh, B600h-B7FFh, BA00h-BFFFh D200h-D3FFh, D600h-D7FFh, DA00h-DFFFh F200h-F3FFh, F600h-F7FFh, FA00h-FFFFh | В итоге адресное пространство размером в 64 Кбайт разбито на диапазоны для 8 устройств. В каждом диапазоне выделено 8 участков по 512 байт и 4 участка по 1536 байт. Задача № 2 Требуется выделить зоны адресного пространства для размещения в них адресов для устройств, указанных в таблице. В качестве адресного дешифратора используется ПЗУ. Построить схемы выделения соответствующих блоков адресов и таблицу диапазонов адресов. Наименование устройства | Диапазон адресов | Емкость (Кбайт) | ПЗУ1 | 0000h-03FFh | 1 | ОЗУ1 | 0400h-0BFFh | 2 | УВВ1 | 2000h-2FFFh | 4 | ПЗУ2 | 3000h-4FFFh | 8 | ОЗУ2 | 5000h-6FFFh | 8 | УВВ2 | 8000h-FFFFh | 32 | Так как наименьший блок имеет размер 1К ячеек, то разрешающая способность дешифратора должна обеспечивать деление адресного пространства с точностью до зон размером 1К ячеек. Анализируя шесть старших разрядов адреса, получаем необходимую точность, поскольку они делят все адресное пространство обьемом 64К ячеек на 26 = 64 части по 1К ячеек, что и требуется. Выбираем за основу ПЗУ с 10 адресными входами 2716 ( К573РФ2 ), имеющее структуру 2К*8 бит . Выходы 00 - 05 этого ПЗУ подключаем к инверсным входам выбора кристалла соответсвующих микросхем. Разрабатываем прошивку ПЗУ. Устройство | Диапазон адресов | Адресные входы | Выходы | A5 | A4 | A3 | A2 | A1 | A0 | 0 1 2 3 4 5 | ROM 1 | 0000h-03FFh | 0 | 0 | 0 | 0 | 0 | 0 | 0 1 1 1 1 1 | RAM 1 | 0400h-07FFh | 0 | 0 | 0 | 0 | 0 | 1 | 1 0 1 1 1 1 | 0800h-0BFFh | 0 | 0 | 0 | 0 | 1 | 0 | 1 0 1 1 1 1 | - | 0C00h-0FFFh | 0 | 0 | 0 | 0 | 1 | 1 | 1 1 1 1 1 1 | 1000h-13FFh | 0 | 0 | 0 | 1 | 0 | 0 | 1 1 1 1 1 1 | 1400h-17FFh | 0 | 0 | 0 | 1 | 0 | 1 | 1 1 1 1 1 1 | 1800h-1BFFh | 0 | 0 | 0 | 1 | 1 | 0 | 1 1 1 1 1 1 | 1C00h-1FFFh | 0 | 0 | 0 | 1 | 1 | 1 | 1 1 1 1 1 1 | IN-OUT 1 | 2000h-23FFh | 0 | 0 | 1 | 0 | 0 | 0 | 1 1 0 1 1 1 | 2400h-27FFh | 0 | 0 | 1 | 0 | 0 | 1 | 1 1 0 1 1 1 | 2800h-2BFFh | 0 | 0 | 1 | 0 | 1 | 0 | 1 1 0 1 1 1 | 2C00h-2FFFh | 0 | 0 | 1 | 0 | 1 | 1 | 1 1 1 1 1 1 | ROM 2 | 3000h-33FFh | 0 | 0 | 1 | 1 | 0 | 0 | 1 1 1 1 1 1 | 3400h-37FFh | 0 | 0 | 1 | 1 | 0 | 1 | 1 1 1 1 1 1 | 3800h-3BFFh | 0 | 0 | 1 | 1 | 1 | 0 | 1 1 1 1 1 1 | 3C00h-3FFFh | 0 | 0 | 1 | 1 | 1 | 1 | 1 1 1 1 1 1 | 4000h-43FFh | 0 | 1 | 0 | 0 | 0 | 0 | 1 1 1 1 1 1 | 4400h-47FFh | 0 | 1 | 0 | 0 | 0 | 1 | 1 1 1 1 1 1 | 4800h-4BFFh | 0 | 1 | 0 | 0 | 1 | 0 | 1 1 1 1 1 1 | 4C00h-4FFFh | 0 | 1 | 0 | 0 | 1 | 1 | 1 1 1 1 1 1 | RAM 2 | 5000h-53FFh | 0 | 1 | 0 | 1 | 0 | 0 | 1 1 1 1 1 1 | 5400h-57FFh | 0 | 1 | 0 | 1 | 0 | 1 | 1 1 1 1 1 1 | 5800h-5BFFh | 0 | 1 | 0 | 1 | 1 | 0 | 1 1 1 1 1 1 | 5C00h-5FFFh | 0 | 1 | 0 | 1 | 1 | 1 | 1 1 1 1 1 1 | 6000h-63FFh | 0 | 1 | 1 | 0 | 0 | 0 | 1 1 1 1 1 1 | 6400h-67FFh | 0 | 1 | 1 | 0 | 0 | 1 | 1 1 1 1 1 1 | 6800h-6BFFh | 0 | 1 | 1 | 0 | 1 | 0 | 1 1 1 1 1 1 | 6C00h-6FFFh | 0 | 1 | 1 | 0 | 1 | 1 | 1 1 1 1 1 1 | - | 7000h-73FFh | 0 | 1 | 1 | 1 | 0 | 0 | 1 1 1 1 1 1 | 7400h-77FFh | 0 | 1 | 1 | 1 | 0 | 1 | 1 1 1 1 1 1 | 7800h-7BFFh | 0 | 1 | 1 | 1 | 1 | 0 | 1 1 1 1 1 1 | 7C00h-7FFFh | 0 | 1 | 1 | 1 | 1 | 1 | 1 1 1 1 1 1 | Устройство | Диапазон адресов | Адресные входы | Выходы | A5 | A4 | A3 | A2 | A1 | A0 | 0 1 2 3 4 5 | IN-OUT 2 | 8000h-83FFh | 1 | 0 | 0 | 0 | 0 | 0 | 1 1 1 1 1 1 | 8400h-87FFh | 1 | 0 | 0 | 0 | 0 | 1 | 1 1 1 1 1 1 | 8800h-8BFFh | 1 | 0 | 0 | 0 | 1 | 0 | 1 1 1 1 1 1 | 8C00h-8FFFh | 1 | 0 | 0 | 0 | 1 | 1 | 1 1 1 1 1 1 | 9000h-93FFh | 1 | 0 | 0 | 1 | 0 | 0 | 1 1 1 1 1 1 | 9400h-97FFh | 1 | 0 | 0 | 1 | 0 | 1 | 1 1 1 1 1 1 | 9800h-9BFFh | 1 | 0 | 0 | 1 | 1 | 0 | 1 1 1 1 1 1 | 9C00h-9FFFh | 1 | 0 | 0 | 1 | 1 | 1 | 1 1 1 1 1 1 | A000h-A3FFh | 1 | 0 | 1 | 0 | 0 | 0 | 1 1 1 1 1 1 | A400h-A7FFh | 1 | 0 | 1 | 0 | 0 | 1 | 1 1 1 1 1 1 | A800h-ABFFh | 1 | 0 | 1 | 0 | 1 | 0 | 1 1 1 1 1 1 | AC00h-AFFFh | 1 | 0 | 1 | 0 | 1 | 1 | 1 1 1 1 1 1 | B000h-B3FFh | 1 | 0 | 1 | 1 | 0 | 0 | 1 1 1 1 1 1 | B400h-B7FFh | 1 | 0 | 1 | 1 | 0 | 1 | 1 1 1 1 1 1 | B800h-BBFFh | 1 | 0 | 1 | 1 | 1 | 0 | 1 1 1 1 1 1 | BC00h-BFFFh | 1 | 0 | 1 | 1 | 1 | 1 | 1 1 1 1 1 1 | C000h-C3FFh | 1 | 1 | 0 | 0 | 0 | 0 | 1 1 1 1 1 1 | C400h-C7FFh | 1 | 1 | 0 | 0 | 0 | 1 | 1 1 1 1 1 1 | C800h-CBFFh | 1 | 1 | 0 | 0 | 1 | 0 | 1 1 1 1 1 1 | CC00h-CFFFh | 1 | 1 | 0 | 0 | 1 | 1 | 1 1 1 1 1 1 | D000h-D3FFh | 1 | 1 | 0 | 1 | 0 | 0 | 1 1 1 1 1 1 | D400h-D7FFh | 1 | 1 | 0 | 1 | 0 | 1 | 1 1 1 1 1 1 | D800h-DBFFh | 1 | 1 | 0 | 1 | 1 | 0 | 1 1 1 1 1 1 | DC00h-DFFFh | 1 | 1 | 0 | 1 | 1 | 1 | 1 1 1 1 1 1 | E000h-E3FFh | 1 | 1 | 1 | 0 | 0 | 0 | 1 1 1 1 1 1 | E400h-E7FFh | 1 | 1 | 1 | 0 | 0 | 1 | 1 1 1 1 1 1 | E800h-EBFFh | 1 | 1 | 1 | 0 | 1 | 0 | 1 1 1 1 1 1 | EC00h-EFFFh | 1 | 1 | 1 | 0 | 1 | 1 | 1 1 1 1 1 1 | F000h-F3FFh | 1 | 1 | 1 | 1 | 0 | 0 | 1 1 1 1 1 1 | F400h-F7FFh | 1 | 1 | 1 | 1 | 0 | 1 | 1 1 1 1 1 1 | F800h-FBFFh | 1 | 1 | 1 | 1 | 1 | 0 | 1 1 1 1 1 1 | FC00h-FFFFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 1 1 1 1 1 | Схема дешифратора : Карта памяти : | 3FFh | 7FFh | BFFh | FFFh | | 0000h | ROM 1 | RAM 1 | - | 0FFFh | 1000h | - | 1FFFh | 2000h | IN-OUT 1 | 2FFFh | 3000h | ROM 2 | 3FFFh | 4000h | 4FFFh | 5000h | RAM 2 | 5FFFh | 6000h | 6FFFh | 7000h | - | 7FFFh | 8000h | IN-OUT 2 | 8FFFh | 9000h | 9FFFh | A000h | AFFFh | B000h | BFFFh | C000h | CFFFh | D000h | DFFFh | E000h | EFFFh | F000h | FFFFh | | 000h | 400h | 800h | C00h | | Задача № 3 Разделить адресное пространство 64 килобайта на 18 равных частей. В качестве дешифратора адреса используется ПЛМ. Разбиение адресного пространства показать в виде схемы и таблицы. Размер одной части 65536 / 18 = 3640 байт. Т.к. 3640 * 18 = 65520, последние 16 ячеек не будут использоваться. Произведем разбиение 3640 байт на участки 2N : 3640 = 2048 + 1024 + 512 + 32 + 16 + 8 В результате получим 6 областей памяти по 18 участков в каждой : 0000h-8FFFh ( участки размером 2048 ) 9000h-D7FFh ( участки размером 1024 ) D800h-FBFFh ( участки размером 512 ) FC00h-FE3Fh ( участки размером 32 ) FE40h-FF5Fh ( участки размером 16 ) FF60h-FFEFh ( участки размером 8 ) Прошивка ПЛМ 1 Область | Диапазон адресов | Разряды адреса | 1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 1 | 0000h-07FFh | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | 9000h-93FFh | 1 | 0 | 0 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | D800h-D9FFh | 1 | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | FC00h-FC1Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | X | X | X | X | X | FE40h-FE4Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | X | X | X | X | FF60h-FF67h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | 2 | 0800h-0FFFh | 0 | 0 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | X | 9400h-97FFh | 1 | 0 | 0 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | DA00h-DBFFh | 1 | 1 | 0 | 1 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | FC20h-FC3Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | X | X | X | X | X | FE50h-FE5Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | X | X | X | X | FF68h-FF6Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | X | X | X | 3 | 1000h-17FFh | 0 | 0 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | 9800h-9BFFh | 1 | 0 | 0 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | DC00h-DDFFh | 1 | 1 | 0 | 1 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | FC40h-FC5Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | X | X | X | X | X | FE60h-FE6Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | X | X | X | X | FF70h-FF77h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | X | X | X | 4 | 1800h-1FFFh | 0 | 0 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | X | 9C00h-9FFFh | 1 | 0 | 0 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | DE00h-DFFFh | 1 | 1 | 0 | 1 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | FC60h-FC7Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | X | X | X | X | X | FE70h-FE7Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | X | X | X | X | FF78h-FF7Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | 5 | 2000h-27FFh | 0 | 0 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | A000h-A3FFh | 1 | 0 | 1 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | E000h-E1FFh | 1 | 1 | 1 | 0 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | FC80h-FC9Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | X | X | X | X | X | FE80h-FE8Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | X | X | X | X | FF80h-FF87h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | X | X | X | 6 | 2800h-2FFFh | 0 | 0 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | X | A400h-A7FFh | 1 | 0 | 1 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | E200h-E3FFh | 1 | 1 | 1 | 0 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | FCA0h-FCBFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | X | X | X | X | X | FE90h-FE9Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | X | X | X | X | FF88h-FF8Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | X | X | X | 7 | 3000h-37FFh | 0 | 0 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | A800h-ABFFh | 1 | 0 | 1 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | E400h-E5FFh | 1 | 1 | 1 | 0 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | FCC0h-FCDFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | X | X | X | X | X | FEA0h-FEAFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | X | X | X | X | FF90h-FF97h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | X | X | X | X | 8 | 3800h-3FFFh | 0 | 0 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | X | AC00h-AFFFh | 1 | 0 | 1 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | E600h-E7FFh | 1 | 1 | 1 | 0 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | FCEOh-FCFFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | X | X | X | X | X | FEB0h-FEBFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | X | X | X | X | FF98h-FF9Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | X | X | X | X | 9 | 4000h-47FFh | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | B000h-B3FFh | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | E800h-E9FFh | 1 | 1 | 1 | 0 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | FD00h-FD1Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | X | X | X | X | X | FEC0h-FECFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | X | FFA0h-FFA7h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | X | X | X | X | Прошивка ПЛМ 2 Область | Диапазон адресов | Разряды адреса | 1 5 | 1 4 | 1 3 | 1 2 | 1 1 | 1 0 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 10 | 4800h-4FFFh | 0 | 1 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | X | B400h-B7FFh | 1 | 0 | 1 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | EA00h-EBFFh | 1 | 1 | 1 | 0 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | FD20h-FD3Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | X | X | X | X | X | FED0h-FEDFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | X | X | X | X | FFA8h-FFAFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | X | X | X | 11 | 5000h-57FFh | 0 | 1 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | X | B800h-BBFFh | 1 | 0 | 1 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | EC00h-EDFFh | 1 | 1 | 1 | 0 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | FD40h-FD5Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | X | X | X | X | X | FEE0h-FEEFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | X | X | X | X | FFB0h-FFB7h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | X | X | X | 12 | 5800h-5FFFh | 0 | 1 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | BC00h-BFFFh | 1 | 0 | 1 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | EE00h-EFFFh | 1 | 1 | 1 | 0 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | FD60h-FD7Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | X | X | X | X | X | FEF0h-FEFFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | X | X | X | X | FFB8h-FFBFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | X | X | X | 13 | 6000h-67FFh | 0 | 1 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | X | C000h-C3FFh | 1 | 1 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | F000h-F1FFh | 1 | 1 | 1 | 1 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | FD80h-FD9Fh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | X | X | X | X | X | FF00h-FFOFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | X | X | X | X | FFC0h-FFC7h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | X | X | X | 14 | 6800h-6FFFh | 0 | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | C400h-C7FFh | 1 | 1 | 0 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | F200h-F3FFh | 1 | 1 | 1 | 1 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | FDA0h-FDBFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | X | X | X | X | X | FF10h-FF1Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | X | X | X | X | FFC8h-FFCFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | X | X | X | 15 | 7000h-77FFh | 0 | 1 | 1 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | X | C800h-CBFFh | 1 | 1 | 0 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | F400h-F5FFh | 1 | 1 | 1 | 1 | 0 | 1 | 0 | X | X | X | X | X | X | X | X | X | FDC0h-FDDFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 0 | X | X | X | X | X | FF20h-FF2Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 0 | X | X | X | X | FFD0h-FFD7h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | X | X | X | 16 | 7800h-7FFFh | 0 | 1 | 1 | 1 | 0 | X | X | X | X | X | X | X | X | X | X | X | CC00h-CFFFh | 1 | 1 | 0 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | X | F600h-F7FFh | 1 | 1 | 1 | 1 | 0 | 1 | 1 | X | X | X | X | X | X | X | X | X | FDE0h-FDFFh | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | X | X | X | X | X | FF30h-FF3Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | X | X | X | X | FFD8h-FFDFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | X | X | X | X | 17 | 8000h-87FFh | 1 | 0 | 0 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | X | D000h-D3FFh | 1 | 1 | 0 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | F800h-F9FFh | 1 | 1 | 1 | 1 | 1 | 0 | 0 | X | X | X | X | X | X | X | X | X | FE00h-FE1Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | X | X | X | X | X | FF40h-FF4Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 0 | X | X | X | X | FFE0h-FFE7h | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | X | X | X | X | 18 | 8800h-8FFFh | 1 | 0 | 0 | 0 | 0 | X | X | X | X | X | X | X | X | X | X | X | D400h-D7FFh | 1 | 1 | 0 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | X | FA00h-EBFFh | 1 | 1 | 1 | 1 | 1 | 0 | 1 | X | X | X | X | X | X | X | X | X | FE20h-FE3Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | X | X | X | X | X | FF50h-FF5Fh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | X | X | X | X | FFE8h-FFEFh | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | X | X | X | X | В результате получена таблица прошивки ПЛМ для разделения адресного пространства 64 кБ на 18 несплошных равных частей. Исходя из требуемого количества произведений ( 18 * 6 = 108 ) и количества выходных функций (18), выбираем в качестве элементной базы выпускаемую фирмой ADVANCED MICRO DEVICES микросхему ПЛМ PLS30S16. Эта микросхема позволяет за счет мультиплексирования четырех адресных входов с выходами иметь от 12 до 17 входов и от 8 до 12 выходов при количестве произведений до 64. Для решения поставленной задачи берем две ПЛМ, запараллеленные входы которых подключены к шине адреса, а выходы – к входам выбора кристалла соответствующих микросхем. Технические данные на ПЛМ PLS30S16 фирмы AMD : - IC MASTER/Windows - (Title) :PLD|BIP||OTPRC Section :PROGRAMMABLE LOGIC DEVICES CAT0 :PLD Category :Bipolar CAT1 :BIP MinorA :One-Time Programmable~Registered/Combinatorial Outputs CAT3 :OTPRC MDD Code :AMD Manufacturer's Name:ADVANCED MICRO DEVICES Device Number :PLS30S16-40 Disc :*93 Date :10/26/92 Oper :BAC Transcode :E RBASE :30S16 MBase :PLS30S16 Data Book :DATASHEET Propagation Delay (:40 Maximum Clock (MHz):22.2 Product Terms :64 Flip-Flops :12 Dedicated Inputs :12-17 Bidirectional I/Os :8-12 Standby Current (mA:225 Active Current (mA):225 Pins :28 Has Image :N |