Связь с процессором ввода / вывода

1576
user32569

Я знаю, что этот вопрос уже обсуждался, но я все еще что-то не понимаю, поэтому, пожалуйста, просто помогите мне прояснить его.

Что я понимаю, есть 2 способа сделать ввод / вывод, также известный как связь с процессором с другим HW. Один из них - использовать входящие и исходящие инструкции, а второй - отображение памяти.

Но что я на самом деле не понимаю, так это то, что используются инструкции IN и OUT, вы определяете порт источника. Но что это за порт? Я имею в виду, это другой набор контактов на процессоре или что? И с чем связан этот порт?

Что касается карт памяти, я скучаю только по мелочам. Если ввод-вывод с отображением памяти должен быть сначала установлен инструкциями IN и OUT, или устройство фактически каким-то образом само подключается к ОЗУ и читает его? Благодарю.

0

1 ответ на вопрос

3
Jonathan Leffler

На Z80 есть вывод на микросхеме, который устанавливается (устанавливается в верхнее или логическое состояние 1), когда инструкция является инструкцией IN или OUT. Аппаратное обеспечение, подключенное к микросхеме, контролирует этот контакт, а также контакты чтения / записи, а также некоторые адресные контакты, чтобы определить, относится ли операция к ним. Каждое устройство сконфигурировано для распознавания некоторого числа в качестве номера порта и соответствующего ответа. Итак, когда вы пишете инструкцию на ассемблере, такую ​​как:

OUT(15),A 

чип устанавливает младшие 8 адресных контактов на 15 и записывает содержимое регистра A на контакты данных. Если оборудование настроено и правильно подключено, оно знает, что для него предназначено. Аналогично сIN(15),A .

В случае ввода-вывода с отображением в память имеется место в памяти, зарезервированное для оборудования. Когда процессор пишет по адресу 0xFFF0, скажем (при условии удобной 8-битной микроархитектуры, такой как 6502 или 6800 или 6809 - или, действительно, Z80), тогда оборудование, подключенное для ответа на этот адрес, не является микросхемой ОЗУ. но устройство. Как правило, есть по крайней мере один соседний адрес, который используется для чтения; иногда один и тот же адрес используется для чтения и записи.

В обоих случаях проблема заключается в том, что оборудование, подключенное к ЦП, распознает определенные схемы активности на контактах микросхем (некоторые контакты управления, контакты данных и контакты адреса) как относящиеся к ним. Вы можете столкнуться с проблемой, если несколько разных устройств думают, что один и тот же адрес или порт ввода / вывода ссылаются на них.

Хотя в качестве примеров я использовал 8-битные микросхемы, те же базовые принципы применимы к 16-битным, 32-битным или 64-битным микросхемам.

Можно еще один вопрос? Таким образом, при использовании IN (OUT) или ввода-вывода с отображением в память ОЗУ отключается от ЦП или одновременно с записью в какой-либо чип также записывается в ОЗУ? user32569 13 лет назад 0
@ b-gen-jack-o-neill: для команды IN или OUT память (как правило) будет игнорировать запрос, поскольку вывод ввода-вывода утвержден. При вводе-выводе с отображенной памятью ОЗУ по адресу отсутствует - устройство ввода-вывода там отображается. Таким образом, чистый результат - «нет, то, что написано, отправляется на устройство ввода-вывода». Если кто-то неправильно спроектировал систему памяти, я полагаю, что у вас может быть память, обращающая внимание на запрос ввода-вывода, но за этим последует хаос - выигрывает ли устройство ввода-вывода или память при выполнении команды IN, когда память пытается дать ответ а также устройство ввода / вывода. Это не будет работать, и, следовательно, вы не увидите это. Jonathan Leffler 13 лет назад 0

Похожие вопросы