Главная > Схемотехника > Искусство схемотехники, Т.2
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

10.06. Программируемый ввод-вывод: вывод данных

Простейший метод обмена данными по магистрали компьютера известен как программируемый ввод-вывод, это обозначает, что данные передаются с помошью операторов программы IN или OUT (направления передачи для IN и OUT входят в состав тех немногих правил, которых придерживаются все изготовители компьютеров: IN всегда означает направление к ЦП, a OUT всегда означает направление из ЦП). В целом процесс вывода данных (и записи в ОЗУ) предельно прост и логичен (рис. 10.6). Адрес приемника и данные, которые необходимо передать, выставляются на соответствующие линии магистрали центральным процессором.

Рис. 10.6. Цикл ввода-вывода при записи (все измерения в нс).

Рис. 10.7. Растровый дисплей.

Строб-сигнал записи (IOW или MEMW) устанавливается в низкое состояние цетральным процессором для того, чтобы сигнализировать приемнику о том, что данные установлены и их можно считывать. На магистрали PC адрес гарантированно установлен, начиная с момента времени приблизительно за 100 не до IOW, а данные гарантированно установлены по крайней мере за 500 не до окончания IOW (и в течение следующих 185 не после окончания этого сигнала). Для того чтобы принимать участие в подобных играх, периферийное устройство (пусть в нашем случае это - графический дисплей) наблюдает за шинами адреса и данных. Когда устройство обнаруживает свой собственный адрес, оно считывает информацию с шины данных по спаду сигнала IOW. Вот и все.

Рассмотрим пример, приведенный на рис. 10.7. Здесь мы спроектировали растровый графический дисплей; вы последовательно передаете ему пары чисел X, Y и на его экране отображается каждая точка в декартовой прямоугольной системе координат, причем первое число соответствует абсциссе, а второе - ординате отображаемой точки. Сначала мы должны выбрать адрес устройства ввода-вывода. На рис. 10.8 приведены зарезервированные и доступные адреса устройства ввода-вывода для IBM PC; мы выбираем для Х-регистра и для . Микросхема компаратор со стробированием; состоянию равенства сравниваемых кодов которого соответствует низкий уровень на выходе, вырабатывает низкий выходной сигнал в том случае, когда 8 бит разрядов совпадают с заданными значениями, в нашем случае - когда адрес на магистрали лежит в диапазоне -ЗСЗН (вы можете использовать комбинационную схему, но компаратор адреса компактнее). Мы также потребуем в соответствии с ранее приведенными разъяснениями, чтобы AEN был низкого уровня.

Рис. 10.8. Адреса ввода-вывода .

Трехвходовые логические схемы завершают дешифрацию адреса, используя адресные линии АО, для того, чтобы установить низкий уровень на своих выходах отдельно для адресов (другой способ будет вкратце описан ниже). В конце концов указанные выходы логически перемножаются с IOW для того, чтобы получить синхросигнал для X- и -регистров, которые представляют собой -разрядные регистры на -триггерах (микросхемы ). Эти регистры фиксируют байты с шины данных в тех случаях, когда а) выбран требуемый адрес, б) сигнал низком состоянии, в) был выработан сигнал IOW. Восьмиразрядные цифро-аналоговые преобразователи (ЦАП) преобразуют считываемые байты в аналоговое напряжение, подаваемое на X- и -входы устройства управления выводом на электронно-лучевую трубку (ЭЛТ) дисплея. Спустя несколько микросекунд после считывания -координаты, два одновибратора вырабатывают -микросекундный импульс подсветки, увеличивающий интенсивность свечения изображаемой на экране точки (все устройства управления выводом на ЭЛТ имеют для этого вход Z). Для того чтобы изобразить график или набор символов на экране, необходимо последовательно выводить X- и -координаты, повторяя их в одном и том же порядке (сначала X, а затем Y) достаточно быстро, чтобы глаз не видел мерцания. Микрокомпьютеры достаточно быстры для того, чтобы успевать в цикле отображать на дисплее несколько тысяч точек без раздражающего мерцания. Учитывая, что растровый дисплей - это стандартное устройство микрокомпьютера для вывода изображений, приведенный пример более полезен в качестве модели фотографического графопостроителя сверхвысокого разрешения, использующего -разрядный ЦАП и дисплей с микроскопическим размером точек (см. следующее упражнение).

Несколько полезных замечаний:

