Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Однокристальные микро-ЭВМ К1816ВЕ48/49/35



Восьмиразрядные ОМЭВМ К1816ВЕ48, К1816ВЕ49 и К1816ВЕ35 отличаются лишь объемом и типом памяти программ:..ВЕ48 - 1К ППЗУ с УФ - стиранием,..ВЕ49 - 2К ПЗУ с масочным программированием,..ВЕ35 не содержит на кристалле памяти программ. Все остальные архитектурные и структурные особенности этих микро-ЭВМ идентичны; ниже будет рассмотрена ОМЭВМ..ВЕ48, структурная схема которой показана на Рис. 11.1.

11.1.1.

 
 

Структура ОМЭВМ

 

Рис. 11.1. Структурная схема ОМЭВМ К1816ВЕ48

ОМЭВМ включает в себя 8-разрядное АЛУ, ОЗУ программ объемом 64 байта, 8-разрядный регистр команд и 12-разрядный счетчик команд, три 8-разрядных (квази)двунаправленных порта ввода/вывода, 8-разрядные регистр-аккумулятор A, таймер/счетчик T и регистр слова состояния PSW. Устройство управления УУ включает тактовый генератор, автомат управления операциями на кристалле и схему связи с внешней средой. Кроме того, ОМЭВМ..ВЕ48 содержит на кристалле ППЗУ программ объемом 1K байт.

12-разрядный СчК позволяет процессору управлять памятью команд до 4K, поэтому в системе предусмотрена возможность подключения внешней памяти.

Назначение выводов ОМЭВМ:

DB(P0), P1, P2 - восьмиразрядные двунаправленные порты ввода/вывода. Кроме того, по линиям DB передается младший байт адреса и код команды или данные при связи ОМЭВМ с внешней памятью, а по линиям P2[3: 0] - старшие разряды адреса;

¨ ALE - строб адреса внешней памяти, сопровождает появление адреса на линиях DB и позволяет " защелкнуть" адрес во внешнем регистре адреса;

¨ CR1, CR2 - входы для подключения кварцевого резонатора (1..6 МГц), на вход CR1 можно подавать синхроимпульсы от внешнего тактового генератора;

¨ CLR - сброс;

¨ SS - управление пошаговым режимом работы ОМЭВМ;

¨ PME - строб чтения из внешней памяти программ;

¨ RD, WR - стробы чтения и записи во внешнюю память данных;

¨ EMA - режим внешнего доступа, при EMA = 1 производится выборка команд только из внешней памяти программ;

¨ INT - радиальный запрос внешнего прерывания, при появлении на входе INT L-уровня и установленном бите разрешения прерывания процессор переходит на выполнение подпрограммы с адреса 003h;

¨ T0 - тестируемый вход (имеется команда условного перехода по состоянию T0), может использоваться как выход тактовой частоты внутреннего генератора;

¨ T1 - тестируемый вход, может использоваться как вход счетчика внешних событий;

¨ PROG/ST - в режиме программирования ППЗУ на этот вход подается импульс записи амплитудой 25 В, в режиме работы ОМЭВМ используется для стробирования передачи данных через порты расширения.

Элементы архитектуры ОМЭВМ

Формат слова состояния 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.

Порты ввода/вывода

В состав ОМЭВМ входят три 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.

Система команд ОМЭВМ

Система команд ОМЭВМ серии К1816 ориентирована на эффективную реализацию процедур управления: маскированный ввод/вывод, логические операции, операции с битами, большое число команд условных переходов, арифметические операции в двоичном и десятичном кодах.

Программно-доступными объектами в составе ОМЭВМ серии К1816 являются: регистр - аккумулятор А, таймер/счетчик Т, порты ввода/вывода P0..P2, P4..P7, регистр PSW, два банка по восемь регистров R0..R7, R0'..R7 и 64 ячейки внутренней памяти данных - с адресами 00H..3FH. Кроме того, по специальной команде MOVX может быть доступна внешняя память данных с адресами 00H..FFH.

