Программирование контроллера приоритетных прерываний

Создание и компиляция программ на ассемблере. Структура программ, использование специальных директив резервирования и инициализации данных. Организация ввода-вывода на ассемблере и организация вычислений. Команды передачи управления и обработки строк.

Рубрика Программирование, компьютеры и кибернетика
Вид методичка
Язык русский
Дата добавления 02.12.2009
Размер файла 104,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

В процессе загрузки компьютера и в дальнейшем во время работы контроллер прерываний настраивается на работу в одном из шести режимов:

1.Режим фиксированных приоритетов (Fixed Priority, Fully Nested Mode).

В этом режиме контроллер находится сразу после инициализации. Запросы прерываний имеют жесткие приоритеты от 0 до 7 (0 - высший) и обрабатываются в соответствии с приоритетами. Прерывание с меньшим приоритетом никогда не будет обработано, если в процессе обработки прерываний с более высокими приоритетами постоянно возникают запросы на эти прерывания.

2. Автоматический сдвиг приоритетов (Automatic Rotation). Режим циклической обработки прерываний.

В этом режиме дается возможность обработать прерывания всех уровней без их дискриминации. Например, после обработки прерывания уровня 4 ему автоматически присваивается низший приоритет, при этом приоритеты для всех остальных уровней циклически сдвигаются и прерывания уровня 5 будут иметь в данной ситуации высший приоритет и, следовательно, возможность быть обработанными.

3. Программно-управляемый сдвиг приоритетов (Specific Rotation).

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

4 Автоматическое завершение обработки прерывания (Automatic End Of Interrupt, AEOI).

В обычном режиме работы процедура обработки аппаратного прерывания должна перед своим завершением очистить свой бит в ISR специальной командой, иначе новые прерывания не будут обрабатываться ПКП. В режиме AEOI нужный бит в ISR автоматически сбрасывается в тот момент, когда начинается обработка прерывания нужной процедурой обработки и от нее не требуется издавать команду завершения обработки прерывания (EOI). Сложность работы в данном режиме обуславливается тем, что все процедуры обработки аппаратных прерываний должны быть повторно входимыми, т. к. за время их работы могут повторно возникнуть прерывания того же уровня.

5. Режим специальной маски (Special Mask Mode).

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

6. Режим опроса (Polling Mode).

В этом режиме аппаратные прерывания не происходят автоматически. Появление запросов на прерывание должно определяться считыванием IRR. Данный режим позволяет так же получить от ПКП информацию о наличии запросов на прерывания и, если запросы имеются, номер уровня с максимальным приоритетом, по которому есть запрос

Программирование контроллера прерываний i8259A

Для вывода информации в ПКП используются 2 порта ввода-вывода. Порт с четным адресом (обычно это порт 20h) и порт с нечетным адресом (обычно 21h). Через эти порты могут быть переданы 4 слова инициализации (Initialization Control Word, ICW1 - ICW4), задающие режим работы ПКП, и 3 операционных управляющих слова (слова рабочих приказов, Operation Control Words, OCW1 - OCW3).

В порт с четным адресом выводятся ICW1, OCW2 и OCW3.

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

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

Для инициализации и управления работой ведомого контроллера используются адреса A0h, A1h. В порт с адресом A0h выводятся ICW1, OCW2 и OCW3. Порт с адресом A1h используется для вывода ICW2, ICW3, ICW4 и OCW1.

При наличии в системе ведомого контроллера слово ICW3 для контроллеров ПКП обязательно.

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

Биты ICW1

Назначение и содержание

0

1 - управляющее слово ICW4 будет присутствовать в данной последовательности приказов

1

0 - каскадное подключение ПКП (ICW3 будет в последовательности)

1 - одиночное подключение ПКП (ICW3 не будет)

2

0 - не используется

3

0 - прерывание по перепаду сигнала

4

1 - признак ICW1

5..7

0 - не используется