а) Отметим, что мы подобрали полярность сигналов таким образом, что -триггеры переключаются по спаду сигналов IOW; это существенно, так как в момент времени, соответствующий фронту этого импульса, данные могут еще не установиться. Для большей надежности следует удостовериться, что временные соотношения сигналов удовлетворяют временам упреждения и удержания схем фактически, однако, для такой медленной, как у IBM PC магистрали трудно заставить схему, подобную описываемой, работать правильно, поскольку с момента установки данных до спада IOW проходит более 500 не.

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

Дешифраторы типа разряда на 8 направлений) и типа (сдвоенный, 2 разряда на 4 направления) имеют один или более стробирующих входов и удобны для построения схем такого рода.

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

г) На самом деле мы можем полностью игнорировать разряд и схема будет работать по-прежнему! Однако тогда она начнет откликаться также на адреса и ЗСЗ (как X и Y, соответственно) и произойдет потеря двух адресов ввода-вывода. На практике, однако, часто идут этим путем и, не полностью дешифруя адрес, экономят микросхемы (ведь адресное пространство остается достаточно обширным, даже если вы и потеряете таким образом некоторое количество адресов). В рассматриваемом примере мы можем подключить IOW вместо и полностью отказаться от -входовой схемы .

д) Сопряжение с магистралью, подобное обсуждаемому, будет более гибким, если адрес устанавливать -переклю-чателями (или -перемычками); тогда вы сможете выбрать адрес верно, чтобы не было конфликта с адресом другого устройства, подключенного к той же магистрали. Внести соответствующие изменения в схему несложно - достаточно восемь входов компаратора подсоединить через ключи к общему проводнику , а через резисторы - к цепи .

е) Для пояснения существа дела в этом примере мы использовали отдельные микросхемы -разрядных регистров и ЦАПов. На практике у вас есть возможность применить ЦАП со встроенной схемой выборки адреса (например, «микропроцессорно-совместимый» ЦАП типа AD -сдвоенный ЦАП с входной схемой выборки адреса); такая схема выпускается даже в счетверенном варианте , а также в варианте с двойной буферизацией, двухкаскадной выборкой адреса для каждого ЦАП (счетверенный ЦАП AD 7225).

Упражнение 10.1. Нарисуйте функциональную схему адресного компаратора с настройкой адреса.

Упражнение 10.2. Нарисуйте схему сопряжения растрового дисплея с магистралью, используя -раз-рядные ЦАП для преобразования как , так и . Вам потребуется 4 последовательно расположенные адреса. Используйте первые 2 для регистрации Х-регистра, а два последних - для -регистра; конечно, надо предусмотреть возможность настройки базового адреса ввода-вывода с использованием переключателей в -исполнении. Как для , так и для -координат четным адресам соответствует младший, а нечетным -старший байт соответствующего кода; это удобно (поскольку МП 8086 оперирует -разрядными словами, можно пользоваться командами ввода-вывода слов для передачи данных этому устройству).

Программирование графического дисплея.

Программирование такого устройства не представляет сложностей. Как это делается показывает программа 10.3, которой надо указать адреса ячеек, где хранятся X- и -координаты первой точки и количество точек, которое надо отобразить. Программа обслуживания дисплея возможно, будет оформлена как подпрограмма с этими параметрами, передаваемыми при ее вызове. Программа заносит адреса массивов X- и -координат (т. е. адрес первой пары -координат) в индексные регистры SI и DI, а байт количества точек в регистр СХ. Этот регистр потом используется в цикле, в котором пары -координат последовательно передаются в порты ввода-вывода по адресам . В каждом цикле перемещаются указатели массивов X и Y; а содержимое счетчика декрементируется и сравнивается с нулем, который характеризует отображение последней точки; затем указатели и счетчик устанавливаются в исходное состояние и процесс вывода начинается снова.

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

Обычно при регенерации изображения на дисплее, организованной подобным образом, для дополнительных продолжительных вычислений во время вывода изображения времени нет. Гораздо лучшим методом является обновление изображения на экране из собственной памяти дисплея, что разгружает компьютер. Как бы то ни было, если ваша цель - построить изображение с высоким разрешением для получения фотографической копии, эта программа и схема сопряжения, спроектированная по условиям упражнения 10.2, будет работать замечательно.

Рис. 10.9. Цикл ввода-вывода при чтении.

Рис. 10.10. Параллельный входной порт.

<< Предыдущий параграф Следующий параграф >>
Оглавление