Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.
|
Учебная модель fN8: внешние устройстваМодели внешних устройств (ВУ), используемые в fN8, реализованы по единому принципу. С точки зрения процессора они представляют собой ряд программно-доступных регистров, лежащих в адресном пространстве ввода/вывода. Размер регистров ВУ совпадает с размером ячеек памяти и регистров данных процессора - один байт. Доступ к регистрам ВУ осуществляется по командам IN a, OUT a, где a - семиразрядный двоичный адрес регистра ВУ. Таким образом, общий объем адресного пространства ввода/вывода составляет 27 = 128 адресов. Следует помнить, что адресные пространства памяти и ввода/вывода в этой модели разделены. Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресов в каждом ВУ начинается с 0. При подключении ВУ ему средствами Диспетчера внешних устройств ставится в соответствие базовый адрес в пространстве ввода/вывода и все адреса регистров ВУ становятся смещениями относительно его базового адреса. Диспетчер внешних устройствОкно диспетчера отображает список ВУ, доступных для подключения в систему. Каждому ВУ предлагается базовый адрес по умолчанию, а тем устройствам, которые работают с прерываниями – и вектор прерывания по умолчанию. Пользователь может произвольно изменить предлагаемые по умолчанию параметры. При этом надо учитывать, что базовый адрес ВУ в пространстве ввода/вывода всегда должен быть кратным 16, поэтому в окне диспетчера можно задать только старшую цифру шестнадцатеричного базового адреса в диапазоне от 0 до 7. При выборе вектора прерывания следует учитывать, что вектор 0 зарезервирован за сигналом RESET и определяет точку старта программы, а остальные вектора от 1 до 7 могут назначаться ВУ произвольно. Не следует назначать разным устройствам одинаковые базовые адреса и вектора прерывания! Подключение ВУ осуществляется нажатием кнопки с соответствующим именем в окне диспетчера. Отключение подключённых ВУ в процессе работы fN8 не предусмотрено. Возможна работа с несколькими одинаковыми ВУ, если при последовательном подключении им будут назначены разные базовые адреса и вектора прерывания. Подсистема прерыванийВ модели fN8 предусмотрен механизм векторных внешних прерываний. Внешние устройства формируют запросы на прерывания, которые поступают на входы контроллера прерываний. При подключении ВУ, способного формировать запрос на прерывание, ему ставится в соответствие номер входа контроллера прерываний - вектор прерывания, принимающий значение в диапазоне [1..7]. Контроллер передает вектор, соответствующий запросу, процессору, который начинает процедуру обслуживания прерывания. Каждому событию, контролируемуму системой прерываний, должен соответствовать т. н. обработчик прерывания - подпрограмма, вызываемая при возникновении этого события. Механизм прерываний, реализованный в fN8, поддерживает таблицу векторов прерываний, которая создается в оперативной памяти, может содержать до 8 векторов и располагается по адресам 00 .. 0F нулевого сегмента. Каждый вектор занимает 2 байта памяти и содержит 10-разрядный адрес начала обработчика соответствующего события. Вектор 0 (ячейки 00 и 01) зарезервирован за точкой старта программы по кнопке Запуск. Не всякое событие, которое может вызвать прерывание, приводит к прерыванию текущей программы. Дисциплина обслуживания прерываний поддерживается флагом I разрешения прерывания в регистре PSW процессор и флагами разрешения формирования запросов в источниках прерываний. Флаг I после сброса процессора так же сброшен (I=0) и все прерывания запрещены. Устанавливается флаг I программно командой EI, а сбрасывается – командой DI При переходе на обработчик прерывания флаг I автоматически сбрасывается, в этом случае прервать обслуживание одного прерывания другим прерыванием нельзя. По команде IRET значение флагов восстанавливается, в том числе вновь устанавливается I = 1, следовательно в основной программе прерывания опять разрешены. Если требуется разрешить прерывания (другие!) в обработчике прерывания, достаточно в нём выполнить команду EI. Флаги разрешения формирования запросов, сброшенные по умолчанию, могут устанавливаться и сбрасываться программно в любое время, что позволяет реализовать гибкую систему приоритетов обработчиков прерываний. Номенклатура ВУ fN8Открытая архитектура fN8 позволяет расширять состав ВУ по мере их разработки. Ограничено только количество ВУ, одновремено подключённых к ядру fN8 – не более 8 и не более 7 используемых векторов прерывания. В настоящее время с ядром fN8 могут работать следующие ВУ:
© Жмакин Анатолий Петрович (Курский государственный университет). anatoly.zhmakin@gmail.com Оформление Web-страницы - Е.А.Еремин, 2022 |