ICW2 - определение базового адреса:

Биты ICW2

Назначение и содержание

0..2

0 - не используется

3..7

Бит для задания номера базового вектора

Управляющее слово ICW2 задает номер вектора прерывания, процедуры обработки прерываний, для аппаратного прерывания irq0. Вектора обработки аппаратных прерываний располагаются последовательно с адреса 08h, загружаемого в начале работы процессора. Некорректное изменение номера вектора приведет к сбою всей системы.

Формат ICW3 для ведущего контроллера следующий:

Биты ICW3

Назначение и содержание

0..7

1- если ко входу irqN подключен ведомый

0- если ко входу irqN подключено внешнее устройство

Формат ICW3 для ведомого контроллера следующий:

Биты ICW3

Назначение и содержание

0..3

Задает номер уровня, на котором работает ведомый контроллер

4..7

0 - не используется

Формат ICW4:

Биты ICW4

Назначение и содержание

0

Тип микропроцессора: 0 - i8080; 1 - i80x86, Pentium

1

1- режим автоматического завершения обработки прерывания, описанный выше

0- действует обычное соглашение: процедура обработки аппаратного прерывания должна сама сбрасывать свой бит в ISR.

2

1 - данный контроллер ведущий,

0 - данный контроллер ведомый

3

1 - системная шина буферизована

0 - системная шина не буферизована

4

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

5..7

0

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

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

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

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

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

- переводить контроллер в режим опроса и считывать состояние регистров ISR и IRR.

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

Формат OCW1 - управление регистром масок IMR:

Биты ОCW1

Назначение и содержание

0..7

0 - разрешить прерывания уровня N

1 - запретить прерывания уровня N

Формат OCW2 - управление приоритетом:

Биты ОCW2

Назначение и содержание

0..2

000-nnn - код уровня запроса irq для действий, определяемых разрядами 5-7

3..4

00 - признак OCW2

5

0- режим автоматического EOI

1- режим неавтоматического EOI

6..7

Задают операцию в сочетании с 5-м битом:

000 - автоматический режим приоритетов с автоматическим EOI

001 - сброс бита с максимальным приоритетом в ISR

011 - сброс бита в ISR для уровня с кодом nnn

100 - установка режима циклической смены приоритета при автоматическом EOI

101 - установка режима циклической смены приоритета при неавтоматическом EOI

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

Формат OCW3 - общее управление контроллером:

Биты ОCW3

Назначение и содержание

0..1

10 - прочитать содержимое IRR (следующей командой из порта 020h);

11- прочитать содержимое ISR (следующей командой из порта 020h);

Содержимое IМR доступно постоянно как содержимое порта 021h.

2

1 - переводит контроллер в режим опроса

3..4

Признак OCW3

5..6

11 - установить режим специального маскирования

10 - сбросить режим специального маскирования

00 или 01 - ничего не менять

7

0

Распределение и приоритеты аппаратных прерываний в архитектуре АТ

Уровень

Контроллер

Источник прерываний

Приоритет уровня

Irq0

Ведущий

Таймер

2

Irq1

Ведущий

Клавиатура

3

Irq2

Ведущий

Выход INT ведомого

Irq8

Ведомый

Часы реального времени

4

Irq9

Ведомый

Вход для устройства расширения

5

Irq10

Ведомый

Вход для устройства расширения

6

Irq11

Ведомый

Вход для устройства расширения

7

Irq12

Ведомый

Вход для устройства расширения

8

Irq13

Ведомый

Ошибка сопроцессора

9

Irq14

Ведомый

Контроллер жесткого диска

10

Irq15

Ведомый

Вход для устройства расширения

11

Irq3

Ведущий

Вход для устройства расширения (последовательный порт СОМ2)

12

Irq4

Ведущий

Вход для устройства расширения (последовательный порт СОМ1)

13

Irq5

Ведущий

Вход для устройства расширения (параллельный порт LPT2)

