Параллельные интерфейсы ввода-вывода


Предыдущая | Следующая

Параллельные интерфейсы ввода-вывода
Последовательные интерфейсы применяются для передачи данных на любые расстояния, так как проще и дешевле передавать данные по одному проводнику, чем по восьми проводникам в параллельном интерфейсе. Однако на короткие расстояния целесообразнее использовать восемь проводников и передавать данные байтами, а не битами. Некоторые периферийные устройства, например принтер, имеют разъемы для последовательной и параллельной передачи.
Микросхемы компараторов, UART и ACIA рассчитаны на последовательный формат, а для параллельного нужны микросхемы параллельного ввода-вывода, которые называются PIA, CIA, PPI, РЮ и PDC. Они имеют небольшие различия, но функционируют почти одинаково. Необходимым элементом этих микросхем являются регистры-защелки для согласования различных скоростей работы компьютера и периферийного устройства.
Регистр-защелка А предназначена для данных, передаваемых от периферийного устройства в процессор (рис. 20.13), а регистр-защелка В — для данных, передаваемых в противоположном направлении (рис. 20.14). Например, когда периферийное устройство посылает байт данных по восьми линиям в компьютер, данные фиксируются в PIA. Готовый процессор считывает байт. После этого можно посылать следующий байт. Для передачи данных в другом направлении процессор посылает байт по шине данных в микросхему ввода-вывода, и байт фиксируется в регистре-защелке. Готовое устройство посылает сигнал, и процессор разрешает вывод данных из защелки. Байт по восьми проводникам передается от регистра-защелки в периферийное устройство. После этого процессор может послать следующий байт в регистр-защелку.
Чтобы процессор мог управлять передачами данных, он должен знать состояние защелок. Когда устройство посылает байт во входную защелку, процессор должен знать о наличии байта. В процессор необходимо послать сигнал, показывающий наличие данных, от бита состояния микросхемы ввода-вывода.
Когда процессор собирается послать байт в выходную защелку, он должен знать, пустая ли защелка. Второй бит состояния или прерывание должны сообщить процессору или о том, что защелка заполнена, и тогда процессор должен ожидать, или о том, что защелка пуста и байт можно посылать. Должны быть также биты состояния, сообщающие периферийному устройству, заполнена ли защелка или пуста.
Таким образом, микросхема параллельного ввода-вывода должна иметь защелку, через которую процессор считывает байты из устройства, защелку для записываемых процессором данных, регистр для хранения битов состояния и биты прерывания. Все эти регистры подключаются к внутренней шине данных, и процессор может их адресовать.
Если с 8-битовым периферийным устройством соединен специализированный компьютер, то в микросхеме ввода-вывода нужен один набор из восьми выходных контактов. Однако персональные компьютеры соединяются с разнообразными устройствами. Микросхема ввода-вывода должна иметь минимум два или три набора контактов портов параллельного вывода. Каждый порт имеет свои защелку и регистр состояния и прерывания. Однако к внутренней шине данных подключается только одна защелка, которая мультиплексируется регистрами портов.
Все регистры микросхемы ввода-вывода адресуемые, т.е. программируемые, что повышает гибкость и универсальность микросхемы. Очень удобно, что можно индивидуально запрограммировать направление каждой линии выходного порта. Некоторые линии в байте можно сделать входными, а другие выходными. По существу, каждый бит превращается в отдельный входной или выходной порт. Порты могут осуществлять последовательную и параллельную передачу в обоих направлениях.

Обычно в микросхеме ввода-вывода допускается программирование позитивной или негативной логики, формирование прерываний и генерирование импульсов. Для этого в микросхемах предусматриваются специальные регистры. Например, в некоторых микросхемах есть регистры для поддержания времени, а в других — регистры сдвига для последовательной передачи. Микросхемы ввода-вывода применяются с 8- и 16-битовыми процессорами. При увеличении числа линий данных допускается параллельное включение микросхем (рис. 20.15).

