Задание
Найти наименьший отчёт, зарегистрированный в «электронном журнале» во время предпоследнего сеанса снятия показаний датчиков.
Исходный данные:
Количество датчиков N – 5
Количество сеансов n – 2
Начальный адрес для файла G Аж.нач. – 2225(10) = 08B1(16)
Начальный адрес программы Апр.нач. – FA25(16)
Микропроцессорная система обработки журнальных данных
1. Каждому включению МСОЖД должен предшествовать рабочий цикл некоторого автомата для сбора данных (АСД), который в течении своего суточного цикла (когда сигнал X1 = 1) организует n сеансов связи и во время каждого «сеанса» поочерёдно (в порядке возрастания номеров) подключает датчики Д1…Дn ко входу данных Д ОЗУ, формирует адрес (номер) Aij ячейкидля записи показаний Дij i-го датчика в j-ом «сеансе» связи и вырабатывает саму команду w запись. В результате в конце суточного цикла сбора данных, когда сигнал />1|0 сменит свой уровень с 1 на 0, в ОЗУ окажется сформированным готовым к обработке файл G данных (т.е. электронный журнал), структура которого полностью известна.
На рисунке 1 изображена упрощённая структура такого автомата для сбора данных (АСД): в его состав входят программируемый электронный таймер, 8-разрядный N-канальный мультиплексор и два детектора, которые, анализируя показания таймера, формируют сигналы «сеанс» (=1 во время сеанса) и «цикл» (=1 во время цикла). Последний из них X1 хранится в регистре параллельного действия RG, т. е. в «порте» устройства ввода УВ №1 МСОЖД.
Рис. 1. Автомат для сбора данных.
2. Описание МСОЖД. Один из возможных вариантов построения МСОЖД показан на рисунке 2, где приведена микропроцессорная система с трёхшинной организацией, а в качестве центрального процессора (CPU) использована БИС КР580ВМ80. Если в ОЗУ в область свободную от обрабатываемого файла G, разместить программу, реализующую заданный пользователем алгоритм обработки, то становится возможной автоматизация процедуры обработки. Программ запускается по окончании суточного цикла сбора данных, а обработка начинается по сигналу X = 0, считываемому с «детектора цикла» АСД и вводимому через устройство ввода УВв №1 по команде INPUT программы. В ходе обработки программа должна обеспечивать неоднократное извлечение из ОЗУ любого элемента файла G, выполнение над ним необходимых арифметических и логических действий, приводящих к формированию конечного результата F, и выдачу F через устройство вывода УВыв №1 пользователю (по команде UOTPUT). Нужно учесть, что структура файла G такова (поочередная запись показаний датчиков в порядке возрастания их номеров во время каждого сеанса), что информация gij, принятая по i-ому каналу (i=1,2,…,n-1) во время j-ого сеанса (j=0,1,2,…,n-1), будет храниться в ячейке ОЗУ с номером = адресом Aij = Aнач + j*N+i.
А область памяти, которую занимает журнал, находится в диапазоне адресов от Анач до (Анач + n*N+1).
Рис. 2. МП – система автоматической ОЖД.
Если в программе выполняется команда, требующая обращение к памяти, то на 16-разрядную шину адреса ША выставляется номер требуемой ячейки Aij, а на 10-разрядной шине управления ШУ формируются сигналы «читай память» MEMR или «пиши в память» MEMW, которые задают режим работы ОЗУ и направление передачи по двунаправленной 8-разрядной шине данных ШД. Если же программа выполнит программу INPUT (или OUTPUT), то на ША выдаётся номер устройства ввода (или вывода), а на ШУ формируются сигналы «ввод/вывод читай» IOR (или «ввод/вывод пиши» IOW).
«Портом» УВв №1 является 8-разрядный регистр-защёлка, у которого младший разряд хранящегося в нем числа определяется сигналом Х1, а сигнал IOR поступает на вход «разрешение выдачи» ОЕ. «Порт» УВыв №1 также является параллельным 8-рязрядным регистром, на тактовый вход которого поступает сигнал IOW. Само Увыв представляет собой 3-разрядный 7-сегментный индикатор (для отображения результата F) и соответствующий кодопреобразователь, включенный между портом и индикатором.
3. Процессор КР580ВМ80.
В состав данного 8-разрядного процессора (рис. 3) входит АЛУ и программно-доступные регистры: аккумулятор РОН А, 6 регистров общего назначения РОН (с «именем» B, C, D, E, H и L) и счётчик команд РС. АЛУ, получив от УУиС указания о типе выполняемой операции f над доставленными на его входе операндами х1 их2, формирует результат F=f(x1 x2) и «флаги» Ф (признаки нулевого – Z, отрицательного – S и чётного результат Р или наличие переноса С7). Существенно, что результат F всегда (по умолчанию) размещается в РОН А. Это означает, что, если содержимое РОН А не является операндом следующей команды, то при программировании её должна предшествовать дополнительная команда (которой нет в алгоритме обработки пользователя) перезаписи содержимого РОН А в свободный РОН или в ячейку М памяти ОЗУ (=Ме-точку). Для программировании операций с РОН каждому из них присвоен порядковый номер i и соответствующий индивидуальный двоичный код ri (табл. 1). Для хранения 16-разрядный чисел d16=adr РОНя могут объединяться в регистровые пары rp: BC=rpB, DE=rpD, HL=rpH.
/>
Рис. 3. Упрощёшшая модель микропроцессора КР580ВМ80
Нумерация РОН. Табл. 1
i
Имя РОН
Код ri
1
2
3
4
5
6
7
/>/>/>B
C
/>/>/>D
/>E
/>/>H
L
M
A
000
001
010
011
100
101
110
111
Указатель стека SP хранит текущий адрес ячейки ОЗУ, являющейся на данный момент вершиной стека.
Счётчик команд PC хранит адрес выполняемой (текущей) команды: после её завершения содержимое PC инкрементируется, т. е.PC/>(PC) + 1, и через буферный PrАдр выдается на системную ША, а из ОЗУ (по сигналу MEM R) извлекается первый байт кода следующей команды из ячейки ОЗУ с номером (PC) + 1) и по системной шине ШД передается в регистр команд PrK.
Это означает, что в обычной ситуации процессор может выполнять команды программы только в том порядке, в котором они записаны в ОЗУ.
Чтобы изменить порядок выполнения команд (сделать скачок на несколько ячеек ОЗУ вперёд или назад, организовать ветвление или цикл, выполнить программу), необходимо в программу вставить команду безусловного или условного перехода, которая позволяет скачком менять содержимое (РС) счётчика команд РС.
Все регистры и АЛУ обмениваются между собой 8-разрядными данными d8 через внутреннюю двунаправленную ШД, однако на каждом такте обмен осуществляется только между одной парой «абонентов» (один — отправитель, другой – получатель).
Обмен между внутренней и внешней = системной ШД происходит через двунаправленный буферный регистр.
Каждая (текущая) команда программы (её код находится в PrK, а адрес в РС) выполняется процессором в течении определённого времени, называемого командным циклом продолжительностью от 1 до 4 тактов (при тактовой частоте 2 Mгц). В течении командного цикла устройство управления и синхронизации УуиС, будучи обычным управляющим автоматом (УА), декодирует с помощью дешифратора ДшК первый байт кода команды и в соответствии с этим кодом на каждом такте вырабатывает сигналы для внутреннего выполнения управлением микроопераций на «избранных» (на данном такте) функциональных узлах (регистрах, АЛУ, селекторе и др.), а также внешние управляющие сигналы (типа MEMR, MEMW, IOW и др.), выдаваемые на системную ШУ.
4. Система команд.–PAGE_BREAK–
Каждый процессор умеет выполнять ограниченный набор «приказов», входящих в его систему команд. Каждая команда представляет собой многоразрядный двоичный код (от 8 до 24 бит) определённого формата. Для процессора КР580ВМ80 предусмотрены команды трёх форматов: «короткие» однобайтные , двухбайтные и трёхбайтные . Первый байт команды любого формата содержит код операций Коп, второй — в двухбайтных командах содержит числовое значение непосредственно задаваемого операнда d8 или порядковый номер n устройства ввода/вывода = port n. Третий и второй байты «длинных» команд содержат либо численное значение 16-разрядного операнда d16, либо 16-разрядный адрес (“adr”): причем старший байт адреса/операнда размещается в , а младший в .
Ниже в таблице 2 приведены данные о наиболее ходовых командах процессора.
В таблице 2 поле 1 характеризует формат команды (в байтах), поле 2 – продолжительность командного цикла в количестве тактов; в поле 3 описывается (на языке микрокоманд) выполняемая операция: запись (ri) означает «содержимое» регистра ri, запись — «содержимое байта Bi? (HL) – регистровой пары HL, а в поле 5 побитовая структура 1 – го байта кода команды.
В командах пересылке и загрузки (NN1 и 2) нужно учесть, что при ri = 110 в обмене участвует ячейка М ОЗУ, адрес которой (по умолчанию) хранится в регистровой паре HL. Это означает, что команда MOV и MVI обязательно должна предшествовать команда загрузки регистровой пары (HL/>adr), т. е. команда LXI.
В ассемблерной записи команд NN3 и 21 фигурирует старший регистр ri (=B, D или H) регистровой пары rp. При выполнении двухоперандных команд (NN7 – 18) первые операнд x1 всегда берётся из РОН А, а второй x2 из другого РОНа или задается непосредственно во втором байте команды. Логические операции, в отличии от арифметических, выполняются поразрядно.
Для всех команд условного перехода (NN25 – 30) при невыполнении проверяемого условия в PC загружается адрес adr = (PC) + 3.
Система команд процессора КР580ВМ80. Табл.2
NN
n/n
Ассемблерная запись команды
Формат
(байты)
Такты
Выполняемая операция
Форми-
руемые
флаги
Структура
(номера разрядов)
Команды пересылке и загрузке
1.
2.
3.
4.
5.
6.
MOV_ri,rj
MVI_ri,d8
LXI_ri,d16
XCHD
PCHL
SPHL
1
2
3
1
1
1
5
7
10
4
5
5
ri← (rj)
ri←B2>
ri←,ri+1←
(HL)↔(DE)
PC←(HL)
SP←(HL
нет
нет
нет
нет
нет
нет
1
1
1
1
1
1
1
←
←
←
1
1
1
ri
ri
ri
→
→
→
1
1
1
←
1
ri
1
1
→ продолжение
–PAGE_BREAK–
1
1
1
1 –PAGE_BREAK–
1
1
1
1
1 –PAGE_BREAK–
ri
–PAGE_BREAK—-PAGE_BREAK–
1
2
3
4
5
6
М1
FA25
FA26
DB
01
K1
IN_00
A←(port 0)
2
10
FA27
FA28
E6
01
K2
ANI_01
A←(A)^maska
maska = 01h
2
7
FA29
FA2A
FA2B
C2
89
FE
K3
JNZ_M1:
Усл. Переход (УП) по условию Х1 = 0
(«обработку начать»)
3
10
FA2C
FA2D
FA2E
21
86
26
K4
LXI_H,08B1
HL←Апред
(Апред = adr = 08B1
3
10
FA2F
5E
K5
MOV_E,M
E←gt (из ОЗУ)
1
5
FA30
FA31
0E
00
K6
MVI_C,00
С←0 (At:=0)
2
7
M2
FA32
23
K7
INX_H
HL←(HL)+1
инкремент At
1
5
FA33
0C
K8
INR_C
C←(C)+1(инкр. Kt)
1
5
FA34
79
K9
MOV_A,C
А←С
1
5
FA35
FA36
FE
0D
K10
CPI_0C
Сравнение(А) с Krp=05
2
7
FA37
FA38
FA39
F2
A7
FE
K11
JP_M2:
УП на метку М2
(«конец файла G»)
3
10
FA3A
7E
K12
MOV_A,M
А←gt (из ОЗУ)
1
5
FA3B
BB
K13
CMP_E
Сравнение (А) и gmin
1
4
FA3C
FA3D
FA3E
F2
96
FE
K14
JP_M3:
УП на метку М3
(«новый отсчёт gt меньше, чем gmin?»)
3
10
FA3F
5F
K15
MOV_E,A
Сохранить gt в РОН E
1
5
FA40
FA41
FA42
C3
98
FE
K16
JMP_M3:
Безусл. Переход (БП)
на метку М3
(PC) ←
3
10
M2
FA43
7B
K17
MOV_A,E
A←(E)
1
5
FA44
FA45
D3
01
K18
OUT_01
Выдать gminна индикацию через Увыв №1
2
10
FA46
76
K19
HLT
Стоп
1
7 продолжение
–PAGE_BREAK–