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


Разработка алгоритма работы управляющего автомата



Разработка алгоритма работы управляющего автомата

 

По заданию необходимо разработать алгоритм вычисления значения по формуле . Деление должно быть реализовано с помощью простейших микроопераций сложения и сдвига. Исходные данные представлены в формате целого со знаком.

Исходные значения - целые переменные А, В, С. Алгоритм начинается с записи значения переменной А в один из РОН-ов. Потом из этого регистра вычитается значение переменной В. Возможно в результате вычитания получится переполнение, которое фиксируется с помощью проверки соответствующего флага, и производится выход из алгоритма. Знак результата кодируется 0 или 1 и сохраняется в стэке.

После этого производится собственно деление (a-b)/c, которые находятся в памяти. В качестве алгоритма деления используется алгоритм деления целых чисел без знака. Знак результата формируется при завершении алгоритма извлечением из стэка кода этого знака (0 или 1). Соответственно проверяя условие получаем положительный или отрицательный результат.

 

Значение признака С и знака остатка Комментарий микрооперации в следующем такте Значение очередной цифры частного

Пробное вычитание(в см )

С=0, остаток< 0 Деление состоится Сдвиг влево на 1р. -

После пробного вычитания

С=0, остаток< 0 Сложение( в сумматор посылаетя У), затем сдвиг влево на 1р. 0 Zi=Ci

С=0, остаток> =0 Вычитание (в сумматор посылаетя ), затем сдвиг влево на 1р. 1

Zi=Ci  

3. Тестирование программы

 

Ниже приведен листинг LOG - файла при обработке переполнения разрядной сетки при вычитании чисел: (A-B)

Turbo Debugger Log

Variables28912 (70F0h)

b 36860 (8FFCh)