Периферийный интерфейсный адаптер. Типичным примером микросхем параллельного ввода-вывода служит микросхема 6821 периферийного интерфейсного адаптера (рис. 20.16). Ее восемь контактов D7 — DO подключаются к внутренней шине данных и процессору. Три входа выбора кристалла CSO, CS1 и *CS2 обычно соединяются со старшими линиями адреса, например А15—А12. В карте памяти микросхема PIA представлена четырьмя регистрами, которые выбираются входными сигналами RSO и RS1. На вход разрешения Е (контакт 25) подается сигнал синхронизации Фаза-2. Благодаря всем этим сигналам процессор может обращаться к любому из четырех регистров и передавать данные по восьми линиям. Направление передачи определяется сигналом на входной линии R/*W.

С другой стороны микросхемы есть два 8-битовых порта для периферийных устройств, которые называются РА7 —РАО и РВ7 —РВО (контакты 2—17). Любую из линий портов можно запрограммировать на ввод или вывод. Для работы на вывод необходимо загрузить единицу в соответствующий бит регистра направления данных DDR, а для работы на ввод загружается нуль.
Для сброса регистров подается низкий уровень на вход сброса * RESET. При этом все линии ввода-вывода становятся входными.
Имеются четыре линии управления СА1, СА2, СВ1 и СВ2, а таю^ Две линии прерывания *IRQA и *IRQB. Назначение этих линий рассматривается далее. ч ?
Действия регистров PIA. Микросхема PIA имеет две стороны А и В (рис. 20.х7;тч1Очдая сторона содержит три регистра: периферийных данных PDR, направления данных DDR и управления CR. Регистры PDR имеют по 8 бит и служат интерфейсом между PIA и периферийными устройствами.
Регистры направления данных (рис. 20.18) применяются только для определения направления каждой линии регистров PDR. Когда в бит регистра DDR помещается единица, соответствующий бит регистра PDR становится выходным, а при загрузке нуля — входным.
Регистры управления CR (рис. 20.19) позволяют процессору управлять функциями четырех линий управления СА1, СА2, СВ1 и СВ2. Кроме того, регистр CR управляет состояниями линий прерывания *IRQA и *IRQB, которые подключаются к процессору.
Бит 2 регистра управления выполняет еще одну важную функцию. Ранее упоминалось, что для микросхемы PIA отводится четыре адреса, а в ней имеется шесть регистров. Объясняется это тем, что регистры PDR и DDR разделяют один адрес. При первом включении микросхемы PIA бит 2 регистра управления содержит нуль и адрес относится к регистру DDR. После этого регистр DDR программируется для управления направлением бит регистра PDR.
После определения направления регистра PDR функция регистра DDR закончена и он больше не нужен. При этом бит 2 регистра управления устанавливается в единицу и схемы адресации переключаются с регистра DDR на регистр PDR. Адрес «привязан» к регистру PDR до тех пор, пока бит 2 регистра управления содержит единицу.
Регистры управления. Регистры PDR и DDR довольно просты. Регистры PDR и регистр шины данных D7 — DO соединяются и действуют как мультиплексор для связи D7 —DO с портами РА7 —РАО и РВ7 —РВО. Для взаимодействия процессора с устройствами регистр DDR просто задает направление для каждого бита данных.
Восемь битов регистра управления выполняют более сложные функции. Регистр управления обеспечивает автоматическую передачу данных и разрешает возникающие при этом небольшие трудности. Формат регистра управления CR представлен на рис. 20.19.
Биты 0 и 1 называются управлением СА1 и СВ1; они определяют, должен ли формироваться низкий уровень на выходе *IRQ для прерывания процессора. Чтобы прерывание возникло, должны произойти следующие события. Прежде всего входная линия воспринимает нуль. Затем бит 0 регистра CR сбрасывается в нуль. Эти два события устанавливают в единицу бит 7 флажка состояния линии IRQ1. После этого, если бит 0 оказывается в состоянии нуль, на выходе *IRQ формируется низкий уровень и прерывает процессор.

Второй способ формирования прерывания на линии *IRO заключается в следующем. Прежде всего входная линия СА1 воспринимает единицу. Затем бит 1 регистра CR устанавливается в единицу. Эти два события устанавливают в единицу бит 7 флажка IRQ1. После этого, если бит 0 оказывается в единице, на выходе *IRO формируется низкий уровень и прерывает процессор. В любой из двух рассмотренных ситуаций, если бит 0 содержит нуль, прерывания процессора не возникает.
Таким образом, бит 0 регистра CR является битом маски прерывания IRO1. Если бит 0 содержит нуль, то бит 7 IRO1 замаскирован, и даже если бит 7 устанавливается в единицу, на выходе *IRQ, сохраняется высокий уровень и прерывания процессора не происходит. Только когда бит 0 маски установлен в единицу и бит 7 IRO1 устанавливается в единицу, на выходе *IRQ формируется низкий уровень и прерывает процессор.
Бит 2 называется битом DDR и служит третьим сигналом выбора регистра. Два контакта RS0 и RS1 подключаются к линиям шины адреса, например АО и А1, и могут адресовать четыре регистра. Однако в микросхеме PIA имеется шесть регистров. Чтобы «вместить» шесть регистров в четыре адреса, регистры DDR и PDR объединяются в две пары и каждую пару можно выбирать одним адресом. Каждый из регистров управления имеет свой адрес.

В одной операции адресации процессор может локализовать пару регистров DDR — PDR или один регистр CR. Для выбора из пары DDR —PDR одного регистра нужен третий бит, которым и служит бит 2 регистра CR. Когда необходимо адресовать регистр DDR, бит 2 сбрасывается в нуль, а для адресации PDR бит 2 устанавливается в единицу. Бит 2 можно установить в единицу или сбросить в нуль, когда процессор записывает в регистр CR.

Биты 3, 4 и 5 регистра CR управляют сигналами на линиях СА2 или СВ2. Эти линии можно превратить во входные для прерывания процессора от микросхемы PIA или в выходные для вывода данных в периферийное устройство. Функции сигналов на этих линиях определяют биты 3, 4 и 5 регистра управления CR.
Бит 5 управляет направлением линий СА2 или СВ2. Если бит 5 в одном из регистров управления установлен в единицу, соответствующая линия превращается в выходную и может передавать данные в периферийное устройство. Когда бит 5 сбрасывается в нуль, соответствующая линия превращается во вход прерывания.
Когда бит 5 содержит нуль и линия СА2 стала входом прерывания, биты 3 и 4 определяют, как обрабатывается прерывание. Биты 3 и 4 работают с любым прерыванием, сигнал которого может быть подан на линию СА2 или СВ2. Если бит 4 содержит нуль и поступает прерывание в виде перехода от высокого уровня к низкому, то бит б IRQ2 устанавливается в единицу. Если бит 4 содержит единицу и поступает прерывание в виде перехода от низкого уровня к высокому, бит 6 IRQ2 также устанавливается в единицу. Любые другие комбинации входов СА2 или СВ2 и бита 4 не влияют на состояние IRO2.
Бит 3 служит маской данного прерывания. Если бит 3 содержит единицу, то при установке в единицу бита б IRQ2 формируется низкий уровень на выходе *IRQ и прерывает процессор. Когда же бит 3 маски сброшен в нуль, даже при установке в единицу бита б на выходе *irq сохраняется высокий уровень и прерывание процессора не происходит.

 

 Поиск и устранение неисправностей в персональных компьютерах