14

Irq6

Ведущий

Контроллер гибкого диска

15

Irq7

Ведущий

Вход для устройства расширения (параллельный порт LPT1)

16

Программирование контроллера прямого доступа памяти

Программирование контроллера ПДП

Цель работы:

Исследование принципа программного управления микросхемы, контроллера прямого доступа памяти (ПДП) i8237А с помощью ПК, исследование различных режимов работы ПДП.

Прямой доступ к памяти - DMA (Direct Memory Access) метод обмена данными периферийного устройства с памятью без участия процессора. В режиме прямого доступа к памяти процессор инициализирует контроллер прямого доступа к памяти - задает начальный адрес, счетчик и режим обмена, после чего освобождается. Сам обмен производит контроллером ПДП, что обеспечивает высокоскоростной обмен данными между устройствами ввода-вывода и ОЗУ без использования центрального процессора, это позволяет освободить процессор для выполнения вычислений параллельно с обменом и независимо от него. Наиболее часто возможности ПДП используются при работе с дисковыми накопителями, однако реализовано использование ПДП рядом других устройств. Ощутимые преимущества дает использование ПДП в процессе обмена с устройствами, принимающими или передающими данные достаточно большими порциями с высокой скоростью.

Четырехканальный контроллер ПДП i8237А имеет 16-разрядные регистры адреса и счетчики, что обеспечивает возможность программирования передачи блока данных размером до 64 Кбайт. Для обеспечения доступности адресного пространства памяти размером в 1 Мбайт применили внешние 4-разрядные регистры страниц DMA, отдельные для каждого канала. В этих регистрах хранятся биты адреса А[19:16], а битами А[15:0] управляет контроллер.

Микросхема i8237А допускает каскадирование при довольно гибком конфигурировании.

Принципы работы контроллера ПДП
В работе ПДП различаются 2 главных цикла: цикл ожидания (Idle cycle) и активный цикл (Active cycle). Каждый цикл подразделяется на ряд состояний, занимающих по времени один период времени (тик). Из цикла ожидания контроллер может быть переведен в состояние программирования (Program Condition) путем подачи на вход RESET сигнала высокого уровня, длительностью не менее 300 нc и следующей за ним подачи сигнала низкого уровня (уровня 0) на вывод CS (Chip Select). В состоянии программирования контроллер будет находится до тех пор, пока на выводе CS сохранится сигнал низкого уровня. В процессе программирования контроллеру задаются:
- начальный адрес памяти для обмена;
- уменьшенное на единицу число передаваемых байтов;
- направление обмена;
- требуемые режимы работы (разрешить или запретить циклическое изменение приоритетов, автоинициализацию, задать направление изменения адреса при обмене и т. д.).

Загрузка 16-разрядных регистров контроллера осуществляется через 8-разрядные порты ввода-вывода. Перед загрузкой первого (младшего) байта должен быть сброшен (очищен) триггер-защелка (триггер первый/последний, First/Last flip-flop), который изменяет свое состояние после вывода в порт первого байта и таким образом дает возможность следующей командой вывода в тот же порт загрузить старший байт соответствующего регистра.

Запрограммированный канал должен быть демаскирован (бит маски канала устанавливается при этом в 0), после чего он может принимать сигналы «Запрос на ПДП», генерируемые тем внешним устройством, которое обслуживается через этот канал. Сигнал «Запрос на ПДП» может быть также инициирован установкой в 1 бита запроса данного канала в регистре запросов контроллера. После появления сигнала запроса контроллер входит в активный цикл, в котором выполняется обмен данными. Обмен может осуществляется в одном из четырех режимов:

1. Режим одиночной передачи (Signle Transfer Mode).

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

2. Режим блочной передачи (Block Transfer Mode).

В этом режиме наличие сигнала запроса требуется только до момента выдачи контроллером сигнала «Подтверждение запроса на ПДП» (DACK), после чего шина не освобождается вплоть до завершения передачи всего блока.

