Введение
Микропроцессорный контроллер портов ввода-вывода IC MOS Technology 6522 Versatile Interface Adapter (VIA) — это интегральная схема, разработанная и производившаяся компанией MOS Technology как контроллер портов ввода-вывода для семейства микропроцессоров 6502. Он обеспечивает два двунаправленных 8-битных параллельных порта ввода-вывода, два 16-битных таймера (один из которых также может работать как счетчик событий) и 8-битный регистр сдвига для последовательной связи или преобразования данных между последовательной и параллельной формами. Направление каждого бита двух портов ввода-вывода может быть запрограммировано индивидуально. Помимо производства компанией MOS Technology, 6522 также выпускался другими компаниями, включая Rockwell и Synertek. 6522 широко использовался в компьютерах 1980-х годов, особенно в компьютерах Commodore, и являлся центральным элементом в конструкциях Apple III, Oric 1 и Oric Atmos, BBC Micro, Victor 9000/Sirius 1 и Apple Macintosh. Видеоигровые платформы, такие как Vectrex, также использовали 6522, как и цифровая приборная панель Corvette, выпускавшаяся с 1984 по 1989 год. Высокоскоростная CMOS-версия, W65C22, производится компанией Western Design Center (WDC).
The MOS Technology 6522 Versatile Interface Adapter (VIA) is an integrated circuit that was designed and manufactured by MOS Technology as an I/O port controller for the 6502 family of microprocessors. It provides two bidirectional 8 bit parallel I/O ports, two 16 bit timers (one of which can also operate as an event counter), and an 8 bit shift register for serial communications or data conversion between serial and parallel forms. The direction of each bit of the two I/O ports can be individually programmed. In addition to being manufactured by MOS Technology, the 6522 was second sourced by other companies including Rockwell and Synertek. The 6522 was widely used in computers of the 1980s, particularly Commodore's machines, and was also a central part of the designs of the Apple III, Oric 1 and Oric Atmos, BBC Micro, Victor 9000/Sirius 1 and Apple Macintosh. Video game platforms such as the Vectrex also used the 6522, as did the 1984 through 1989 Corvette digital dash cluster. A high speed, CMOS version, the W65C22, is produced by the Western Design Center (WDC).
Входные/выходные порты
ВВИ содержит 20 линий ввода/вывода, организованных в два 8-битных двунаправленных порта (или 16 линий ввода/вывода общего назначения) и четыре линии управления (для обмена данными и генерации прерываний). Направление всех 16 общих линий (PA0-7, PB0-7) может быть запрограммировано независимо. Линии управления могут быть запрограммированы для генерации прерывания при активации (все четыре), фиксации соответствующего порта ввода/вывода (CA1 и CB1), автоматической генерации сигналов обмена данными для устройств на портах ввода/вывода или работы в качестве обычных программно-управляемых выходов (CA2 и CB2). CB1 и CB2 также используются как вход тактовой частоты и линия данных для сдвигового регистра, что исключает их использование для других функций при включенном сдвиговом регистре.
Таймеры
ВИА обеспечивает два 16-битных таймера/счетчика. Каждый из них может использоваться в однократном (моностабильном) режиме "интервального таймера"; таймер 1 также может использоваться в режиме "свободного хода" (делитель / прямоугольная волна), в котором таймер автоматически перезагружается начальным значением при достижении нуля, а таймер 2 также может использоваться в режиме "счета импульсов", в котором таймер подсчитывает переходы от высокого к низкому уровню на выводе PB6 (7-й бит параллельного порта B). В однократном режиме каждый таймер продолжает работать в режиме свободного хода, чтобы можно было определить время, прошедшее с момента достижения нуля, но дополнительное прерывание не генерируется до перезапуска таймера. Каждый таймер может генерировать прерывание при достижении нуля, а таймер 1 также может выводить импульсы (в режиме интервального таймера) или прямоугольные волны (в режиме свободного хода) на вывод PB7 (8-й бит порта B). Таймер 2 может использоваться для обеспечения тактовой частоты сдвигового регистра. Полезной особенностью режима свободного хода является возможность загрузки 16-битного регистра счетчика новым значением без перезагрузки самого счетчика, так что новое значение будет загружено только после достижения текущим значением нуля, плавно изменяя выходную частоту. Эта функция таймера 1, в сочетании с его возможностью вывода сигнала на вывод PB7, может использоваться для генерации сложных сигналов, например, сигналов широтно-импульсной модуляции, изменения частоты или двухфазных или FM-кодированных последовательностей битов.
Регистр смены
Регистр сдвигов VIA двунаправленный, 8-битный и может работать от тактового сигнала, генерируемого таймером (таймером 2), тактового сигнала процессора или внешнего источника на линии CB1. Последовательный вход/выход осуществляется по линии, и он также может быть запрограммирован на выдачу тактовых импульсов для внешних последовательных устройств с внешним тактированием.
Выход IRQ
NMOS 6522 имеет выход IRQ с открытым коллектором, который может использоваться в схемах прерываний по логическому ИЛИ с общей линией. В отличие от него, WDC W65C22S имеет выход IRQ с тотемным каскадом, который необходимо изолировать от схемы прерываний по логическому ИЛИ диодом Шоттки, поскольку тотемный каскад активно устанавливает высокий уровень на выводе IRQ, когда W65C22S не генерирует прерывание. Эта проблема устранена в WDC W65C22N, который оснащен выходом IRQ с открытым коллектором.
Клопы
Из-за дефекта конструкции, если фронт сигнала приходится в пределах нескольких наносекунд от падающего фронта тактового сигнала φ2 (фаза 2), то сигнал будет проигнорирован, что приведет к потере бита и ошибкам кадрирования в последующих данных. В качестве обходного решения можно подать внешний тактовый сигнал на вход флип-флопа 74ACT74, подключить выход флип-флопа к выводу 6522, а сам флип-флоп синхронизировать сигналом φ0 или φ2. Ошибка в последовательном сдвиговом регистре была исправлена в California Micro Devices CMD G65SC22 и в MOS 6526, последний из которых Commodore использовал вместо 6522 начиная с Commodore 64. Помимо вышеупомянутой ошибки сдвигового регистра, существовала потенциальная проблема повреждения регистров, которая обычно возникала только в системах, использующих 6522 с микропроцессором, имеющим архитектуру шины, отличную от 6502, например, Motorola 68000. Если адресные линии изменялись в момент, когда сигнал выбора чипа был низким (неактивным), но вход φ2 был высоким (активным), содержимое регистров могло измениться, несмотря на то, что чип не был выбран. Эта проблема была устранена в некоторых, но не во всех CMOS-версиях.