Пример: Глобальная сеть INTERNET
Я ищу:
На главную  |  Добавить в избранное  

Главная/

Радиоэлектроника, компьютеры и периферийные устройства. /

Архитектураввода-вывода персональных ЭВМ IBM PC

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 

1. В то же  время бит 4 в OCW2 и OCW3 равен 0, а в ICW1 равен 1. Таким образом по значению, выводимому в порт с четным адресом, однозначно определяется,  в какой регистр (ICW1, OCW2 или OCW3) заносятся данные.

     Порт с нечетным адресом используется для вывода ICW2, ICW3, ICW4 и OCW1. Неоднозначности  интерпретации данных в этом случае так  же не  возникает, т.   к. слова  инициализации ICW2  - ICW4 должны непосредственно  следовать за ICW1,  выведенным в порт  с четным  адресом  и  выводить  в  промежутке  между  ними OCW1 не следует, онo не будет опознанo контроллером.

     Выводом  в   порт  с  четным   адресом  управляющего  слова инициализации  ICW1  начинается  инициализация  ПКП.  В процессе инициализации  контроллер последовательно  принимает управляющие слова ICW1 - ICW4. При наличии в системе одного контроллера ICW3 не  выводится. Наличие  ICW4 определяется  содержанием ICW1. При наличии каскада из нескольких ПКП каждый из них инициализируется отдельно.

     Формат ICW1 следующий:

  A0   7    6    5    4   3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  0 ¦ -- ¦ -- ¦ -- ¦  1 ¦LTIM¦ ADI¦SNGL¦ IC4¦ L----+----+----+----+----+-T--+-T--+-T--+-T---

                          ¦    ¦    ¦    ¦

                          ¦    ¦    ¦    L-> 1=будет вывод ICW4

                          ¦    ¦    ¦        0=не будет

                          ¦    ¦    L------> 1=один контроллер

                          ¦    ¦             0=каскад

¦    L-----------> игнорируется L----------------> 0=запуск запросов

фронтом

1=запуск запросов уровнем

     Бит 4, равный 1, определяет,  что выводится ICW1, а не OCW2 или OCW3.

     Бит 3 (LTIM), равный 0, задает запуск запросов фронтом, при этом действует описанная выше схема:  бит в IRR сбрасывается при установке соответствующего бита в ISR.

     Бит  2  (ADI)  используется  только  в  ПЭВМ на базе микро­процессоров Intel 8080/8085.

     Бит  1  (SNGL)  указывает   на  наличие  в  системе  одного контроллера   (если   равен   1)   или   каскада  из  нескольких контроллеров (если  равен 0). Если этот  бит равен 1, то ICW3 не выводится в процессе инициализации и следом за ICW2 сразу должно следовать ICW4.

     Бит 0 (IC4) определяет, будет ли выводиться ICW4. Если ICW4 не  выводится  (бит  0  =  0),  то оно автоматически заполняется нулями. В  описываемых ПЭВМ наличие  ICW4 обязательно, т. к. тип микропроцессора 8086/8088 задается в нем  значением 1 в одном из битов.

     Управляющее слово ICW2 задает  номер вектора прерывания для прерываний уровня 0 (например 8 для  IBM PC, у которых по уровню 0 происходят прерывания от таймера).  Так как вектора аппаратных прерываний  располагаются подряд  друг за  другом, вывод  в ICW2 значения  8 не  только задает  восьмой вектор  для таймера, но и девятый для  прерываний уровня 1,  десятый (0Ah) для  прерываний уровня 2 и т. д.

     Управляющее слово ICW3 выводится только при наличии каскада и имеет разный формат для  ведущего и ведомых контроллеров. ICW3 ведущего указывает, к каким входам  IR0 - IR7 подключены ведомые контроллеры, при этом соответствующие  биты устанавливаются в 1. Остальные биты при этом равны 0. ICW3 следующего вида:

A0   7    6    5    4    3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  1 ¦  0 ¦  0 ¦  0 ¦  1 ¦  0 ¦  0 ¦  1 ¦  0 ¦ L----+----+----+----+----+----+----+----+-----