3. Режим передачи по требованию (Demand Transfer Mode).

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

4. Каскадный режим (Cascade Mode).

Режим позволяет включить в подсистему ПДП более одного контроллера в тех случаях, когда недостаточно четырех каналов ПДП. В этом режиме один из каналов ведущего контроллера используется для каскадирования с контроллером второго уровня. Для работы в каскаде сигнал HRQ («Запрос на захват») ведомого контроллера подается на вход DREG («Запрос на канал ПДП») ведущего, а сигнал DACK («Подтверждение запроса») ведущего подается на вход HDLA («Подтверждение захвата») ведомого.

Такая схема подключения аналогична подключению ведущего (первого) контроллера к микропроцессору, с которым он обменивается сигналами HRQ и HDLA.

Типы возможных режимов передач

1. Передача память-память (Memory-to-memory DMA)

Используется для передачи блока данных из одного места памяти в другое. Исходный адрес определяется в регистрах нулевого канала, выходной - в регистрах первого канала. Число циклов обмена (число байт минус 1) задается в регистре числа циклов канала 1. Передача происходит с использованием рабочего регистра контроллера в качестве промежуточного звена для хранения информации. При передачe память-память может быть задан специальный режим фиксации адреса (Address hold), при котором значение текущего адреса в регистре нулевого канала не изменяется, при этом весь выходной блок памяти заполняется одним и тем же элементом данных, находящимся по заданному адресу.

2. Автоинициализация (автозагрузка, Autoinitialization)

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

3. Режим фиксированных приоритетов

В этом режиме канал 0 всегда имеет максимальный приоритет, а канал 3 - минимальный. Это означает, что любая передача по каналу с более высоким приоритетом будет выполняться раньше, чем по каналу с более низким приоритетом.

4. Циклический сдвиг приоритетов

Позволяет избежать «забивания» шины одним каналом при одновременной передаче по нескольким каналам. Каждому каналу, по которому прошла передача, автоматически присваивается низший приоритет, после чего право на передачу получает канал с наивысшим приоритетом, для которого передача в данный момент возможна. Таким образом, если в начале работы распределение приоритетов было обычным (канал 0 - наивысший), и пришли сигналы запроса на ПДП по 1-му и 2-му каналам, то сначала будет выполняться передача по первому каналу, затем он получит низший приоритет (а канал 2, соответственно, высший, т. к. сдвиг приоритетов циклический) и передача выполнится по 2-му каналу, который затем получит низший приоритет, а высший приоритет получит, соответственно, канал 3, который и будет обладать преимущественным правом на передачу.

5. Сжатие времени передачи (Compressed transfer timing).

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

Распределение каналов прямого доступа

Прямой доступ к памяти был использован еще в PC/XT, где для этого применялась микросхема четырехканального контроллера 8237А.

Из четырех каналов DMA XT на шине ISA доступны только три (1, 2 и 3). Канал 0 используется для регенерации динамической памяти, и от него на шину ISA выводится только сигнал подтверждения DACKO#, он же REFRESH#. Этот сигнал может использоваться для регенерации динамической памяти, если таковая используется на платах адаптера. Адрес регенерируемой строки берется с линий адреса шины ISA. Каналы 1, 2 и 3 обеспечивают побайтную передачу данных и называются 8-битными каналами DMA.

В архитектуре AT подсистему DMA расширили, добавив второй контроллер 8237А. Его подключили к шине адреса со смещением на 1 бит, и его 16-битные регистры адреса способны управлять линиями адреса А[1б:1], младший бит адреса АО всегда нулевой. Таким образом, второй контроллер может обеспечивать передачу данных только пословно (по два байта), за что его каналы и названы 16-битными. За один сеанс второй контроллер способен передать массив до 64К 16-разрядных слов. Регистры страниц для всех каналов DMA у AT расширены до 8 бит, что делает доступной для любого канала область памяти размером 16 Мбайт (0-FFFFFFh). Стандартное назначение каналов приведено в табл. 1.