При программировании следует иметь в виду, что в качестве регистров (банк 0) R0..R7 используются ячейки внутренней памяти данных с адресами 00H..07H соответственно, а в качестве R0..R7' (банк 1) - ячейки 18H..20H. В ОМЭВМ серии К1816 предусмотрен 8-уровневый стек, в который автоматически (по команде CALL или в процедуре прерываний) загружается 12-разрядный программный счетчик PC и 4 флажка признаков. Таким образом, один уровень стека занимает два байта. Под стек используются регистры внутренней памяти данных с адресами 08H..17H, указатель стека младшие три бита регистра PSW.

В системе команд ОМЭВМ серии К1816 используются прямая, косвенная и непосредственная адресация. По прямому адресу можно обращаться к аккумулятору А, таймеру/счетчику Т, регистру PSW, портам ввода/вывода P0..P2, P4..P7 и регистрам R0..R7, R0'..R7. Примеры команд с прямой адресацией: ADD A, R3; MOV T, A; MOV A, PSW; IN A, P1;

Косвенно можно адресоваться к ячейкам памяти данных через регистры R0, R1 текущего банка, например:

MOV A, @R0 - чтение в аккумулятор содержимого ячейки внутреннего ОЗУ данных, адрес которой хранится в R0;

INC @R1 - добавление 1 к содержимому ячейки внутреннего ОЗУ данных, адрес которой хранится в R1;

MOVX A, @R0 - чтение в аккумулятор содержимого ячейки внешнего ОЗУ данных, адрес которой хранится в R0;

MOVX @R0, A - запись содержимого аккумулятора в ячейку внешнего ОЗУ данных, адрес которой хранится в R0;

Двухбайтовые команды с непосредственной адресацией позволяют загружать константу, содержащуюся во втором байте в регистры или косвенно адресуемые ячейки внутреннего ОЗУ или задавать второй операнд в двухместных арифметических и логических операциях, например:

MOV A, #5E; MOV R6, #40; MOV @R4, #77; ANL A, #08;

По типу операций можно выделить следующие классы команд: пересылки и загрузки, включая и команды обращения к портам ввода/вывода; арифметические и логические; передачи управления; специальные команды.

Класс команд пересылки и загрузки представлен главным образом разновидностями команд MOV, обеспечивающих пересылку информации между регистрами, ячейками внутренней памяти данных, аккумулятором, таймером, регистром PSW, а так же загрузку перечисленных объектов константами. Две команды позволяют считывать в аккумулятор А содержимое ячеек памяти программ:

MOV А, @А - считывает с текущей страницы содержимое ячейки памяти программ, косвенно адресуемой через аккумулятор: А: = ЗУ Прг(PC(11: 8).А(7: 0));

MOVP3 А, @А - считывает с третьей страницы содержимое ячейки памяти программ, косвенно адресуемой через аккумулятор: А: = ЗУ Прг(0011.А(7: 0));

Команды обмена XCH меняют местами содержимое аккумулятора и регистра или косвенно адресуемой ячейки памяти. Команды XCHD меняют местами только младшие тетрады аккумулятора и ячейки памяти, при этом старшие тетрады остаются неизменными.

Команда SWAP А меняет местами старшую и младшую тетрады в аккумуляторе.

Чтение в аккумулятор содержимого портов P0..P2 осуществляется по командам IN А, P..; запись содержимого аккумулятора в порт P0..P2 - командами OUTL P.., А.

Для работы с четырехразрядными портами P4..P7 используют команды MOVD А, P..; MOVD P.., А, причем в обмене участвует только младшая тетрада.

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

ADD A, R7; ADDC A, @R1; ANL A, #0F;

К двухместным операциям данного класса в ОМЭВМ К1816ВЕ35 относятся:

* ADD - сложение;

* ADDC - сложение с переносом;

