регистрация / вход

Интерфейсы и периферийные устройства

Задание 1. По выбранной элементной базе и адресам 8-разрядных регистров ввода и вывода и 2-разрядного регистра ввода-вывода представить принципиальную схему подключения портов к системной шине ISA.

Задание 1. По выбранной элементной базе и адресам 8-разрядных регистров ввода и вывода и 2-разрядного регистра ввода-вывода представить принципиальную схему подключения портов к системной шине ISA.

Магистраль ISA была разработана специально для персональных компьют6еров типа IBM PC AT и является фактическим стандартом для всех изготовителей этих компьютеров.

Магистраль ISA относится к демультиплексированным (то есть имеющим раздельные шины адреса и данных) 16-разрядными системными магистралями среднего быстродействия. Обмен осуществляется 8- или 16-разрядными данными. Максимальный объем адресуемой памяти составляет 16Мбайт (24 адресные линии). Максимальной адресное пространство для устройств ввода-вывода – 64Кбайта (16 адресных линий), хотя практически все выпускаемые платы расширения используют только 10 адресных линий (1Кбайт). Магистраль поддерживает регенерацию динамической памяти, радиальные прерывания и прямой доступ к памяти.

Структурная схема подключения устройств показана на рисунке 1.1. (стр.2).

Основными сигналами управления в схеме являются: IOR, IOW, AEN, IRQ N.

IOR - строб чтения данных из устройств ввода-вывода.

IOW – строб записи данных в устройства ввода-вывода.

AEN (разрешение адреса) – используется в ПДП для сообщения всем платам расширения, что производится цикл ПДП.

IRQ N – сигналы запроса радиальных прерываний.

В магистрали ISA для каждого подключаемого устройства забронированы конкретные адреса, наше устройство не является стандартным, поэтому для его адресации используем резервные адреса: 360h – регистр ввода, 361h – регистр вывода, 362h – регистр ввода-вывода.

Для адресации конкретного устройства используем дешифратор адреса (ДшА). К нему подведены старшие биты адреса (SA2-SA9). И управляющий сигнал AEN. Младшие биты адреса (SA0-SA1) включены в дешифратор управляющих сигналов (ДшУС). Для дешифрации управляющих сигналов используются сигналы IOR и IOW.

На выходе ДшУС образуются сигналы чтение регистра ввода (ЧтРВв), запись в регистр вывода (ЗпРВыв), чтение регистра ввода-вывода (ЧтРВ/В) и запись в регистр ввода-вывода (ЗпРВ/В). В таблице 1.1. показан принцип образования сигналов управления.

Таблица 1.1.

Управляющие сигналы/ Сигналы ISA

ЧтРВв

ЗпРв

ЧтРВ/В

ЗпРВ/В

SA0

0

1

0

0

SA1

0

0

1

1


IOR

0

1

0

1


IOW

1

0

1

0

В приемопередатчик (ПП) поступают восьмиразрядные данные (SD0-SD7) и сигнал разрешения чтения (IOR).

В регистры ввода (РгВв) и вывода (РгВыв) восьмиразрядные, управляются сигналами ЧтРВв и ЗпРВыв соответственно. Регистр ввода/вывода (РВ/В) двухразрядный, управляется сигналами ЗпРВ/В и ЧтРВ/В.

Кроме того, регистры ввода и ввода/вывода управляются сигналом запись в регистр ввода из периферийного устройства.

Принципиальная схема устройства показана на рисунке 1.2.(стр.4).

Дешифратор адреса реализован микросхемами К1533ЛН1, К1533ЛА2 и К555ЛЛ1. В дешифраторе используется простая логика, поэтому описывать подробно принцип образования сигналов не имеет смысла.

Дешифратор управляющих сигналов реализован на микросхеме К1533ИД3, которая представляет собой дешифратор - демультиплексор с 4 на 16.

Согласно таблице истинности этой микросхемы и таблице 1.1. были определены выводы, с которых снимаем управляющие сигналы.

Приемопередатчик реализован на микросхеме К1533АП6, представляющей из себя двунаправленный восьмиразрядный шинный усилитель с тремя состояниями выхода.

Регистры ввода и вывода собраны на микросхемах К1533ИР22, а регистр ввода/вывода – на ИМС К1533ИР34.

Задание 2. Клавиатуру, содержащую 16х6 клавиш, подключить к интерфейсу Multibus с помощью соответствующих портов, необходимых для сканирования клавиш контактного типа. Представить подробную структурную схему с указанием всех управляющих сигналов.