Кроме увеличения числа каналов в AT ввели дополнительную возможность управления шиной ISA - Bus-Mastering - со стороны адаптера. Это внешнее управление шиной опирается на контроллер DMA, выполняющий в данном случае функции арбитра шины. Для получения управления шиной внешний Bus-Master посылает запрос по линии DRQx (только для каналов 5-7) и, получив подтверждение DACKx, устанавливает сигнал MASTERS. Теперь шиной ISA управ-ляет он, но формально он не имеет права занимать шину больше чем на 15 мкс за сеанс. В противном случае нарушится регенерация памяти (позже собьется системное время, но при нарушении регенерации эти «мелочи» уже не важны). Интеллектуальный контроллер может выполнять более эффективные процедуры обмена, чем стандартный DMA, например:

Scatter Write -- «разбросанная» запись в несколько блоков памяти.

Gather Read - чтение со сбором данных из нескольких блоков памяти.

Обмен нечетным количеством байт и (или) с нечетного адреса по 16-бит-ному каналу.

Управление шиной используют высокопроизводительные адаптеры SCSI и локальных сетей, а также интеллектуальные графические адаптеры. Однако архитектурой шины доступное им пространство памяти ограничено областью 16 Мбайт, что по нынешним меркам маловато. «Заботливые» операционные системы (например, Novell NetWare) для таких адаптеров позволяют под буферы резервировать область в пределах младших 16 Мбайт.

На шине EISA DMA-каналы могут работать в 8-, 16- и 32-битном режиме, они могут использовать все 32 разряда шины адреса -- иметь доступ ко всей памяти компьютера. Каждый канал может программироваться на 1 из 4 типов цикла передачи:

Compatible -- полностью совместим с ISA.

Type A -- сокращенный на 25% цикл: время одиночного цикла 875 нс, в блочном режиме время цикла 750 нс. Работает почти со всеми ISA-адап-терами с большей скоростью.

Type В - сокращенный на 50% цикл (750/500 нс на цикл), работает с большинством EISA-адаптеров и некоторыми ISA. Этот тип цикла возмо-жен только с памятью, непосредственно доступной контроллеру шины EISA (памятью на адаптерах EISA, а также системной в случае, если EISA является основной шиной системной платы). Если декодированный адрес памяти относится к 8/16-битной памяти ISA, то контроллер DMA EISA автоматически переводится в режим Compatible.

Type С (Burst Timing) -- сокращенный на 87,5% цикл, ориентированный на пакетный режим передач. Работает со скоростными EISA-адаптерами и при обмене 32-битных устройств с 32-битной памятью позволяет разви-вать скорость обмена до 33 Мбайт/с.

В PCI-системах для обмена с устройствами системной платы (Fast ATA-2 или E-IDE-порты) возможно использование DMA Type F, при котором между соседними циклами интервал может не превышать 3 тактов шины (360 нс). Для разгрузки системной шины используется дополнительный 4-байтный буфер. Режим F может работать только в режиме одиночной передачи или по запросу и только с инкрементом (увеличением) адреса. На самой шине PCI адаптеры могут использовать режим прямого управления шиной, для чего имеется специальный протокол арбитража, который к контроллерам DMA отношения уже не имеет.

Таблица 1. Стандартные каналы прямого доступа к памяти.

Номер канала DMA#

0

1

2

3

4

5

6

7

Стандартное назначение

XT

MRFR*

-

FDD

HDD

Отсутствуют

AT

-

SDLC*

FDD

HDD*

Каскад

-

-

-

Разрядность, байт

1

2 с четного адреса

Макс. размер блока

64 Кбайта

128 Кбайт, четный

Граница блоков

Кратна 1000h

Кратна 2000h

Регистр страниц

4 бит А16-А19

7 бит А17-А23