* ANL - конъюнкция;

* ORL - дизъюнкция;

* XRL - сумма по модулю два (исключающее ИЛИ).

Следует обратить внимание, что в системе команд отсутствует команда вычитания!

Логические операции с непосредственной адресацией могут выполняться и над содержимым портов P0, P1, P2:

* ANL Pp, #D: Pp: = Pp & #D;

* ORL Pp, #D: Pp: = Pp Ú #D; Pp = [0, 1, 2].

Для четырехразрядных портов P3..P7 возможно выполнение логических операций с младшей тетрадой аккумулятора A[3: 0]:

* ANLD Pq, A: Pq: = Pq & A[3: 0];

* ORLD Pq, A: Pq: = Pq Ú A[3: 0]; Pq = [4, 5, 6, 7].

Одноместные операции включают:

* DAA - десятичная коррекция аккумулятора;

* CLR A; CPL A - очистка аккумулятора; инверсия аккумулятора;

* INC A; INC R; INC @R - инкремент содержимого аккумулятора, регистра, ячейки памяти;

* DEC A; DEC R -декремент содержимого аккумулятора или регистра;

* RL A; RR A - циклический сдвиг аккумулятора влево и вправо;

* RLC A; RRC A - циклический сдвиг аккумулятора влево и вправо через триггер флага переноса;

Действия команд сдвигов описываются следующими выражениями:

* RL A: A[7: 0]: = A[6: 0].A[7]; FC: = A[7]

* RR A: A[7: 0]: = A[0].A[7: 1]; FC: = A[0]

* RLC A: FC.A[7: 0]: = A[7].A[6: 0].FC;

* RLC A: FC.A[7: 0]: = A[0].FC.A[7: 1];

Группа команд передачи управления включает команды безусловного и условных переходов, команду безусловного вызова подпрограммы и две команды безусловного возврата.

Все команды переходов являются двухбайтовыми, причем только команда безусловного перехода JMP позволяет осуществить т.н. " длинный" переход - в пределах всей памяти программ. Остальные команды организуют переход в пределах текущей страницы (старшие 4 бита программного счетчика не меняются). Среди них:

* JMPP @A - безусловный переход по косвенному адресу PC[7: 0]: = A;

* JC/JNC - условные переходы по переносу/отсутствию переноса;

* JZ/JNZ - условные переходы по нулю/не нулю аккумулятора;

* JT0/JNT0 - условные переходы по состоянию входа T0;

* JT0/JNT1 - условные переходы по состоянию входа T1;

* JF0, JF1 - условные переходы по единичному значению флагов пользователя;

* JTF - условный переход по переполнению таймера;

* JNI - условный переход, если сигнал на входе запроса на внешнее прерывание INT = 0;

* JBb - условный переход по единичному значению заданного бита аккумулятора;

К командам передачи управления может быть отнесена команда организации цикла DJNZ Ri, a; где Ri - номер регистра (R0..R7), a - смещение на странице. Команда декрементирует содержимое заданного регистра и, если результат не равен нулю, осуществляется переход.

Команда безусловного вызова подпрограммы CALL позволяет вызвать подпрограмму из любой области памяти программ - она, подобно JMP, загружает все 12 разрядов PC. Предварительно старое значение PC вместе с PSW(7: 4)(флаги) загружается в стек.

Во внутреннем языке К1816ВЕ35 существуют две команды безусловного возврата:

* RET - восстанавливает PC, не меняя PSW;

* RETR - восстанавливает PC и PSW[7: 4].

Специальные команды можно, в свою очередь, разбить на несколько групп.

Команды управления таймером/счетчиком:

* STRT T - запуск таймера;

* STRT CNT - запуск счетчика внешних событий;

* STOP TCNT- останов таймера/счетчика.

Команды управления подсистемой прерываний:

* EN TSNTI - разрешить прерывание от таймера/счетчика;

