stringtranslate.com

МОС-технологии ЦРУ

Конфигурация контактов 6526 CIA
Ранние 6526 ЦРУ еще находились в дорогостоящем керамическом корпусе с золотыми контактами. Более поздние версии выпускались в более дешевой пластиковой упаковке.
CIA MOS 6526A в пластиковой упаковке
MOS 8520A в Amiga 1000

Адаптер сложного интерфейса 6526/8520 ( CIA ) представлял собой интегральную схему , созданную компанией MOS Technology . Он служил контроллером портов ввода-вывода для микропроцессоров семейства 6502 , обеспечивая возможности параллельного и последовательного ввода-вывода, а также таймеры и часы времени суток (TOD). Наиболее заметное использование устройства было в Commodore 64 и Commodore 128(D) , каждый из которых включал в себя два чипа ЦРУ. Дисководы для гибких дисков Commodore 1570 и Commodore 1571 содержали по одному CIA каждый. Кроме того, в домашних компьютерах Amiga и дисководе для гибких дисков Commodore 1581 использовался модифицированный вариант схемы ЦРУ под названием 8520. 8520 функционально эквивалентен 6526, за исключением упрощенной схемы TOD. Предшественником ЦРУ было PIA .

Параллельный ввод-вывод

У ЦРУ было два 8-битных двунаправленных параллельных порта ввода-вывода. Каждый порт имел соответствующий регистр направления данных, который позволял индивидуально устанавливать каждую линию данных в режим ввода или вывода. Чтение этих портов всегда возвращало состояние отдельных линий, независимо от установленного направления данных.

Последовательный ввод/вывод

Внутренний двунаправленный 8-битный сдвиговый регистр позволял ЦРУ обрабатывать последовательный ввод-вывод . Чип мог принимать последовательный входной сигнал, синхронизированный с внешним источником, и отправлять последовательный выходной сигнал, синхронизированный с помощью одного из встроенных программируемых таймеров. Прерывание генерировалось всякий раз , когда завершалась 8-битная последовательная передача. Можно было реализовать простую « сеть », соединив вместе сдвиговый регистр и тактовые выходы нескольких компьютеров. Максимальный битрейт составляет 500 кбит/с для версии 2 МГц.

ЦРУ включает исправление ошибки в регистре последовательного сдвига в более ранней версии 6522 VIA . Изначально CIA предназначалось для обеспечения быстрой связи с дисководом, но в конечном итоге его не удалось использовать из-за желания сохранить совместимость дисков с VIC-20 ; на практике прошивку привода 1541 пришлось сделать даже медленнее, чем его предшественника VIC-20, чтобы обойти поведение видеопроцессора C64 , который при рисовании экрана отключал ЦП на 40 микросекунд каждые 512 микросекунд и в этот интервал времени. не могу слушать автобус, рискуя что-то пропустить. [1] [2]

Интервальные таймеры

Имелись два программируемых интервальных таймера, каждый с точностью до субмикросекунды . Каждый таймер состоял из 16-битного настраиваемого обратного счетчика только для чтения и соответствующей 16-битной защелки только для записи . Всякий раз, когда запускался таймер, его защелка автоматически копировалась в его счетчик, а затем счетчик уменьшался с каждым тактовым циклом до тех пор, пока не опустеет, при котором будет генерироваться прерывание , если CIA было настроено на это.

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

Как было настроено в Commodore 64 и Commodore 128 , синхронизация ЦРУ контролировалась системными часами Ø2, номинально один МГц . Это означало, что таймеры уменьшались с интервалом примерно в одну микросекунду, причем точный период времени определялся тем, использовал ли система видеостандарт NTSC или PAL . В C-128 использовалось растяжение тактовой частоты, поэтому на время ЦРУ не влияло то, работала ли система в МЕДЛЕННОМ или БЫСТРОМ режиме.

Можно было создать относительно длинные временные интервалы, запрограммировав таймер B для подсчета опустошения таймера A. Если бы оба таймера были загружены с максимальным значением интервала 65 535, то интервал времени составил бы один час, 11 минут, 34 секунды.

Часы времени суток (TOD)

В ЦРУ встроены часы реального времени, которые представляют собой устройство для измерения времени, более отвечающее потребностям человека, чем интервальные таймеры с микросекундной точностью. Время ведется в американском 12-часовом формате AM/PM. Часы TOD состоят из четырех регистров чтения/записи: часов (бит 7 действует как флаг AM/PM), минут, секунд и десятых долей секунды. Все регистры считываются в формате BCD , что упрощает процесс кодирования/декодирования.