Схема подключения устройства показана на рисунке 2.1 (стр.6). Устройство работает по прерыванию, т.е. если не нажата ни одна клавиша, то устройство в работу не включается.

Несколько узлов структурной схемы уже были использованы и описаны в задании 1. В данном случае используется интерфейс MULTIBUS, который имеет следующие сигналы управления: IORC –чтение порта; IOWC- запись в порт. Обмен осуществляется в режиме квитирования с формированием исполнителем ответного сигнала XACK.

Управляющими сигналами для дешифратора адреса (ДшА) служат адреса А2-А9, формирующие сигнал SEL. Младшие биты адреса (A0-A1) включены в дешифратор управляющих сигналов (ДшУС). Для дешифрации управляющих сигналов используются сигналы IORС и IOWС.

На выходе ДшУС образуются сигналы ВклБуф, ВклР12, ЗпР1, ЗпР2, ВклАП5, которые будут описаны ниже.

На приемопередатчик (ПП) поступают восемь разрядов данных (Д0-Д7), управляется он сигналами SEL и IORC.

В структурной схеме ФСК – формирователь сигнала квитирования.

Регистры RG1 и RG2 – регистры сканирования.

В исходном состоянии регистры сканирования отключены от клавиатуры сигналом ВклР12. К клавиатуре подключены буферные элементы (ИМС К555ЛП10), через которые выходы К0-К15 клавиатуры включены на землю. Микросхема КР1533АП5 отключена от шины данных ВД0-ВД5. Т.к. ни одна клавиша не нажата, то на выходе логического элемента (ИМС К1533ЛА2) уровень логического нуля.

Если на клавиатуре нажата клавиша, то через диод выход логического элемента становится подключенным на землю, на выходе элемента устанавливается высокий уровень, т.е. формируется сигнал запроса прерывания INT N. После этого запускается управляющая программа по вектору прерывания.

От шины К0-К15 отключаются буферные элементы сигналом ВклБуф, и подключаются регистры сканирования. Программно реализуется режим «бегущего нуля» на регистрах сканирования и дальше через КР1533АП5 смотрим состояние шины КР0-КР5. Таким образом вычисляется код нажатой клавиши.

Задание 3. Разработать принципиальную схему адаптера принтера, содержащего 8-разрядный регистр данных (записи) с адресом 378h, 5-разрядный регистр управления (записи) с адресом 37Ah и 5-разрядный порт состояния (чтения с линий Д3-Д7), имеющий адрес 379h. Подключить порты к системной шине расширения ISA.

Принципиальная схема показана на рис. 3.1.(стр.8).

Дешифратор адреса реализован по тому же принципу, что и в задании 1, но регистры имеют адреса: 378h- регистр данных; 379h – регистр состояния; 37Аh- регистр управления.

Дешифратор управляющих сигналов выполнен так же, но с учетом таблицы 3.1.

Таблица 3.1.

Управляющие сигналы/ сигналы ISA

ЗпРД

ЗпРУ

ЧтРС

SA0

0

0

1

SA1

0

1

0


IOR

1

1

0


IOW

0

0

1

Восьмиразрядный приемопередатчик выполнен на микросхеме К1533АП6.

Регистры данных и управления выполнены на микросхемах К1533ИР22, в качестве регистра состояний используются буферные элементы – ИМС К555ЛП10.

В исходном состоянии на выходе дешифратора адреса постоянно присутствует уровень логической единицы, вследствие чего ДшУС и ПП не участвуют в работе.

Перед началом цикла передачи данных компьютер должен убедиться, что сняты сигналы BUSY и ACK. Для этого мы должны считать состояние этих сигналов из регистра состояния (РС). Это сделаем с помощью команды IN, где укажем адрес РС –379h. ДшУС выдаст сигнал чтения РС (ЧтРС), и сигналы состояния принтера по шине ВД0-ВД4 отобразятся на шине данных SD0-SD4 интерфейса ISA. После этого выставляем данные путем выполнения команды OUT с указанием адреса регистра данных (378h). В результате чего ДшУС сформирует сигнал записи в регистр данных (ЗпРД). Затем формируется строб. В команде OUT указываем адрес регистра управления (РУ) 37Аh, после чего формируется сигнал записи в регистр управления (ЗпРУ) ДшУСом.

После этого строб снимается. При получении строба принтер формирует сигнал BUSY, а после окончания обработки данных выставляет сигнал ACK, снимает BUSY, снимает ACK, затем может начаться новый цикл.