* DIS TSNTI - запретить прерывание от таймера/счетчика;

* EN I - разрешить внешнее прерывание;

* DIS I - запретить внешнее прерывание.

Команды выбора блоков памяти:

* SEL RB0 - выбор банка регистров 0;

* SEL RB1 - выбор банка регистров 1;

* SEL RB0 - выбор блока 0 памяти программ;

Команды управления флагами:

* CLR C; CLR F0; CLR F1 - очистка признаков переноса и флажков пользователя;

* CPL C; CPL F0; CPL F1 - инверсия признаков переноса и флажков пользователя;

Прочие команды:

* ENT0 CLK - разрешение выдачи сигнала синхронизации на вывод T0; NOP - пустая операция.

Расширение ресурсов ОМЭВМ

При работе с внешней памятью программ ОМЭВМ выдает младший байт адреса команды через DB в сопровождении строба ALE и старший полубайт адреса СчК[11: 8] - через P2[3: 0]. В следующем такте снимается младший байт адреса и формируется строб чтения команды из внешней памяти программ PME. Считанный байт команды должен поступать на линии DB, с которых и передается в регистр команд. На Рис. 11.5 показана временная диаграмма обращения ОМЭВМ во внешнюю память программ, а на Рис. 11.6 – схема подключения памяти.

 

 

Рис. 11.5. Обращение к внешней памяти программ

Независимо от физического воплощения памяти программ, она рассматривается в ОМЭВМ как сплошной массив адресов 000..FFFh, причем адреса 000..7FF составляют нулевой блок памяти, а 800..FFF - первый. Переход из блока в блок путем естественного наращивания адреса СчК невозможен. Так, после команды (однобайтовой) по адресу 7FF будет выполнена команда по адресу 000, а не 800. Перенос в СчК[11] отсутствует, а его изменение возможно только специальными командами SEL MB0 и SEL MB1.

 

 

Рис. 11.6. Подключение внешней памяти программ

 

Наличие команд выбора блока памяти (программ) и выбора банка регистров SEL RB0 и SEL RB1 позволяет иметь в системе две в какой-то мере защищенных друг от друга области системных ресурсов. Эти области можно использовать для работы двух независимых программ или области программ и области подпрограмм.

 

Архитектура ОМЭВМ позволяет расширить память данных, подключив дополнительно 0, 25К байт внешней памяти. В системе команд предусмотрены специальные команды обращения к внешней памяти данных:

* MOVX A, @R0 - чтение в аккумулятор содержимого ячейки внешнего ОЗУ данных, адрес которой хранится в R0;

* MOVX @R0, A - запись содержимого аккумулятора в ячейку внешнего ОЗУ данных, адрес которой хранится в R0.

Внешняя память данных адресуется только косвенно (через регистры R0 и R1), причем, поскольку мнемоника команд обращения к внешней и внутренней памяти данных различна (MOVX и MOV соответственно), допустимо иметь одинаковые адреса в этих типах памяти. Подключение внешней памяти данных показано на Рис. 11.7.

 
 
ОМЭВМ К1816 ВЕ35/48
DB
ALE
Рг
D
D
C
CS

 


 
 

 


Рис. 1

 

Рис. 11.7. Подключение внешней памяти данных

Если системе недостаточно портов микро-ЭВМ (P0..P2, P4..P7), то возможно подключение внешних контроллеров параллельного обмена, например К580ВВ55. При этом допустимы различные варианты подключения: 1) подключить как внешнюю память данных с обращением по командам MOVX; 2) без использования адресного регистра, обращение по командам MOVX, однако используются только стробы RD и WR при работе команд MOVX. Адрес команды (содержимое регистра R0 или R1) безразличен, а для адресации используются линии порта P1 или P2. Соответствующие разряды должны быть загружены в порт до выполнения команды обращения к внешнему порту MOVX.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-13; Просмотров: 908; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.065 с.)
Главная | Случайная страница | Обратная связь