Жмакин А.П. Архитектура ЭВМ (2006) (1186252), страница 37
Текст из файла (страница 37)
Окно Микрокомандный уровень (рис. 8.8) используется только в режиме микрокоманд, который устанавливается командой Режим микрокоманд меню Работа. В это окно выводится мнемокод выполняемой команды, список микрокоманд, ее реализующих, и указатель на текущую выполняемую микрокоманду.
Шаговый режим выполнения программы или запуск программы в автоматическом режиме с задержкой командного цикла позволяет наблюдать процесс выполнения программы на уровне микрокоманд.
Если открыть окно Микрокомандный уровень, не установив режим микрокоманд в меню Работа, то после начала выполнения программы в режиме Шаг (или в автоматическом режиме) в строке сообщений окна будет выдано сообщение "Режим микрокоманд неактивен".
Окно Кэш-память
Окно Кэш-память используется в режиме с подключенной кэш-памятью. Подробнее смотрите об этом режиме в разд. 8.8.
8.6. Внешние устройства
Модели внешних устройств (ВУ), используемые в описываемой системе, реализованы по единому принципу. С точки зрения процессора они представляют
собой ряд программно-доступных регистров, лежащих в адресном простран* стве ввода/вывода. Размер регистров ВУ совпадает с размером ячеек памяти и регистров данных процессора — шесть десятичных разрядов.
Доступ к регистрам ВУ осуществляется по командам in аа, оит аа, где аа -— двухразрядный десятичный адрес регистра ВУ. Таким образом, общий объем адресного пространства ввода/вывода составляет 100 адресов. Следует пом нить, что адресные пространства памяти и ввода/вывода в этой модели рачде-лены.
Разные ВУ содержат различное число программно-доступных регистров, каждому из которых соответствует свой адрес, причем нумерация адресом всех ВУ начинается с 0. При создании ВУ ему ставится в соответствие базовый адрес в пространстве ввода/вывода, и все адреса его регистров становятся смещениями относительно этого базового адреса.
Если в системе создаются несколько ВУ, то их базовые адреса следует выбирать с учетом величины адресного пространства, занимаемого этими устройствами, исключая наложение адресов.
Если ВУ способно формировать запрос на прерывание, то при создании ему ставится в соответствие вектор прерывания — десятичное число. Разным ВУ ^должны назначаться различные векторы прерываний.
Программная модель учебной ЭВМ комплектуется набором внешних устройств, включающим:
□ контроллер клавиатуры;
□ дисплей;
□ блок таймеров;
□ тоногенератор,
которым по умолчанию присвоены параметры, перечисленные в табл. 8.2.
При создании устройств пользователь может изменить назначенные по умолчанию базовый адрес и вектор прерывания.
В описываемой версии системы не предусмотрена возможность подключения в систему нескольких одинаковых устройств.
Большинство внешних устройств содержит регистры управления CR и состояния SR, причем обычно регистры CR доступны только по записи, а SR — по чтению.
Регистр CR содержит флаги и поля, определяющие режимы работы ВУ, а SR — флаги, отражающие текущее состояние ВУ. Флаги SR устанавливаются аппаратно, но сбрасываются программно (или по внешнему сигналу). Поля и флаги CR устанавливаются и сбрасываются программно при записи кода данных в регистр CR или специальными командами.
Контроллер ВУ интерпретирует код, записываемый по адресу CR как команду, если третий разряд этого кода равен 1, или как записываемые в CR данные, если третий разряд равен 0. В случае получения командного слова запись в регистр CR не производится, а пятый разряд слова рассматривается как код операции.
8.6.1. Контроллер клавиатуры
Контроллер клавиатуры (рис. 8.9) представляет собой модель внешнего устройства, принимающего ASCII-коды1 от клавиатуры ПЭВМ.
Символы помещаются последовательно в буфер символов, размер которого установлен равным 50 символам, и отображаются в окне обозревателя (рис. 8.10).
В состав контроллера клавиатуры входят три программно-доступных регистра:
□ DR (адрес 0) — регистр данных;
□ CR (адрес 1)— регистр управления, определяет режимы работы контроллера и содержит следующие флаги:
• Е — флаг разрешения приема кодов в буфер;
• I — флаг разрешения прерывания;
• S — флаг режима посимвольного ввода.
□ SR (адрес 2) — регистр состояния, содержит два флага:
• Err — флаг ошибки;
• Rd — флаг готовности.
Регистр данных DR доступен только для чтения, через него считываются ASCII-коды из буфера, причем порядок чтения кодов из буфера соответствует порядку их записи в буфер — каждое чтение по адресу 0 автоматически перемещает указатель чтения буфера. В каждый момент времени DR содержит код символа по адресу указателя чтения буфера.
Флаги регистра управления CR устанавливаются и сбрасываются; программно.
Флаг Е, будучи установленным, разрешает прием кодов в буфер. При Е = О контроллер игнорирует нажатие на клавиатуре, прием кодов в буфер не производится. На считывание кодов из буфера флаг Е влияния не оказывает.
Флаг I, будучи установленным, разрешает при определенных условиях формирование контроллером запроса на прерывание. При 1 = 0 запрос на прерывание не формируется.
Флаг S = 1 устанавливает т. н. режим посимвольного ввода, иначе контроллер работает в обычном режиме. Флаг S устанавливается и сбрасывается программно, кроме того, S сбрасывается при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры.
Условия формирования запроса на прерывание определяются, с одной стороны, значением флага разрешения прерывания I, с другой — режимом работы контроллера. В режиме посимвольного ввода запрос на прерывание формируется после ввода каждого символа (разумеется, при I = 1), в обычном режиме запрос будет сформирован по окончании набора строки.
Завершить набор строки можно, щелкнув по кнопке Завершить ввод в окно Контроллер клавиатуры (см. рис. 8.10). При этом устанавливается флаг товности Rd (от англ. ready) в регистре состояния SR. Флаг ошибки Err ( англ. error) в том же регистре устанавливается при попытке ввода в буф 51 -го символа. Ввод 51 -го и всех последующих символов блокируется.
Сброс флага Rd осуществляется автоматически при чтении из регистра DR, флаг Err сбрасывается программно. Кроме того, оба эти флага сбрасываю при нажатии кнопки Очистить буфер в окне Контроллер клавиатуры; о новременно со сбросом флагов производится очистка буфера — весь бу заполняется кодами 00h, и указатели записи и чтения устанавливаются на начало буфера.
Для программного управления контроллером предусмотрен ряд командны слов. Все команды выполняются при записи по адресу регистра управлен CR кодов с 1 в третьем разряде.
Контроллер клавиатуры интерпретирует следующие командные слова:
□ xxxlOl — очистить буфер (действие команды эквивалентно нажатию кно ки Очистить буфер);
□ ххх 102 — сбросить флаг Err в регистре SR;
□ хххЮЗ — установить флаг S в регистре CR;
□ ххх 104 — сбросить флаг S в регистре CR.
Если по адресу 1 произвести запись числа хххОии, то произойдет измене 4-го и 5-го разрядов регистра CR по следующему правилу:
8.6.2. Дисплей
Дисплей (рис. 8.11) представляет собой модель внешнего устройства, реализующую функции символьного дисплея. Дисплей может отображать символы, задаваемые ASCII-кодами, поступающими на его регистр данных. Дисплей включает:
□ видеопамять объемом 128 слов (ОЗУ дисплея);
□ символьный экран размером 8 строк по 16 символов в строке;
□ четыре программно-доступных регистра:
• DR (адрес 0) — регистр данных;
• CR (адрес 1) — регистр управления;
• SR (адрес 2) — регистр состояния;
• AR (адрес 3) — регистр адреса.
Через регистры адреса AR и данных DR по записи и чтению осуществляется доступ к ячейкам видеопамяти. При обращении к регистру DR по записи содержимое аккумулятора записывается в DR и в ячейку видеопамяти, адрес которой установлен в регистре AR.
Регистр управления CR доступен только по записи и содержит в 4-м и 5< разрядах соответственно два флага:
□ Е — флаг разрешения работы дисплея; при Е = 0 запись в регистры AR DR блокируется;
□ А — флаг автоинкремента адреса; при А = 1 содержимое AR автоматически увеличивается на 1 после любого обращения к регистру DR — но записи или чтению.
Изменить значения этих флагов можно, если записать по адресу CR умолчанию — 11) код хххОли, при этом изменение 4-го и 5-го разрядов per стра CR произойдет согласно выражению (8.1).
Для программного управления дисплеем предусмотрены две команды, KOjf которых должны записываться по адресу регистра CR, причем в третьец^ ряде командных слов обязательно должна быть 1:
□ xxxlOl — очистить дисплей (действие команды эквивалентно нажатт! кнопки Очистить в окне Дисплей), при этом очищается видеопамя" (в каждую ячейку записывается код пробела — 032), устанавливается в О регистр адреса AR и сбрасываются флаги ошибки Err и автоинкремента А
□ ххх102 — сбросить флаг ошибки Err.
Регистр состояния SR доступен только по чтению и содержит единственный флаг (в пятом разряде) ошибки Err. Этот флаг устанавливается аппаратно при попытке записать в регистр адреса число, большее 127, причем как в режиме прямой записи в AR, так и в режиме автоинкремента после обращения по адресу 127. Сбрасывается флаг Err программно или при нажатии кнопки Очистить в окне Дисплей (рис. 8.12).
8.6.3. Блок таймеров
Блок таймеров (рис. 8.13) включает в себя три однотипных канала, каждый из которых содержит:
□ пятиразрядный десятичный реверсивный счетчик Т, на вход которого поступают метки времени (таймер);
□ программируемый предцелитель D;
□ регистр управления таймером CTR;
□ флаг переполнения таймера FT.
Регистры таймеров Т доступны по записи и чтению (адреса 1, 3, 5 соответственно для Tl, Т2, ТЗ). Программа в любой момент может считать текущее содержимое таймера или записать в него новое значение.
На входы предцелителей поступает общие для всех каналов метки времени CLK с периодом 1 мс. Предделители в каждом канале программируются независимо, поэтому таймеры могут работать с различной частотой.
Регистры управления CTR доступны по записи и чтению (адреса 2, 4, 6) и содержат следующие поля:
□ Т (разряд 5) — флаг включения таймера;
□ EI (разряд 4)— флаг разрешения формирования запроса на прерывание при переполнении таймера;
□ I/D (разряд 3) — направление счета (инкремент/декремент), при I/D = О таймер работает на сложение, при I/D =1 — на вычитание;
□ к (разряды [1:2]) — коэффициент деления предделителя (от 1 до 99).
Флаги переполнения таймеров собраны в один регистр — доступный только! по чтению регистр состояния SR, имеющий адрес 0. Разряды регистра (5, 4 j 3 для Tl, Т2, ТЗ соответственно) устанавливаются в 1 при переполнении с ответствующего таймера. Для таймера, работающего на сложение, перепол нение наступает при переходе его состояния из 99 999 в 0, для вычитающег таймера — переход из 0 в 99 999.
В окне обозревателя (рис. 8.14) предусмотрена кнопка Сброс, нажатие коте рой сбрасывает в 0 все регистры блока таймеров, кроме CTR, которые уст навливаются в состояние 001000. Таким образом, все три таймера обнуляют ся, переключаются в режим инкремента, прекращается счет, запрещаются! прерывания, сбрасываются флаги переполнения и устанавливаются коэффициенты деления предцелителей равными 01.