задает,   что   в   каскаде   имеется   2  ведомых  контроллера, подключенных к входам IR1 и IR4.

     ICW3  ведомого  (подчиненного,  slave)  ПКП  в трех младших битах     задает  номер   уровня,  на   котором  работает  ведомый

контроллер.  Для ведомого  контроллера, работающего  на уровне 1 ICW3 будет выглядеть следующим образом:

A0   7    6    5    4    3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  1 ¦  0 ¦  0 ¦  0 ¦  0 ¦  0 ¦  0 ¦  0 ¦  1 ¦ L----+----+----+----+----+----+----+----+-----

Если ведомый контроллер работает на  уровне 4, то его ICW3 будет таким:

A0   7    6    5    4    3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  1 ¦  0 ¦  0 ¦  0 ¦  0 ¦  0 ¦  1 ¦  0 ¦  0 ¦ L----+----+----+----+----+----+----+----+-----

     Последнее   слово  инициализации   (ICW4)  имеет  следующий формат:

  A0   7    6    5   4    3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  1 ¦  0 ¦  0 ¦  0 ¦SFNM¦ BUF¦ M/S¦AEOI¦ mPM¦ L----+----+----+----+-T--+-T--+-T--+-T--+-T---

                     ¦    ¦    ¦    ¦    ¦

                     ¦    ¦    ¦    ¦    L---> 1=8088/8086

                     ¦    ¦    ¦    ¦         0=8080/8085

                     ¦    ¦    ¦    L--------> 1=AEOI

                     ¦    ¦    ¦              0=EOI

                     ¦    ¦    L-------------> 1=ведущий

                     ¦    ¦                   0=ведомый

                     ¦    ¦                 (только при BUF=1)

                     ¦    L------------------> 1=режим

                     ¦                          буферизации

L-----------------------> 1=специальный вложенный режим

     Бит 0  (mPM) определяет, с  каким микропроцессором работает ПКП (0 - 8080/8085, 1 - 8086/8088).

     Бит  1  (AEOI),  равный  1,  задает  режим  автоматического завершения обработки  прерывания, описанный выше.  Если этот бит равен  0,  действует  обычное  соглашение:  процедура  обработки аппаратного прерывания должна сама сбрасывать свой бит в ISR.

     Бит 2 (M/S) игнорируется, если бит 3 (BUF) = 0. При наличии одного контроллера  и BUF =  1 устанавливается в  1. При наличии каскада должен быть равен 1 только для ведущего контроллера.

     Бит  4  (SFNM)  устанавливает  специальный вложенный режим, применяемый  при  каскадировании   для  определения  приоритетов запросов от разных контроллеров (Special Fully Nested Mode).

     После инициализации  ПКП готов к работе  в заданном режиме. Для  изменения  режимов  работы,  задаваемых  при  инициализации требуется переинициализировать его заново.

В процессе работы с ПКП Вы можете без переинициализации:

- маскировать и размаскировать аппаратные прерывания;

     - изменять приоритеты уровней;

     - издавать  команду  завершения обработки  аппаратного пре­рывания;

- устанавливать/сбрасывать режим специальной маски;

     - переводить   контроллер  в  режим   опроса   и  считывать состояние регистров ISR и IRR; для этого Вам потребуется вывести в порты ПКП одно из трех слов рабочих приказов OCW1 - OCW3.

Формат первого слова рабочих приказов OCW1:

  A0   7    6    5   4    3    2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  1 ¦ M7 ¦ M6 ¦ M5 ¦ M4 ¦ M3 ¦ M2 ¦ M1 ¦ M0 ¦ L----+----+----+----+----+----+----+----+-----

     Единичное значение  одного из битов  М0 - М7  означает, что прерывания соответствующего уровня (IR0  - IR7) маскируются и не будут обрабатываться контроллером.

     Второе  слово  рабочих  приказов  (OCW2)  предназначено для вывода  команды  завершения   обработки  аппаратного  прерывания (EOI),  циклического  сдвига   и  явного  изменения  приоритетов уровней. Назначение битов OCW2 следующее:


  A0   7    6    5    4    3   2    1    0

-----T----T----T----T----T----T----T----T----¬

¦  0 ¦  R ¦ SL ¦ EOI¦  0 ¦  0 ¦ L2

←предыдущая следующая→
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 


Copyright © 2005—2007 «RefStore.Ru»