Элементы архитектуры ОМЭВМ
Формат слова состояния PSW показан на Рис. 11.2. Трехразрядный указатель стека SP определяет один из восьми уровней стека, расположенного во внутреннем ОЗУ данных. Селектор банка регистров определяет один из двух банков РОН, являющийся активным. Бит BS является программно-доступным, как и бит F0, по значению которого можно выполнить команду условного перехода. Флаги переноса (из 7 разряда) и дополнительного переноса (из 3 разряда) формируются в арифметических операциях.
C | AC | F0 | BS | SP |
C | - флаг переноса; | BS | - селектор банка регистров; |
AC | - флаг доп. переноса; | SP | - указатель стека. |
F0 | - флаг пользователя; |
Рис. 11.2. Формат PSW
Распределение адресного пространства внутренней памяти данных показано на
Рис. 11.3,а. К каждой ячейке памяти 00..3Fh можно обратиться по косвенному адресу и, кроме того, некоторые ячейки выполняют роль РОНов и стека.
К РОНам можно обращаться по прямому адресу, причем в зависимости от значения BS роль РОНов выполняют ячейки 00..07h или 18..1Fh. Каждый уровень стека занимает 2 байта, в которые записывается 12-разрядный СчК и старшая тетрада PSW (см. Рис. 11.3,б). Стек загружается только по команде CALL или по прерыванию, а разгружается - по команде RET.
В ОМЭВМ серии К1816 существует четкое разделение памяти на область программ и область данных. В область программ можно обратиться только по адресу, содержащемуся в СчК. Невозможно разместить фрагмент программы в свободной области памяти данных, т.к. процедуры обращения к ЗУ программ и данных проводятся с выработкой разных управляющих сигналов.
Память программ ОМЭВМ ..ВЕ48/49/35 может составлять до 4К байт, причем часть этой памяти (1-2К) может располагаться на кристалле. ОМЭВМ автоматически генерирует циклы обращения к внутренней памяти программ, если адрес команды (содержимое СчК) лежит в пределах внутренней памяти и на управляющий вход EMA подан L-уровень. При EMA = 1 независимо от содержимого СчК генерируется цикл обращения к внешней памяти программ. Таким образом, подав H-уровень на вход EMA, можно отключить внутреннюю память программ.
К системным ресурсам ОМЭВМ относится 8-разрядный таймер/счетчик внешних событий T. Это программно-доступный регистр (имеются команды MOV A,T и MOV T,A), который может работать (аппаратный суммирующий счетчик) в режиме таймера или счетчика внешних событий.
а) | 7 0 | ||||
00h | R0 | ||||
01h | R1 | ||||
РОН, банк 0 | б) | ||||
07h | R7 | 7 0 | |||
08h | Сч. К [7:0] | ||||
09h | PSW[7:4] | Сч. К [11:8] | |||
СТЕК 8уровней по 2 байта | 7 4 3 0 | ||||
16h | |||||
17h | |||||
18h | R0¢ | ||||
19h | R1¢ | ||||
РОН, банк 1 | |||||
1Fh | R7¢ | ||||
20h 3Fh | ОЗУ |
Рис. 11.3. Распределение памяти данных и формат уровня стека
В режиме таймера подсчитываются импульсы тактового генератора после делителя на 480. Таким образом, одна единица таймера соответствует 80 мкС (при тактовой частоте 6 МГц), а максимальное время счета - 20,4 мС. Запуск таймера осуществляется по команде STRT T, а прекращение счета - по команде STOP TCNT.
В режиме счетчика внешних событий подсчитывается число отрицательных перепадов (H ® L) на входе T1; запуск режима счета внешних событий осуществляется по команде STRT CNT, а прекращение счета – по команде STOP TCNT.
Переполнение таймера/счетчика во всех режимах вызывает установку флага таймера TF, и внутреннее прерывание по адресу 007, если прерывание по таймеру не запрещено.
Содержимое таймера/счетчика может быть в любой момент считано в аккумулятор A и там проанализировано. Предварительной загрузкой в T константы (из аккумулятора) можно выбрать произвольное время отсчета (в пределах диапазона 0,08 .. 20,4 мС с шагом 0.08 мС)
Подсистема прерываний ОМЭВМ включает два радиальных прерывания: внешнее - по входу INT (с вектором 003) и внутреннее - по переполнению таймера/счетчика (вектор 007). Каждое прерывание может быть запрещено программно. Команды управления подсистемой прерываний приведены в разделе 11.1.4 (специальные команды).
При необходимости можно использовать вход счетчика внешних событий T1 для подачи второго внешнего радиального прерывания (с вектором 007). В этом случае таймер следует загрузить кодом FF, тогда появление импульса на T1 вызовет переполнение счетчика и прерывание с вектором 007.
11.1.3. Порты ввода/вывода
В состав ОМЭВМ входят три 8-разрядных двунаправленных порта ввода/вывода, причем порты P1 и P2 являются фактически квазидвунаправленными. Кроме того, с помощью линий порта P2 можно обращаться к четырем 4-разрядным портам P4..P7.
Порт P0 (DB) снабжен двунаправленным буфером и предназначен для связи с внешней памятью. Через DB в сопровождении строба ALE выдается 8-разрядный адрес внешней памяти данных или младший байт адреса памяти программ. Кроме того, через DB принимаются команды (в сопровождении строба PME) или принимаются и выдаются данные (по стробам RD и WR соответственно. При отсутствии внешней памяти P0 можно использовать для связи с ВУ.
Порт P0 содержит 8-разрядный регистр, в который записывается информация при выводе в порт. При этом формируется строб записи WR. Информация сохраняется в регистре до поступления новой информации. При считывании из порта информация снимается непосредственно с входных линий и не фиксируется в регистре порта. Считывание сопровождается выдачей строба WR. Над входными данными и содержимым регистра могут производиться логические операции И и ИЛИ.
Рис. 11.4. Структура разряда квазидвунаправленного порта
Порты P1 и P2 так же содержат 8-разрядные регистры, предназначенные для фиксации выводимой информации (или маски для вводимой). Однако, порты не имеют двунаправленных буферных схем, поэтому для приема байта через P1 (P2) необходимо предварительно записать в регистр порта константу FFh, иначе разряды регистра, хранящие "0", передадут L-уровень на линии внутренней шины и в этих разрядах будут считаны лог."0" независимо от состояния входных линий. На Рис. 11.4 представлена схема одного разряда квазидвунаправленного порта.
Блок LB на Рис. 11.4 реализует логические операции над содержимым регистра порта и входным словом.
В системе команд предусмотрены команды ввода (IN) и вывода (OUT) для портов P0..P2, а так же конъюнкция и дизъюнкция содержимого регистра порта и непосредственного операнда (второй байт команды).
Кроме трех 8-разрядных портов, в ОМЭВМ предусмотрено подключение четырех
4-разрядных портов P4..P7, причем линии P2[3:0] используются для передачи 1/2-байта данных, линии P2[7:6] определяют номер порта, а P2[5:4] - операцию по команде:
0 0 | - чтение | - MOVD A, Pp; |
0 1 | - запись | - MOVD Pp, A; |
1 0 | - конъюнкция | - ANLD Pp, A; |
1 1 | - дизъюнкция | - ORLD Pp, A. |
В командах с 4-разрядными портами используется младшая тетрада аккумулятора A[3:0]. Синхронизация передачи осуществляется сигналом ST по выходу PROG/ST.