Задание 4. Показать временную диаграмму формирования адресной метки, у которой биты синхронизации равны C7hЮ, а биты данных – А1, метод кодирования MFM.


Рис. 4.1 . Запись адресной метки методом MFM

Если бит данных равен единице, то стоящий перед ним бит синхронизации не записывается. Если бит данных равен нулю, но предыдущий бит данных равен единице, то бит синхронизации также не записывается.

Рассмотрим последовательность битов, изображенных на рисунке 4.1. начиная со старшего. Перед первым битом данных стоит бит синхронизации, поэтому в сигнале записи будет присутствовать только бит данных. Перед вторым битом данных нет бита синхронизации, но предыдущий бит данных был равен единице, поэтому бит синхронизации тоже не пишется, бит данных равен нулю, таким образом, сигнал записи равен нулю.

Третий бит записывается аналогично первому, четвёртый – аналогично второму. Пятый бит равен нулю, предыдущий бит данных также равен нулю, поэтому бит синхронизации и бит данных должны записываться в сигнал записи, но они равны нулям, т.е. записывается нуль.

Шестой бит равен нулю, предыдущий бит данных тоже равен нулю, т.е. записываются и бит данных и бит синхронизации. Бит синхронизации равен единице, бит данных равен нулю т.е. сигнал записи равен единице. Седьмой бит записывается аналогично шестому, а восьмой – первому.

Задание 5. Разработать подробную структурную схему сопряжения ПК с шиной ISA (приемник) и шиной Multibus (передатчик) с изображением всех управляющих сигналов. Обмен информацией осуществляется в режиме прерывания.

Структурная схема показана на рисунке 5.1. (стр.11).

В предыдущих заданиях были разработаны схемы подключения и к шине Isa и к шине Multibus, сигналы управления и принцип их формирования, поэтому описывать это снова нет смысла. Скажем только, что адреса А0-А9 интерфейса Multibus и SA0-SA9 интерфейса ISA для ДшА берем из области резервных адресов (360…36F).

Для передачи данных из ПК с интерфейсом Multibus используем регистр вывода данных (РВывД). Второй ПК с интерфейсом ISA включится в работу по прерываниюIRQ N в момент передачи данных по сигналу ЗпРВвД.

С помощью управляющей программы он считает данные из регистра ввода (РВвД) по сигналу чтения из регистра ввода данных (ЧтВвД), который в свою очередь сбросит сигнал IRQ N и подготовит ПК с шиной ISA для дальнейшего приема данных.

Задание 6. Изучить принцип работы печатающего устройства. Написать программу на ассемблере, осуществляющую вывод на печать с помощью портов адаптера и опросом флага готовности принтера.

.model tiny ;модель памяти, исп. для СОМ

.code ;начало сегмента кода

org 100h ;нач. знач. счетчика - 100Н

;Начало основной программы---------------------------------------------------

start: call clear ;ярко-белые симв. на синем

;

mov cx,len1 ;

mov dh,10 ;

mov dl,27 ;

mov bp,offset mes1 ;

call symv ;вывод на экран строки симв.

;

call nklav ;идентиф. нажатой клавиши

call clsym ;стирание из буфера символа

;

call clear ;ярко-белые симв. на синем

;

mov cx,len2 ;

mov dh,10 ;

mov dl,23 ;

mov bp,offset mes2 ;

call symv ;вывод на экран строки симв.

;

mov cx,len3 ;

mov dh,12 ;

mov dl,23 ;

mov bp,offset mes3 ;

call symv ;вывод на экран строки симв.

;

nrv2: call nklav ;идентиф. нажатой клавиши

;

cmp ah,02h ;

je nrv3 ;

cmp ah,03h ;

je nrv10 ;

call clsym ;

jmp nrv2 ;

nrv10: jmp nrv6 ;

;

nrv3: call clear ;ярко-белые симв. на синем

call clsym ;стирание из буфера символа

;

mov cx,len4 ;

mov dh,0 ;

mov dl,10 ;

mov bp,offset mes4 ;

call symv ;вывод на экран строки симв.

;

mov ah,06h ;функция задания окна

mov al,0 ;режим создания

mov bh,2Fh ;атрибут символов - з/ярко-б

mov ch,1 ;верхняя Y-координата

mov cl,0 ;левая Х-координата

mov dh,24 ;нижняя Y-координата

mov dl,79 ;правая Х-координата

int 10h ;прерывание BIOS

;

mov ah,02 ;

mov bh,0 ;