Адреса регистров:

страниц

087

083

081

082

08F

08В

089

087

нач. адреса (W)

текущ. адреса (R)

000

002

004

006

0С0

0С4

0С8

0СЕ

нач. счетчика (W)

текущ. счетчика (R)

001

003

005

007

0С2

0С6

0СА

0СЕ

*SDLC-адаптер устанавливается редко.

HDD-контроллер в AT DMA обычно не использует.

Канал 0 в XT используется для регенерации памяти (MRFR).

Канал 4 доступен только в PS/2 МСА.

Программное управление контроллером ПДП

Программное управление контроллером ПДП осуществляется через порты ввода-вывода. Доступ к каждому регистру контроллера может быть осуществлен через свои порты ввода-вывода. Распределение адресов и описание внутренних регистров первого и второго контроллера ПДП приведено в таблице 2.

Таблица 2. Регистры контроллера ПДП 8237А.

8237#1

8237#2

R/W

Назначение регистров

008h

0D0h

W

Регистр команд (Command Register)

Биты: 7=1 - активный уровень DACK - высокий

6=1 - активный уровень DRQ - высокий

5=1 - режим расширенной записи

4=1 - циклический приоритет

3=1 - укороченный цикл обмена

2=1 - запрет работы контроллера

1=1 - фиксация адреса 0 канала

0=1 - передача память-память (в PC не используется)

008h

0D0h

R

Регистр состояния каналов (Status Register)

Биты 7..4 запросы каналов 0-3

Биты 3..0 завершение цикла каналов 0-3

009h

0D2h

W

Регистр запросов (Request Register)

Биты 7..3 - не используются

2=1 - установка/ =0 - сброс бита запроса

1..0 - выбор канала (00=0, 01=1, 10=2, 11=3)

00Ah

0D4h

W

Регистр маски - Single Mask Bit Register

Биты 7..3 - не используются

2=1 - установка/ =0 - сброс бита маски

1..0 - выбор канала (00=0, 01=1, 10=2, 11=3)

00Bh

0D6h

W

Регистр режима работы канала (Mode Register)

Биты 7..6 - режим передачи (00- по запросу, 01- одиночный, 10- блочный, 11- каскадирование)

5=1 - инкремент / =0 - декремент адреса

4=1 - разрешение автоинициализации

3..2 - тип передачи (00- холостой, 01-запись, 01- чтение, 11- не исп.)

1..0 - выбор канала (00=0, 01=1, 10=2, 11=3)

00Ch

0D8h

W

Сброс триггера младшего/старшего байта - Clear Byte Pointer Flip/Flop

00Dh

0DAh

W

Общий сброс 8237А - Master Clear (вывод любого байта в регистр вызывает сброс)

00Eh

0DCh

W

Общий сброс масок всех каналов - Clear Mask Register (вывод любого байта в регистр вызывает сброс)

00Fh

0DEh

W

Регистр масок всех каналов - All Mask Register Bits

Биты 7..4 - не используются

3..0 - маски каналов 0-3 (0-канал разрешен, 1- маскирован)

Регистры управления каналами второго контроллера

-

0C0h, 0C4h, 0C8h, 0CCh

W

Запись начального адреса в регистр начального адреса (Base Address Register) и регистр текущего адреса канала (Current Address Register) 4,5,6,7

-

0C0h, 0C4h, 0C8h, 0CCh

R

Чтение начального адреса из регистра начального адреса канала (Current Address Register) 4,5,6,7

-

0C2h, 0C6h, 0CAh, 0CEh

W

Запись в регистр начального счетчика циклов (Base Word Count Register) и в регистр текущего счетчика циклов канала (Current Word Count Register) 4,5,6,7

-

0C2h, 0C6h, 0CAh, 0CEh

R

Чтение текущего значения из регистра текущего счетчика циклов канала (Current Word Count Register) 4, 5, 6, 7

-