Чтение из регистров всегда возвращает время суток. Чтобы избежать ошибки переноса при получении времени, чтение регистра часов немедленно останавливает обновление регистра, не влияя на внутреннюю точность измерения времени. Как только регистр десятых будет прочитан, обновление возобновится. Любой регистр, кроме регистра часов, можно считывать «на лету», что делает использование работающих часов TOD в качестве таймера практическим применением. Однако если считывается регистр часов, необходимо впоследствии прочитать регистр десятых. В противном случае все регистры TOD останутся «замороженными».

Установка времени включает запись соответствующих значений BCD в регистры. Доступ для записи в регистр часов полностью останавливает часы. Часы не запустятся снова, пока значение не будет записано в регистр десятых. Благодаря порядку, в котором регистры появляются на карте памяти системы , для записи регистров в правильном порядке достаточно простого цикла. Допускается запись только в регистр десятых долей, чтобы «подтолкнуть» часы к действию, при этом после аппаратного сброса часы начнутся в 1:00:00.0.

В дополнение к функциям хронометража, TOD можно настроить для работы в качестве будильника , настроив его на генерацию запроса на прерывание в любое желаемое время. Из-за ошибки во многих 6526 (см. также ошибки ниже), IRQ тревоги не всегда срабатывает, когда секундная составляющая времени тревоги равна точно нулю. Обходной путь — установить значение десятых долей будильника на 0,1 секунды.

Внутренняя схема часов TOD рассчитана на управление синусоидальным сигналом частотой 50 или 60 Гц. Как и в C-64 и C-128(D), источник питания компьютера подавал такой сигнал из сети, что приводило к стабильному хронометру с небольшим долговременным дрейфом. Возможность работать с обеими частотами сети позволила использовать одну версию 6526 в компьютерах, работающих в странах с частотой 50 или 60 Гц. Важно отметить, что вопреки распространенному мнению, стандарты видео NTSC или PAL не связаны напрямую с частотой сети. Кроме того, некоторые компьютеры не получали тактовую частоту TOD от источника питания. Например, варианты Commodore SX-64 для NTSC и PAL используют тактовую частоту TOD 60 Гц, обеспечиваемую специальным кристаллом. Например, операционная система KERNAL в Commodore 64 определяет видеостандарт во время запуска системы, но не пытается ни определить поставляемую тактовую частоту TOD, ни правильно инициализировать CIA на машинах с частотой 50 Гц. Таким образом, это ответственность любого прикладного программного обеспечения, которое хочет использовать функцию TOD CIA для определения подаваемой частоты и самостоятельно устанавливать флаг CIA(s). Несоблюдение этого требования может привести к быстрому отклонению часов от правильного времени.

Версия CIA 8520, используемая в Amiga и дисководе Commodore 1581 , изменила часы времени суток, превратив их в 24-битный двоичный счетчик, заменив формат BCD 6526. Однако другое поведение было аналогичным. .

Версии

CIA было доступно в версиях 1 МГц (6526), ​​2 МГц (6526A) и 3 МГц (6526B). Корпус представлял собой 40-контактный керамический или пластиковый DIP-корпус стандарта JEDEC . 8520 CIA с модифицированными часами времени суток использовался в компьютерах Amiga .

Commodore встроил сокращенную (всего 4 регистра) логику, подобную CIA, для снижения стоимости Commodore 1571 внутри C128DCR (см. Commodore 128 ) в вентильной матрице под названием 5710, которая также содержит другие функции. 5710 CIA имеет последовательный тактовый сигнал для быстрого последовательного интерфейса, жестко подключенный к эквивалентному значению таймера A CIA6526, равному 5, что приводит к времени передачи каждого бита 5 мкс. Это отличается от значения таймера A, равного 6 в 6526 CIA в оригинальном Commodore 1571 . 5710 CIA не содержит таймера или регистров управления таймером. Он содержит только два регистра порта и регистр для управления последовательным переключателем и его событиями.

Ошибки

В дополнение к вышеупомянутой ошибке прерывания будильника, многие CIA имели дефект, при котором деталь не могла сгенерировать аппаратное прерывание таймера B , если регистр управления прерываниями (ICR) был прочитан за один или два тактовых цикла до того момента, когда прерывание должно было произойти. действительно произошли. Этот дефект, а также логические ошибки в 8-битной операционной системе Commodore вызывали частые ошибки псевдо- RS-232 в компьютерах Commodore 64 и Commodore 128 при работе на более высоких скоростях передачи данных .

Рекомендации

  1. ^ Перри, Текла С.; Валлич, Пол (март 1985 г.). «История проектирования: Commodore 64» (PDF) . IEEE-спектр . 22 (3): 48–58. doi : 10.1109/MSPEC.1985.6370590. ISSN  0018-9235. S2CID  11900865. Архивировано из оригинала (PDF) 13 мая 2012 г. Проверено 12 ноября 2011 г.
  2. ^ статьи на c64-wiki.com

Внешние ссылки