mov dh,1 ;

mov dl,0 ;

int 10h ;

;Запись символов в буфер(buf1)

mov ah,3Fh ;

mov bx,0 ;

mov cx,100 ;

mov dx,offset buf1 ;

int 21h ;

;

mov lensym,ax ;

inc lensym ;

call nrv11 ;Состояние ACK,BUSY

mov si,0 ;

dlsh: dec lensym ;

mov al,offset buf1[si] ;

mov dx,378h ;

out dx,al ;Выставление данных

mov dx,1000 ;

call delay

mov dx,37Ah

mov al,00001001b

out dx,al ;Выставляем строб

mov dx,1000

call delay

mov dx,37Ah

mov al,00001000b

out dx,al ;Снимаем строб

cmp lensym,0

jz kon

inc si

call nrv11

jmp dlsh

;Передача в принтер символа конца строки

kon: call nrv11

mov al,10

mov dx,1000

call delay

mov dx,378h

out dx,al

mov dx,1000

call delay

mov dx,37Ah

mov al,00001000b

out dx,al

mov dx,1000

call delay

mov dx,37Ah

mov al,00001001b

out dx,al

mov dx,10000

call delay

mov al,13

mov dx,378h

out dx,al

mov dx,10000

call delay

mov dx,37Ah

mov al,00001000b

out dx,al

mov dx,10000

call delay

mov dx,37Ah

mov al,00001001b

out dx,al

jmp nrv6

;

nrv6: mov ax,0003h

int 10h

;

call clsym

ret

;

;ПП Экран: ярко-белые символы на синем фоне.---------------------------------

clear: mov ah,06h ;функция задания окна

mov al,0 ;режим создания

mov bh,1Fh ;атрибут символов - c/ярко-б

mov ch,0 ;верхняя Y-координата

mov cl,0 ;левая Х-координата

mov dh,24 ;нижняя Y-координата

mov dl,79 ;правая Х-координата

int 10h ;прерывание BIOS

ret

;ПП. Вывод на экран строки символов.-----------------------------------------

symv: mov ah,13h

mov al,0

mov bh,0

mov bl,1Fh

push ds

pop es

int 10h

ret

;ПП. Идентификация нажатой клавиши.------------------------------------------

nklav: lahf

or ah,01000000b

sahf

nrv1: mov ah,11h

int 16h

jz nrv1

ret

;ПП. Стирание из буфера символа.---------------------------------------------

clsym: mov ax,0C00h

int 21h

ret

;ПП. Задержка----------------------------------------------------------------

delay: mov ah,86h

mov cx,0

int 15h

ret

;ПП. Проверка регистра состояния---------------------------------------------

nrv11: mov cx,1000

nrv112: push cx

mov dx,379h

in al,dx

mov ack,al

mov busy,al

and ack,40h

cmp ack,40h

jne nrv111

and busy,80h

cmp busy,80h

jne nrv111

nrv111: pop cx

loop nrv112

ret

;ДАННЫЕ.---------------------------------------------------------------------

mes1 db 'ПРОГРАММА - "PRINT"'

len1=$-mes1

mes2 db '1. Вывод на печать данных из буфера.'

len2=$-mes2

mes3 db '2. Выход из программы.'

len3=$-mes3

mes4 db 'Наберите выводимый на печать текст с помощью клавиатуры.'

len4=$-mes4

buf1 db 100 dup('*')

lensym dw 0

ack db ?

busy db ?

;----------------------------------------------------------------------------

end start

Задание 7. Исследовать режим тестирования СОМ. Написать программу на ассемблере.

.model tiny ;модель памяти, исп. для СОМ

.code ;начало сегмента кода

org 100h ;нач. знач. счетчика - 100Н

;Начало основной программы---------------------------------------------------

start: call clear ;ярко-белые симв. на синем

;

mov cx,len1 ;

mov dh,10 ;

mov dl,27 ;

mov bp,offset mes1 ;

call symv ;вывод на экран строки симв.

;

call nklav ;идентиф. нажатой клавиши

call clsym ;стирание из буфера символа

;

call clear ;ярко-белые симв. на синем

;

mov cx,len2 ;

mov dh,10 ;

mov dl,23 ;

mov bp,offset mes2 ;

call symv ;вывод на экран строки симв.

;

mov cx,len3 ;

mov dh,12 ;

mov dl,23 ;

mov bp,offset mes3 ;

call symv ;вывод на экран строки симв.

;

nrv2: call nklav ;идентиф. нажатой клавиши

