Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Вычислительная техника и информационные технологии. Цифровые автоматы и микроконтролеры. Руководство к лабораторным работам в системе PROTEUS 7.2 SP6

.pdf
Скачиваний:
15
Добавлен:
12.11.2023
Размер:
4.8 Mб
Скачать

Рис. 6.6. Переход 1→3

– 3→2 (рис. 6.7).

Рис. 6.7. Переход 3→2

Аналогично проверяем фиксацию неправильных последовательностей, например 0→2 (рис. 6.8).

81

Рис. 6.8. Переход 0→2

Проверяя другие переходы, например 0→1→0, 0→1→3→1, убедимся, что неправильные переходы фиксируются схемой.

82

Лабораторная работа № 7

Реализация и моделирование заданной ГСА с помощью программы ПЛА

Возьмем полученную ранее отмеченную ГСА – ОГСА (рис. 7.1, 7.2).

 

 

Начало

 

 

x

 

 

ZZ

 

 

1

 

 

x

 

 

ZZ

 

 

2

 

1

x

 

X1

 

 

 

 

0

 

 

Z

 

0

x

 

X2

 

 

 

 

1

Z4

 

Z5

Z

 

x

Конец

Рис. 7.1. ГСА

Y

Y0

YY1

YY2

Y

Y3

YY0

Рис. 2. ОГСА

83

Тогда обобщенная таблица переходов-выходов такова

(табл. 7.1).

Таблица 7.1

y2

y1

~

~

~

~

x2

x1

y2(t+1)

y1(t+1)

~

Микрооперации

 

 

 

 

 

 

 

 

d2(t)

d1(t)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z1

z2

z3

z4

z5

0

0

0

0

0

0

~

~

0

1

0

1

0

0

0

0

0

1

0

0

0

0

~

~

1

1

0

0

1

0

0

0

1

1

0

0

0

0

~

0

1

0

0

0

0

1

0

0

1

1

0

0

0

0

~

1

1

1

0

0

1

0

0

0

1

0

0

0

0

0

0

~

0

0

0

0

0

0

1

0

1

0

0

0

0

0

1

~

0

0

0

0

0

0

0

1

 

Получим массив констант для реализации такой табли-

цы – без минимизации функций.

 

 

 

 

 

 

 

База входного слова имеет вид

y2 y1 0000x2 x1 , база выход-

ного слова y2 (t +1)y1 (t +1)0z1z2 z3 z4 z5 – первый ноль

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y2

y1

x2

x1

y2(t+1)

y1(t+1)

 

 

Микрооперации

 

 

 

 

 

d2(t)

d1(t)

z1

 

z2

z3

z4

z5

 

 

 

 

 

 

 

 

 

 

 

 

0

0

~

~

0

1

1

 

0

0

0

0

Тогда первая маска для первой строки: 11000000В, т.е. в шестнадцатеричном коде будет в байтовом формате 0C0H. Вторая маска нулевая по всем позициям: 00000000В, т.е. 00H. Тре-

тья маска 01010000В, т.е. 50H:

0

1

0

1

0

0

0

0

Аналогично определяем константы для других строк. Получим таблицу:

TABL:

db 0C0H,00H,50H,

 

db 0C0H,40H,0C8H,

 

db 0C1H,0C0H,84H,

 

db 0C1H,0C1H,0C8H,

 

db 0C2H,80H,02H,

 

db 0C2H,82H,01H,

00H

 

84

Используется та же программа ПЛА, только для имитации «синхронизации» используем нулевой бит порта Р3, т.е. наш автомат будет ждать «срабатывания» этого бита для перехода в новое состояние.

Программа выглядит следующим образом.

P1 EQU 90H

 

 

P2 EQU 0A0H

 

 

Begin:MOV A, P1

; Считываеми заносим в аккумулятор А

ANL A, #03h

 

; Маскируем

MOV R1, A

 

; в R1

MOV A, R3

 

; Внутреннее состояние в R3

ORL A, R1

 

; Получаем полное входное слово

MOV R1, A

 

; Полное входное слово в R1

MOV R2,#0

 

; Обнуляем R2, в нем выходное

 

 

слово

MOV DPTR,#TABL

; Указатель на массив констант

CLR A

 

; Очищаем аккумулятор

MOVC A,@A+DPTR

; Загружаем Х0(i) в А

MOV R0,A

 

; Х0(i) в R0

Next: MOV A, R0

 

; Х0(i) в A

ANL A,R1

 

; Маскируем входное слово Х0(i)

MOV R0,A

 

; Результат в R0

CLR A

 

; Очищаем аккумулятор

INC DPTR

 

; Инкрементируем регистр указатель

MOVC A,@A+DPTR

; Загружаем ХD(i) в А

XRL A,R0

; Сложение по модулю 2 с предыдущим

 

 

; результатом

INC DPTR

 

; Инкремент регистра указателя

JNZ Check

 

; Переход если ноль

CLR A

 

; Очищаем аккумулятор

MOVC A,@A+DPTR

; Загружаем Z(i)

ORL A,R2

 

; Получаем выходное слово

MOV R2,A

 

; Сохраняем результат в R2

Check:CLR A

 

; Очищаем аккумулятор

INC DPTR

 

; Инкрементируем регистр указателя

MOVC A,@A+DPTR

; Загружаем Х0(i+1)

 

 

85

 

MOV R0,A

; Х0(i+1) в R0

 

JNZ Next

; Переход по нулю

 

MOV A,R2

; Выход в R2

 

ANL A,#0C0H

; Выделяем y2(t+1)y1(t+1)

 

MOV R3,A

; Результат в R3

 

MOV P2, R2

; Выход на Р2

M1:

JNB 0B0H,M1

; организуем петлю по нулевому биту Р3 для

M2:

JB 0B0H,M2

; имитации «синхронизации» автомата

 

jmp Begin

 

TABL:db 0C0H,00H,50H, db 0C0H,40H,0C8H, db 0C1H,0C0H,84H,

db 0C1H,0C1H,0C8H, db 0C2H,80H,02H,

db 0C2H,82H,01H,00H

END

Получаем проект (рис. 7.3):

Рис. 7.3. Проект

86

Видим, что реализуется z1 при х1 = х2 = 0. Далее нажимаем «Синхро» (рис. 7.4).

Рис. 7.4. Состояние при нажатом «Синхро»

Отпускаем «Синхро» (рис. 7.5):

Рис. 7.5. Состояние при отпущенном «Синхро»

87

Получили z2, далее (рис. 7.6).

Рис. 7.6. Состояние z3

Получили z3, далее (рис. 7.7).

Рис. 7.7. Состояние z4

88

Получили z4. Далее возвращаемся к z1 (рис. 7.8).

Рис. 7.8. Возвращение в состояние z1

Теперь проверяем выдачу z при х1 = 1 (рис. 7.9).

Рис. 7.9. Проверка выдачи z при х1 = 1

89

В результате получаем z1. Далее получаем z2 и петлю (рис. 7.10).

Рис. 7.10. Получение состояния z2 и петли

При х1 = 0, х2 = 1 схема работает так (рис. 7.11).

Рис. 7.11. Работа схемы при х1 = 0, х2 = 1

90

Соседние файлы в папке книги