089h, 08Bh, 08Ah, 08Fh

W

Задание номера страницы для канала 6,5,7,4

Каналы 4 - 7 предназначены для обмена 16-разрядными словами. В связи с этим возникает ряд отличий в работе с этими каналами:

- бит 0 в данных, заносимых в регистры начального и текущего адреса, всегда подразумевается равным 0, поэтому через эти регистры передаются биты 1 - 16 полного 23-разрядного адреса (а не биты 0 - 15 полного 20-разрядного адреса, как это реализовано на ХТ - подобных ПЭВМ). По этой же причине в страничные регистры каналов 4 - 7 заносятся биты 17 - 23 полного адреса, а не биты 16 - 23, как это надо сделать при работе с каналами 0 - 3;

- поскольку передача осуществляется 16-разрядными словами, в регистры текущего и начального счетчика циклов заносится не число байт, а число слов, уменьшенное на единицу;

- размеры страниц памяти, в пределах которых возможен обмен в течение одной передачи, составляют 2000h байтов.

Описание регистров

Регистр начального адреса (Base Address Register). В этом регистре задается стартовый адрес ОЗУ, с которого начинается передача. Регистр содержит 16 разрядов и определяет адрес внутри заданной страницы памяти размером 64К. Задание номера страницы памяти осуществляется через специальные страничные регистры (Page Registers), поддерживаемые внешней логикой.

Каждый канал ПДП имеет свой регистр начального адреса и страничный регистр. Такое деление памяти на страницы не позволяет осуществить обмен с блоком памяти, находящимся на пересечении двух страниц. Каждая страница начинается с сегментного адреса, кратного 1000h (0, 1000h, 2000h, ..., 9000h).

Регистр начального счетчика циклов (Base Word Count Register)

В этом регистре задается начальное число циклов передачи для программируемого канала. Фактическое число передаваемых во время работы ПДП элементов данных на единицу превышает заданное число циклов, т. е. если Вы задаете 100 циклов передачи, а размер элемента будет равен 1 байту, то за сеанс обмена будет передан 101 байт информации.

Регистр текущего адреса (Current Address Register)

Начальное значение заносится в этот регистр одновременно с регистром начального адреса. В дальнейшем в ходе передачи значение текущего адреса автоматически увеличивается или уменьшается (конкретное направление изменения задается при программировании в регистре режима). Если разрешена автоинициализация, то после окончания передачи в регистр автоматически устанавливается значение из регистра начального адреса.

Регистр текущего счетчика циклов (Current Word Count Register)

Регистр содержит текущее значение счетчика циклов (число оставшихся циклов передачи). Отображаемое в нем число циклов всегда на единицу меньше числа еще не переданных элементов данных, так как изменение значения в этом регистре производится в конце цикла передачи, уже после фактической передачи элемента данных, а конец передачи фиксируется в момент переполнения счетчика (изменение его значения с 0 на 0FFFFh).

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

Регистр режима (Mode Register)

Данный регистр задает режимы работы своего канала контроллера.

Регистр команд (Command Register).

Этот 8-битный регистр управляет работой контроллера. Он программируется, когда контроллер находится в состоянии программирования и очищается командами сброса «Reset» и «Master Clear».

Регистр состояния (Status Register)

Регистр отражает текущее состояние запросов и передач по всем четырем каналам. Биты 0 - 3 устанавливаются в единицу после завершения передачи по каналам 0 - 3 (бит 0 - канал 0, бит 1 - канал 1 и т.д.), если не задан режим автоинициализации. Эти биты очищаются после команды сброса контроллера и после каждой операции считывания состояния из регистра состояния. Биты 4 - 7 указывают по какому из каналов 0 - 3 активен в текущий момент сигнал запроса на ПДП.

Регистр масок (Mask Register)

Каждый бит этого 4-битового регистра маскирует/демаскирует свой канал ПДП, при этом значение 1 маскирует канал, значение 0 демаскирует канал и разрешает прием сигнала запроса по этому каналу.