;

cmp ah,02h ;

je nrv3 ;

cmp ah,03h ;

je nrv10 ;

call clsym ;

jmp nrv2 ;

nrv10: jmp nrv6 ;

;

nrv3: call clear ;ярко-белые симв. на синем

call clsym ;стирание из буфера символа

;

mov cx,len4 ;

mov dh,0 ;

mov dl,10 ;

mov bp,offset mes4 ;

call symv ;вывод на экран строки симв.

;

mov ah,06h ;функция задания окна

mov al,0 ;режим создания

mov bh,2Fh ;атрибут символов - з/ярко-б

mov ch,1 ;верхняя Y-координата

mov cl,0 ;левая Х-координата

mov dh,24 ;нижняя Y-координата

mov dl,79 ;правая Х-координата

int 10h ;прерывание BIOS

;

mov ah,02

mov bh,0

mov dh,1

mov dl,0

int 10h

;

mov ah,3Fh

mov bx,0

mov cx,100

mov dx,offset buf1

int 21h

;Инициалицация СОМ1

initcom1 proc

mov ax,40h

mov es,ax

mov dx,es:[0]

add dx,3

mov al,10000000b

out dx,al

dec dx

dec dx

mov al,0

out dx,al

dec dx

mov al,0C0h

out dx,al

ret

initcom1 endp

;Инициализация регистра контроля линии

initrg proc

add dx,3

mov al,00000000b

or al,00000011b

or al,00000000b

or al,00000000b

out dx,al

inc dx

mov al,10h

out dx,al

sub dx,3

mov al,0

out dx,al

ret

initrg endp

;Готовность СОМ1

check proc

try: mov dx,es:[0]

add dx,5

in al,dx

test al,1Eh

jz m0

lea dx,error

mov cx,len5

mov dh,10

mov dl,23

mov bp,offset mes5

call symv ;вывод на экран строки симв.

jmp exit

m03: test al,01h

jnz m4

test al,20h

jz try

ret

check endp

;Работа с портом

work proc

m4: mov ah,0

int 16h

push ax

push ax

mov dx,es:[0]

add dx,5

mov cx,10

m1: in al,dx

test al,20h

jz m2

loop m1

m2: sub dx,5

pop ax

out dx,al

add dx,5

m3: in al,dx

test al,1

jz m3

sub dx,5

in al,dx

mov ah,0Eh

int 10h

pop ax

cmp al,1Bh

jne m4

ret

work endp

;Выход из программы

exit: mov ax,4C00h

int 21h

nrv6: call clsym

ret

;ПП Экран: ярко-белые символы на синем фоне.---------------------------------

clear: mov ah,06h ;функция задания окна

mov al,0 ;режим создания

mov bh,1Fh ;атрибут символов - c/ярко-б

mov ch,0 ;верхняя Y-координата

mov cl,0 ;левая Х-координата

mov dh,24 ;нижняя Y-координата

mov dl,79 ;правая Х-координата

int 10h ;прерывание BIOS

ret

;ПП. Вывод на экран строки символов.-----------------------------------------

symv: mov ah,13h

mov al,0

mov bh,0

mov bl,1Fh

push ds

pop es

int 10h

ret

;ПП. Идентификация нажатой клавиши.------------------------------------------

nklav: lahf

or ah,01000000b

sahf

nrv1: mov ah,11h

int 16h

jz nrv1

ret

;ПП. Стирание из буфера символа.---------------------------------------------

clsym: mov ax,0C00h

int 21h

ret

;ПП. Задержка----------------------------------------------------------------

delay: mov ah,86h

mov cx,0

int 15h

ret

;

;ДАННЫЕ.---------------------------------------------------------------------

mes1 db 'ПРОГРАММА - "COM"'

len1=$-mes1

mes2 db '1. Передача данных в СОМ-порт.'

len2=$-mes2

mes3 db '2. Выход из программы.'

len3=$-mes3

mes4 db 'Наберите выводимый в СОМ-порт текст с помощью клавиатуры.'

len4=$-mes4

buf1 db 100 dup('*')

mes5 db 'Ошибка порта СОМ 1',7,0Dh,0Ah,S

len5=$-mes5

;----------------------------------------------------------------------------

end start

ОТКРЫТЬ САМ ДОКУМЕНТ В НОВОМ ОКНЕ

Комментариев на модерации: 1.

ДОБАВИТЬ КОММЕНТАРИЙ [можно без регистрации]

Ваше имя:

Комментарий