c 's' 115 (73h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ds: 0000 F0 70 FC 8F 73 00 00 00 Ёp№Пs

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

CPU 80486

ax 5F9B

 bx 0000

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0005

CPU 80486=0=0=0=0=0=0=1=0 80486

ax 0001

 bx E0F4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0089

CPU 80486=1=0=1=1=0=1=1=028912 (70F0h)

b 36860 (8FFCh)

c 's' 115 (73h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ax 5F9B

 bx E0F4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0005

Далее приведен листинг LOG - файла при обработке исключительной ситуации - делении на ноль

Turbo Debugger Log208 (D0h)

b 65516 (FFECh)

c ' ' 0 (00h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ax 5F9B

 bx 00D0

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0009

CPU 80486=0=0=0=0=0=0=1=080486

ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

CPU 80486

ax 0001

 bx 00E4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 027E

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0089

CPU 80486=0=1=0=0=1=0=1=080486

ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

Variables208 (D0h)

b 65516 (FFECh)

c ' ' 0 (00h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

Далее приведен листинг LOG - файла показывающего правильность алгоритма работы программы:

Turbo Debugger Log208 (D0h) 20 (14h) '_' 19 (13h) ' ' 0 (00h) ' ' 0 (00h) @5F9C: 0000 80486

ax 5F9B

 bx 00D0

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0009

CPU 80486

ds: 0000 D0 00 14 00 13 00 00 00 ¦

ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы

 ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=0=0=0=0=0=1=0208 (D0h) 20 (14h) '_' 19 (13h) '_' 17 (11h) '   ' 9 (09h) @5F9C: 0000 80486

ax 0000

 bx 1109

 cx 0000

 dx ED13

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 007B

CPU 80486

ds: 0000 D0 00 14 00 13 11 09 00 ¦

ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы

 ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=1=0=0=1=0=1=0

Управляющий аппарат алгоритм кодированный


Разработка УА с жесткой логикой

 

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

 

 

Общие сведения

 

Автомат с жесткой логикой строится на базе использования ЛЭ и элементов памяти. Изменить алгоритм работы такого автомата нельзя, не изменяя соединения между элементами. Для таких автоматов характерны высокое быстродействие, определяемое только задержками используемых ЛЭ и элементов памяти, пропорциональный рост обьема оборудования в зависимости от сложности реализуемого алгоритма и малые удельные затраты оборудования при реализации простых микропрограмм. Однако автоматы с жесткой логикой не обладают гибкостью при внесении изменений в алгоритм их функционирования, необходимость в которых особенно часто возникает в процессе проектирования цифровых устройств.

 

Абстрактный синтез

 

Построение ПТП ЦА МУРА:

N п/п Si(t) Xij Sj(t+1)
1 S0(y0) 1 S1(y1)
2 S1(y1) 1 S2(y2)
3 S2(y2) 1 S3(y3)
4 S3(y3) X1 S4(y4)
    x1 S5(y5)
5 S4(y4) 1 S6(y6)
6 S5(y5) 1 S7(y7)
7 S6(y6) 1 S8(y8)
8 S7(y7) 1 S9(y8)
9 S8(y8) 1 S10(y9)
10 S9(y8) 1 S11(y10)
11 S10(y9) 1 S12(y1)
12 S11(y10) 1 S13(y1)
13 S12(y1) 1 S14(y11)
14 S13(y1) 1 S15(y11)
15 S14(y11) X2 S2(y2)
    x2 S16(y3)
16 S15(y11) X2 S2(y2)
    x2 S16(y3)
17 S16(y3) 1 Sk(yk)

 

СКУ ЦА Мура имеет вид:

s1(t+1)=s0(t+1)=s1|s14*X2|s15*X2(t+1)=s2(t+1)=s3*X1(t+1)=s3*x1(t+1)=s4(t+1)=s5(t+1)=s6(t+1)=s7(t+1)=s8(t+1)=s9(t+1)=s10(t+1)=s11(t+1)=s12(t+1)=s13(t+1)=s14*x2|s15*x2=s16

CBФ имеет вид:

y1=s1|s12|s13=s2=s3|s16=s4=s5=s6=s7=s8|s9=s1010=s11

y11=s14|s15

Выполняется минимизация числа состояний. При этом используется метод пар.

Выписываем классы 1-эквивалентных состояний, чтобы перейти от автомата Мура к автомату Мили.

1.s0, s10, s11: (1-y1)

. s6, s7: (1-y8)

. s12, s13: (1-y11)

4. s14, s15: (X2-y2, x2-y3)

 

Строится таблица пар:

1 экв. 1 X2 x2
0--10 1--12    
0--11 1--13    
10--11 12--13    
6--7 8--9    
12--13 14--15    
14--15   2--2 16--16

 

После минимизации получим:

a0=s0, a1=s1, a2=s2, a3=s3, a4=s4, a5=s5, a6=s6, a7=s7, a8=s8, a9=s9, =s10, s11; a11=s12, s13; a12=s14, s15; s13=s16; a14=sk

После минимизации строим ПТП ЦА Мили

 

Ai(t) Xi, j(t) Aj(t+1) Yi, j(t+1)
A0 1 A1 Y1
A1 1 A2 Y2
A2 1 A3 Y3
A3 X1 A4 Y4
  x1 A5 Y5
A4 1 A6 Y6
A5 1 A7 Y7
A6 1 A8 Y8
A7 1 A9 Y8
A8 1 A10 Y9
A9 1 A10 Y10
A10 1 A11 Y1
A11 1 A12 Y11
A12 X2 A2 Y2
  x2 A13 Y3
A13 1 A14 Yk

Структурный синтез

Выбор варианта кодирования

Чтобы найти вариант кодирования состояний автомата близкий к оптимальному, построим диаграмму Вейча для 4 переменных.

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

 

Q1

Q3

q3

 
  A1 A0 A14 A13 Q2
  A2 A6 A8 A12 q2
q1 A3 A4 A10 A11  
  A5 A7 A9 ------ Q2
  Q4

q4

Q4  

 

В итоге получим следующее значения кодов состояний

 

A0 0001 A8 0111
A1 0000 A9 1011
A2 0100 A10 1111
A3 1100 A11 1110
A4 1101 A12 0110
A5 1000 A13 0010
A6 0101 A14 0010
A7 1001    

Неиспользованная кодовая группа - 1010

 

Описание работы

 

1. При включении питания на вход конъюнктора (D1.1), пока поступает 0 (происходит зарядка конденсатора С1 через сопротивление R1) происходит инициализация, устанавливающая JK-триггеры (D5-D8) в начальное состояние. Также этот сигнал поступает на триггер управления(D2), устанавливая его через R-вход в 0, что заставляет через элементы К155ЛИ1(D9, D10) отключить выходы схемы, т. е. У-ки не формируются. Затем конденсатор С1 заряжается и 1-ца поступает на входы R, S всех триггеров не изменяя состояния, функции возбуждения триггеров не формируются и схема не работает. Автомат находится в начальном состоянии и “ждёт” сигнала “пуск”.

2. Сигнал “пуск” соответствует нулевому импульсу, поступающему на вход S триггера D2 (ТМ2). На входе R данного триггера - пассивный сигнал, значит триггер установится в 1. Эта 1 с выхода триггера поступает на элементы (D9-D10), подключая выходы схемы, схема устанавливается в начальное состояние. В момент прихода сигнала «пуск» на выходе триггера D2 (TM2) формируется 1-ый уровень, который поступает на элемент ЛИ3, разрешающий проход синхроимпульса на входы синхронизации триггеров ТВ1 (D5-D8). При приходе синхроимпульса логика сформирует соответствующие функции возбуждения и выходные сигналы. По первому нарастающему фронту синхроимпульса триггеры D5-D8(ТВ1) перейдут под воздействием функций возбуждения в состояние, соответствующее следующему состоянию УА и т.д.

3.  При появлении конечного состояния на выходе на котором формируется Y12, появляется нулевой уровень, который поступает на вход элемента D4.3 (ЛН1), что приводит к появлению 0 на входе элементов D3.1, D3.2 (ЛИ3). Запрещается проход синхроимпульса. Производится инициализация схемы по пункту 1.

 


Построение кодированной ГСА

 

                                                                             

 

 


 

                                                                                                

 

Таблица прошивки ПЗУ

 

N АДРПЕР ЛУ Y ВЕРШИНА
0 000001 000 000000 0
1 000010 000 000001 1
2 00010Х 001 000010 2
3 000011 000 100001 43, авария
4 00011Х 010 000011 3
5 000011 000 011111 41
6 001000 000 000101 5
7 000110 000 000100 4
8 00101Х 010 000110 6
9 001101 000 001000 8
10 001001 000 000111 7
11 001100 000 001001 9
12 001101 000 001000 10
13 00111Х 011 001010 11
14 01000Х 001 001011 12
15 000011 000 011111 41
16 010010 000 001101 14
17 010000 000 001100 13
18 010011 000 001110 15
19 010100 000 001111 16
20 01011Х 100 010000 17
21 011000 000 010010 19
22 010101 000 010001 18
23 000011 000 011111 41
24 011001 000 010011 20
25 011010 000 010100 21
26 011011 000 010010 22
27 01110Х 100 010101 23
28 011110 000 010110 24
29 100110 000 010111 25
30 011111 000 011000 26
31 100000 000 010001 28
32 100001 000 010011 30
33 100010 000 010101 32
34 10010Х 011 011010 34, 35
35 101010 000 011011 37
36 011011 000 010010 22
37 100011 000 010101 36
38 100111 000 011001 27
39 101000 000 010001 29
40 101001 000 010000 31
41 100010 000 010101 33
42 10110Х 011 011010 38
43 101110 000 100000 42
44 101101 000 011101 39
45 101011 000 011110 40
46 101111 000 100000 42
47 110000 000 100010 44
48 000000 000 100011 45, КОН

 

Логические условия кодируются 3 разрядами:

 

 

Список использованной литературы

 

1 Сергеев Н.П., Вашкевич Н.П. «Основы вычислительной техники». Учебное пособие.

2 Справочник по интегральным микросхемам. / под ред. Б.В. Тарабрина.

3 Майко Г.В.«ASSEMBLER для IBM PC».

Разработка алгоритма работы управляющего автомата

 

По заданию необходимо разработать алгоритм вычисления значения по формуле . Деление должно быть реализовано с помощью простейших микроопераций сложения и сдвига. Исходные данные представлены в формате целого со знаком.

Исходные значения - целые переменные А, В, С. Алгоритм начинается с записи значения переменной А в один из РОН-ов. Потом из этого регистра вычитается значение переменной В. Возможно в результате вычитания получится переполнение, которое фиксируется с помощью проверки соответствующего флага, и производится выход из алгоритма. Знак результата кодируется 0 или 1 и сохраняется в стэке.

После этого производится собственно деление (a-b)/c, которые находятся в памяти. В качестве алгоритма деления используется алгоритм деления целых чисел без знака. Знак результата формируется при завершении алгоритма извлечением из стэка кода этого знака (0 или 1). Соответственно проверяя условие получаем положительный или отрицательный результат.

 

Значение признака С и знака остатка Комментарий микрооперации в следующем такте Значение очередной цифры частного

Пробное вычитание(в см )

С=0, остаток< 0 Деление состоится Сдвиг влево на 1р. -

После пробного вычитания

С=0, остаток< 0 Сложение( в сумматор посылаетя У), затем сдвиг влево на 1р. 0 Zi=Ci

С=0, остаток> =0 Вычитание (в сумматор посылаетя ), затем сдвиг влево на 1р. 1

Zi=Ci  

3. Тестирование программы

 

Ниже приведен листинг LOG - файла при обработке переполнения разрядной сетки при вычитании чисел: (A-B)

Turbo Debugger Log

Variables28912 (70F0h)

b 36860 (8FFCh)

c 's' 115 (73h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ds: 0000 F0 70 FC 8F 73 00 00 00 Ёp№Пs

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

CPU 80486

ax 5F9B

 bx 0000

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0005

CPU 80486=0=0=0=0=0=0=1=0 80486

ax 0001

 bx E0F4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0089

CPU 80486=1=0=1=1=0=1=1=028912 (70F0h)

b 36860 (8FFCh)

c 's' 115 (73h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ax 5F9B

 bx E0F4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0005

Далее приведен листинг LOG - файла при обработке исключительной ситуации - делении на ноль

Turbo Debugger Log208 (D0h)

b 65516 (FFECh)

c ' ' 0 (00h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

start @5F9C: 0000

CPU 80486

ax 5F9B

 bx 00D0

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0009

CPU 80486=0=0=0=0=0=0=1=080486

ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

CPU 80486

ax 0001

 bx 00E4

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 027E

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0089

CPU 80486=0=1=0=0=1=0=1=080486

ds: 0000 D0 00 EC FF 00 00 00 00 ¦ ь

 ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы_О+Л-

 ds: 0018 00 2B 1E 02 00 70 70 83 +-_ ppГ

Variables208 (D0h)

b 65516 (FFECh)

c ' ' 0 (00h)

ost ' ' 0 (00h)

rez ' ' 0 (00h)

Далее приведен листинг LOG - файла показывающего правильность алгоритма работы программы:

Turbo Debugger Log208 (D0h) 20 (14h) '_' 19 (13h) ' ' 0 (00h) ' ' 0 (00h) @5F9C: 0000 80486

ax 5F9B

 bx 00D0

 cx 0000

 dx 0000

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 0009

CPU 80486

ds: 0000 D0 00 14 00 13 00 00 00 ¦

ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы

 ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=0=0=0=0=0=1=0208 (D0h) 20 (14h) '_' 19 (13h) '_' 17 (11h) '   ' 9 (09h) @5F9C: 0000 80486

ax 0000

 bx 1109

 cx 0000

 dx ED13

 si 0000

 di 0000

 bp 0000

 sp 0280

 ds 5F9B

 es 5F63

 ss 5F73

 cs 5F9C

 ip 007B

CPU 80486

ds: 0000 D0 00 14 00 13 11 09 00 ¦

ds: 0008 00 00 00 00 00 00 00 00

 ds: 0010 B8 9B 5F 8E D8 8B 1E 00 Ы

 ds: 0018 00 2B 1E 02 00 70 70 83 +80486=0=1=0=0=1=0=1=0


Поделиться:



Последнее изменение этой страницы: 2020-02-17; Просмотров: 146; Нарушение авторского права страницы


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