Арифметико-логическое устройство (АЛУ). Регистр PSW
Арифметико-логическое устройство (АЛУ). Регистр PSW
Арифметико-логическое устройство (АЛУ). Регистр PSW
АЛУ представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций, а также операции логического сдвига, обнуления, установки и т. п.
АЛУ состоит из регистра аккумулятора, регистра временного хранения, ПЗУ констант, сумматора, дополнительного регистра (регистра В), аккумулятора, регистра состояния программы.
Регистр аккумулятора и регистр временного хранения -- восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Программно не доступны.
ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.
Параллельный восьмиразрядный сумматор представляет собой схему комбинационного типа с последовательным переносом, предназначенную для выполнения арифметических операций сложения, вычитания и логических операций сложения, умножения, неравнозначности и тождественности.
Регистр В -- восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.
Аккумулятор представляет собой восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций пересылки.
Регистр состояния программы (PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы. Обозначение разрядов регистра PSW и назначение разрядов приведены соответственно в таблицах 1, 2.
Флаг переноса CY может устанавливаться и сбрасываться как аппаратными, так и программными средствами. Флаг CY может быть программно прочитан. Аппаратными средствами флаг CY устанавливается, если в старшем бите результата возникает перенос или заем. При выполнении операций умножения и деления флаг CY сбрасывается. Кроме того, флаг CY выполняет функции "булева аккумулятора" в командах, работающих с битами.
Флаг дополнительного переноса АС программно доступен по записи ("0" и "1") и чтению.
Флаги F0, RS1, RS0 программно доступны по записи ("0" и "1") и чтению.
Флаг переполнения OV программно доступен по записи ("0" и "1") и чтению. Устанавливается аппаратно, если результат операции сложения/вычитания не укладывается в семи битах и старший (восьмой) бит результата не может интерпретироваться как знаковый. При выполнении операции деления флаг OV аппаратно сбрасывается, а в случае деления на нуль устанавливается. При умножении флаг OV аппаратно устанавливается, если результат больше 255.
Флаг Р является дополнением содержимого аккумулятора до четности. В 9-разрядном слове, состоящем из 8 разрядов аккумулятора и бита Р, всегда содержится четное число единичных битов. В случае, если в аккумуляторе все разряды установлены в "0", флаг Р примет нулевое значение. Программно доступен только по чтению.
Таймеры/счетчики (Т/С) предназначены для подсчета внешних событий, для получения программно управляемых временных задержек и выполнения времязадающих функций ОМЭВМ.
В состав блока Т/С входят:
1) два 16-разрядных регистра Т/С 0 и Т/С 1;
2) восьмиразрядный регистр режимов Т/С (TMOD);
3) восьмиразрядный регистр управления (TCON);
4) схема инкремента;
Таблица 1
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
Обозначе-ние
|
CY
|
AC
|
F0
|
RSI
|
RS0
|
0V
|
-
|
P
|
|
|
Таблица 2
Биты
|
Наиме-нов.
|
Назначение битов
|
Доступ к биту
|
|
7
|
CY
|
Флаг переноса. Изменяется во время выполнения некоторых арифметических и логических инструкций.
|
аппаратно или программно
|
|
6
|
AC
|
Флаг дополнительного переноса. Аппаратно устанавливается /сбрасывается во время выполнения инструкций сложения или вычитания для указания переноса или заёма в бите 3 при образовании младшего полубайта результата (D0-D3).
|
аппаратно или программно
|
|
5
|
F0
|
Флаг 0. Флаг состояния определяемый пользователем.
|
программно
|
|
4
|
RSI
|
Указатель банка рабочих регистров
|
программно
|
|
3
|
RS0
|
Указатель банка рабочих регистров
|
программно
|
|
|
RSI
|
RS0
|
|
|
|
|
0
|
0
|
Банк 0 с адресами (00Н - 07Н)
|
|
|
|
0
|
1
|
Банк 1 с адресами (08Н - 0FH)
|
|
|
|
1
|
0
|
Банк 2 с адресами (10Н - 17Н)
|
|
|
|
1
|
1
|
Банк 3 с адресами (18Н - IFH)
|
|
|
2
|
OV
|
Флаг переполнения. Аппаратно устанавливается/сбрасывается во время выполнения арифметических инструкций для указания состояния переполнения
|
аппаратно или программно
|
|
1
|
--
|
Резервный. Содержит триггер, доступный по записи ("0" и "1") и чтению, который можно использовать
|
|
|
0
|
P
|
Бит четности. Аппаратно сбрасывается/устанавливается в каждом цикле инструкций для указания четного/нечетного количества разрядов аккумулятора, находящихся в состоянии "1".
|
аппаратно или программно
|
|
|
5) схема фиксации INT0, INT1, Т0, Т1;
6) схема управления флагами;
7) логика управления Т/С.
Два 16-разрядных регистра Т/С 0 и Т/С 1 выполняют функцию хранения содержимого счета. Каждый из них состоит из пары восьмиразрядных регистров, соответственно ТН0, TL0 и TH1, TL1. Причем регистры ТН0, ТН1 -- старшие, а регистры TL0, TL1 -- младшие 8 разрядов. Каждый из восьмиразрядных регистров имеет свой адрес и может быть использован как РОН, если Т/С не используются (бит TR0 для Т/С 0 и бит TR1 для Т/С 1 в регистре управления TCON равны "0").
Код величины начального счета заносится в регистры Т/С программно. В процессе счета содержимое регистров Т/С инкрементируется. Признаком окончания счета, как правило, является переполнение регистра Т/С, т. е. переход его содержимого из состояния "все единицы" в состояние "все нули". Все регистры ТН0, ТН1, TL0, TLI доступны по чтению, и, при необходимости, контроль достижения требуемой величины счета может выполняться программно.
Регистр режимов Т/С (TМOD) предназначен для приема и хранения кода, определяющего:
-- один из 4-х возможных режимов работы каждого Т/С;
-- работу в качестве таймеров или счетчиков;
-- управление Т/С от внешнего вывода.
Обозначение разрядов регистра TMOD приведено в таблице 3. Назначение разрядов регистра TMOD приведено в таблице 4.
Таблица 3
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
Обозн.
|
GATE1
|
С/T1
|
Ml.l
|
M0.1
|
GATE0
|
C/T0
|
M1.0
|
M0.0
|
|
|
Таблица 4
Биты
|
Наименование
|
Назначение битов
|
М0-М1
|
|
0-1
|
М0-М1
|
Определяют один из 4-х режимов работы, отдельно для Т/С 1 и Т/С в
|
Все биты устанавливаются программно; биты 0-3 определяют
|
|
4-5
|
|
М1
|
М0
|
Режим
|
режим работы Т/С в 0
|
|
|
|
0
|
0
|
0
|
режим работы Т/С 1.
|
|
|
|
0
|
1
|
1
|
|
|
|
|
1
|
0
|
2
|
|
|
|
|
1
|
1
|
3
|
|
|
2,6
|
С/Т 0
|
Определяют работу в качестве:
|
|
|
|
С/Т 1
|
С/Т 0, С/Т 1 = 0 - таймера
|
|
|
|
|
С/Т 0, С/Т 1 = 1 - счетчика
|
|
|
3,7
|
GATE
|
Разрешает управлять таймером от внешнего вывода (INT0 - для Т/С 0, INT1 - для Т/С 1). GATE = 0 - управление запрещено GATE = 1 - управление разрешено
|
|
|
|
При работе в качестве таймера содержимое регистра Т/С инкрементируется в каждом машинном цикле, т. е. Т/С является счетчиком машинных циклов ОМЭВМ, Поскольку машинный цикл состоит из 12 периодов частоты синхронизации ОМЭВМ fBQ, то частота счета в данном случае равна fBQ/1
При работе Т/С в качестве счетчика внешних событий содержимое регистра Т/С инкрементируется в ответ на переход из "1" в "0" сигнала на счетном входе ОМЭВМ (вывод Т0 для Т/С 0 и вывод Т1 для Т/С 1). Счетные входы аппаратно проверяются в фазе S5P2 каждого машинного цикла. Когда проверки показывают высокий уровень на счетном входе в одном машинном цикле и низкий уровень в другом машинном цикле, регистр Т/С инкрементируется. Новое (инкрементированное) значение заносится в регистр Т/С в фазе S3PI машинного цикла, непосредственно следующего за тем, в котором был обнаружен переход из "1" в "0" на счетном входе ОМЭВМ. Т. к. для распознавания такого перехода требуется два машинных цикла (24 периода частоты синхронизации ОМЭВМ fBQ), то максимальная частота счета Т/С в режиме счетчика равна fBQ/24.
Чтобы уровень сигнала на счетном входе был гарантировано зафиксирован, он должен оставаться неизменным в течение как минимум одного машинного цикла.
Регистр управления (TCON) предназначен для приема и хранения кода управляющего слова. Обозначение разрядов регистра TCON приведено в табл. 9. Назначение разрядов регистра TCQN приведено в табл. 7.
Флаги переполнения TF0 и TFI устанавливаются аппаратно при переполнении соответствующих Т/С (переход Т/С из состояния "все единицы" в состояние "все нули"). Если при этом прерывание от соответствующего Т/С разрешено, то установка флага TF вызовет прерывание. Флаги TF0 и TFI сбрасываются аппаратно при передаче управления программе обработки соответствующего прерывания.
Флаги TF0 и TFI программно доступны и могут быть установлены/сброшены программой. Используя этот механизм, прерывания по TF0 и TFI могут быть вызваны (установка TF) и отменены (сброс TF) программой.
Флаги IЕ0 и IЕ1 устанавливаются аппаратно от внешних прерываний (соответственно входы ОМЭВМ INT0 и INT1) или программно и инициируют вызов программы обработки соответствующего прерывания. Сброс этих флагов выполняется аппаратно при обслуживании прерывания только в том случае, когда прерывание было вызвано по фронту сигнала. Если прерывание было вызвано уровнем сигнала на входе INT0 (INTI), то сброс флага IЕ должна выполнять программа обслуживания прерывания, воздействуя на источник прерывания для снятия им запроса.
Схема инкремента предназначена;
--для увеличения на 1 в каждом машинном цикле содержимого регистров Т/С 0, Т/С 1, для которых установлен режим таймера и счет разрешен;
-- для увеличения на 1 содержимого регистров Т/С 0, Т/С 1, для которых установлен режим счетчика, счет разрешен и на соответствующем входе ОМЭВМ (Т0 для Т/С 0 и Т1 для Т/С 1) зафиксирован счетный импульс.
Схема фиксации INT0, INT1, Т0, Т1 представляет собой четыре триггера. В каждом машинном цикле в момент S5P2 в них запоминается информация с выводов ОМЭВМ INT0, INT1, Т0, Т1.
Схема управления флагами вырабатывает и снимает флаги переполнения Т/С и флаги запросов внешних прерываний.
Логика управления Т/С синхронизирует работу регистров Т/С 0 и Т/С 1 в соответствии с запрограммированными режимами работы и синхронизирует работу блока Т/С с работой ОМЭВМ.
Таблица 6
Биты
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
|
Обозначение
|
TF1
|
TR1
|
TF0
|
TR0
|
IЕ1
|
IT1
|
IЕ0
|
IT0
|
|
|
Таблица 7
Би-ты
|
Наименование
|
Назначение битов
|
Примечание
|
|
6
|
TR1
|
Биты выключения Т/С, отдельно для
|
Биты устанавливаются и
|
|
4
|
ТR0
|
Т/С в и Т/С 1.
|
сбрасываются программно.
|
|
|
|
TR=0 - выключен,
|
Доступны по чтению.
|
|
|
|
TR=1 - включен.
|
|
|
7
|
TF1
|
Флаги переполнения Т/С.
|
Биты сбрасываются и
|
|
5
|
ТF0
|
|
устанавливаются аппаратно
|
|
|
|
|
и программно.
|
|
|
|
|
Доступны по чтению.
|
|
2
|
IT1
|
Биты, определяющие вид прерывания
|
Биты устанавливаются и
|
|
0
|
IТ0
|
по входам INT0, INT1:
|
сбрасываются программно
|
|
|
|
IТ=0 - прерывание по уровню
|
Доступны по чтению.
|
|
|
|
(низкому)
|
|
|
|
|
IТ=1 - прерывание по фронту
|
|
|
|
|
(переход из "1" в "0")
|
|
|
3
|
IE1
|
Флаги запроса внешних прерываний,
|
Биты сбрасываются и устанавливаются аппа-
|
|
1
|
IE0
|
по входам INT0, INT1
|
ратно и программно.
|
|
|
|
|
Доступны по чтению.
|
|
|
|
|
Биты 4,5 относятся к Т/С в; биты 6, 7 - к Т/С 1. Биты 0,1 определяют внешние прерывания по входу INT0, биты 2,3 - по входу INT1.
|
|
|
Режим работы каждого Т/С определяется значением битов М0, М1 в регистре TMOD. Т/С 0 и Т/С 1 имеют четыре режима работы. Режимы работы 0, 1, 2 одинаковы для обоих Т/С; Т/С 0 и Т/С 1 в этих режимах полностью независимы друг от друга. Работа Т/С 0 и Т/С 1 в режиме 3 различна. При этом установка режима 3 в Т/С 0 влияет на режимы работы Т/С 1.
Установка битов М0=0, М1=0 определяет режим работы 0. Т/С в режиме 0 представляет собой устройство на основе 13-разрядного регистра и функционально совместим с таймером/счетчиком семейства МК48 (восьмиразрядный таймер/счетчик с пред делителем на 32).
13-разрядный регистр состоит для Т/С 0 из 8 разрядов регистра ТН0 и 5 младших разрядов регистра TL0, а для Т/С 1--из 8 разрядов регистра ТН1 и 5 младших разрядов регистра TLI.
В этом режиме функцию делителя на 32 выполняют регистры TL0, TL1. Они являются программно доступными, но надо помнить, что значащими в режиме 0 являются только пять младших разрядов регистров TL0, TL1.
Для Т/С 0 логика работы аналогична. Источник синхронизации ОМЭВМ (внутренний или внешний). На выходе OSC -- частота fBQ. Бит С/Т регистра TMOD определяет работу Т/С или в качестве таймера (С/Т=0), или в качестве счетчика (С/Т=1). Счет начинается при установке бита TR регистра Tcon в состояние "1". При необходимости управления счетом извне бит GATE регистра THOD устанавливается в состояние "1". Тогда при TR=1 счет будет разрешен, если на входе INT0 (для Т/С 0) или INTI (для Т/С 1) установленно состояние "1" и будет запрещен, если установлено состояние "0". Установка бита TR0 для Т/С 0 и TR1 для Т/С 1 в состояние "0" выключает Т/С независимо от состояния других битов.
При переполнении Т/С (переход содержимого регистра Т/С из состояния "все единицы" в состояние "все нули") устанавливается флаг TF0 для Т/С 0 или TF1 для Т/С 1 в регистре TCON.
Установка битов М1=0, М0=1 определяет режим работы 1. Режим 1 аналогичен режиму 0. Отличие состоит в том, что установка режима 1 превращает Т/С в устройство на основе 16-разрядного регистра. Для Т/С 0 регистр состоит из программно доступных пар TL0, ТН0, для Т/С 1 из программно доступных пар TL1, ТН1. Логика работы в режиме 1 на примере Т/С 1 показана на рис. 1.
Рис. 1. Логика работы Т/С 1 в режиме 1
Установка битов М1=1, М0=0 определяет режим В этом режиме Т/С представляет собой устройство на основе восьмиразрядного регистра TL0 для Т/С 0 и TLI для Т/С 1. При каждом переполнении TL0 кроме установки в регистре TCON флага TF0 происходит автоматически перезагрузка содержимого из ТН0 в TL0. Соответственно для Т/С 1 при переполнении TLI в регистре TCON устанавливается флаг TFI и происходит перезагрузка TLI из ТН1. Регистры ТН0 и ТН1 загружаются программно. Перезагрузка TL0 из ТН0 и TLI из ТН1 не влияет на содержимое регистров ТН0 и ТН1. Логика работы Т/С 0 в режиме 2 аналогична. Назначение битов управления TR0, TR1, GATE0, GATE1, С/Т 0, С/Т 1 такое же как режиме 0.
Установка битов М1=1, М0=1 определяет режим 3. Т/С 1 в режиме 3 заблокирован и просто сохраняет свой счет (значение кода в регистре Т/С). Эффект такой же, как при установке TR1=0.
Т/С 0 в режиме 3 представляет собой два независимых устройства на основе восьмиразрядных регистров TL0 и ТН0. Устройство на основе регистра TL0 может работать в режиме таймера и в режиме счетчика. За ним сохраняются все биты управления Т/С 0, оно реагирует на воздействия по входам Т0, INT0. При переполнении TL0 устанавливается флаг TF0. Устройство на основе регистра ТН0 может работать только в режиме таймера. Оно использует бит включения TR1, при переполнении ТН0 выставляет флаг TF1. Других битов управления устройство на основе ТН0 в этом режиме не имеет.
Установка Т/С 0 в режим 3 лишает Т/С 1 бита включения TRI. Поэтому Т/С 1 в режимах 0, 1, 2 при GATE1=0 всегда включен и при переполнении в режимах 0 и 1 Т/С 1 обнуляется, а в режиме 2 перезагружается не устанавливая флаг, если Т/С 0 находится в режиме 3. Управление от входов INT1, Т1, биты управления C/T1, GATE1 для Т/С 1 не зависят от режима Т/С 0.
Т/С 1 аппаратно связан с блоком синхронизации последовательного интерфейса (ПИ). При работе в режимах 0, 1, 2 при переполнении Т/С 1 всегда вырабатывает импульс тактировки ПИ. Поэтому 3-й режим Т/С 0 удобно применять тогда, когда требуется работа ПИ и двух таймеров или ПИ, таймера и счетчика.
Когда Т/С 0 переведен в режим 3, Т/С 1 можно выключить, переведя его также в режим 3, использовать с последовательным портом для выработки импульсов тактировки или в любых других приложениях, не требующих прерывания. Дополнительная информация. Выключение Т/С с помощью битов TR0, TR1 (сброс этих битов в "0") или с помощью входов ОМЭВМ INT0, INT1 (установка на этих входах логического "0" при GATE=1) не искажает код, находящийся в регистре Т/С. Т/С можно выключить, через произвольное время вновь включить и счет начнется с той величины, которая была в регистре Т/С на момент выключения (если, конечно, после выключения регистр Т/С не перезаписывался).
Новая загрузка Т/С сразу же означает новую величину счета, а старая теряется. Если загрузка произведена при включенном Т/С, счет продолжится с новой величины. Очередность загрузки регистров TL0, ТН0, TL1, ТН1 -- произвольная.
Во всех режимах, кроме режима 2, после переполнения Т/С счет продолжается с величины 00Н, если Т/С не выключить с помощью битов TR0, TR1 или входов INT0, INT1.
Литература
1 Тавернье К. PIC-микроконтроллеры. Практика применения: Пер. с фр. -М: ДМКПресс, 2008. - 272 с.: ил. (Серия «Справочник»).
2 Борзенко А.Е. IBM PC: устройство, ремонт, модернизация. - 2-е изд. перераб. и доп. - М.: ТОО фирма «Компьютер Пресс», 2006. - 344с.: ил.
3 Цифровые интегральные микросхемы: Справ./М. И. Богданович, И.Н. Грель, В.А. Прохоренко, В.В. Шалимо.-Мн.: Беларусь, 2001. - 493 с.: ил.
4 ДСТУ 3008-95. Документация. Отчеты в сфере науки и техники. Структура и правила оформления.
|