Регистр запросов (Request Register)

Сигнал запроса на ПДП (DREQ) может быть издан как обслуживаемым устройством, так и программно. Для программного издания сигнала запроса по одному из 4-х каналов ПДП необходимо установить соответствующий бит в 4-разрядном регистре запросов. Запрос на ПДП может быть отменен записью нулевого значения в соответствующий бит регистра. Бит запроса очищается автоматически при окончании передачи по данному каналу. Все биты запросов очищаются при сбросе контроллера. Для того, чтобы воспринимать программные запросы на ПДП, канал должен находится в режиме блоковой передачи.

Литература

1. Уокерли Дж. Архитектура и программирование микроЭВМ: в 2-х кн./ пер. с англ. - М.: Мир, 1984.

2. Ассемблер. Юров. В. - СПб.: Питер, 2001. - 624 с.:ил.

3. Ассемблер: практикум. Юров. В. - СПб.: Питер, 2001. - 400 с.:ил.


Подобные документы

  • Программирование оконных Windows-приложений, средства TASM для их разработки. Углубленное программирование на ассемблере для Win32, минимальная программа. Организация высокоуровневого консольного ввода-вывода. Наборы символов и функции Wlndows APL.

    курсовая работа [51,6 K], добавлен 23.06.2015

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

    лабораторная работа [25,2 K], добавлен 03.03.2009

  • Введение в API-программирование. Структура API-программ. Организация ввода-вывода в консольном приложении Windows. Организация низкоуровнего консольного ввода-вывода. Расширенная поддержка клавиатуры в консоли. Поддержка работы с мышью в консоли.

    курсовая работа [91,0 K], добавлен 10.02.2015

  • Ассемблер как символический аналог машинного языка. Архитектура микропроцессора: организация памяти, способы адресации операндов, правила использования регистров. Текст программы. Этапы программирования на ассемблере, алгоритмы выполнения задач.

    контрольная работа [515,1 K], добавлен 20.01.2016

  • Основные преимущества модульного программирования. Выделение процедуры: ввода массива с консоли, вывода на экран массива, информации об авторе и условии решенной задачи до обработки и после обработки. Иерархия процедур, характеристика назначения модулей.

    реферат [2,3 M], добавлен 29.01.2016

  • Моделирование цифровых узлов комбинационного и последовательностного типа electronic work bench. Основы программирования на Ассемблере: арифметические команды, манипуляции над битами, строковые операции. Программирование с использованием пакета MASM.

    отчет по практике [1,9 M], добавлен 10.01.2015

  • Использование пользовательских регистров. Регистры общего назначения. Элементарные и базовые типы данных. Язык микроопераций, ассемблер. Директивы резервирования памяти. Система команд, организация вычислений. Сложные структуры данных. Схемы ввода-вывода.

    курс лекций [280,7 K], добавлен 02.12.2009

  • Проектирование механизма обработки прерываний. Контроллер прерываний Intel 82C59A. Ввод-вывод по прерыванию. Программируемый контроллер интерфейса Intel 82C55A. Роль процессора в обработке прерывания ввода-вывода. Обзор алгоритма обработки прерывания.

    контрольная работа [8,0 M], добавлен 19.05.2010

  • Аналитический обзор существующих параллельных интерфейсов. Разработка лабораторного стенда и алгоритмов подпрограмм обмена информацией. Создание программ драйвера ИРПР. Команды микропроцессора, алгоритмы подпрограмм инициализации, ввода и вывода символа.

    курсовая работа [255,2 K], добавлен 10.07.2017

  • Рассмотрение правил записи, способов ввода и вывода, использования функций обработки символьных данных в Pascal. Описание алгоритмизации и программирования файловых структур данных, проектирования структуры файла. Ознакомление с работой данных массива.

    курсовая работа [336,2 K], добавлен 27.06.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.