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

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

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

Рис. 4.3. Граф автомата Мили

Построим обобщенную таблицу переходов-выходов (табл.4.1). Используем D-триггеры со входами d2, d1.

Таблица 4.1

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

0

1

~

~

1

1

0

1

0

0

0

1

1

~

0

1

0

0

0

1

0

0

1

1

~

1

1

1

0

1

0

0

0

1

0

0

~

0

0

0

0

0

1

0

1

0

1

~

0

0

0

0

0

0

1

Рассмотрим обобщенную таблицу переходов-выходов, получим по ней таблицу программирования ПЗУ путем преобразования всех функций в СДНФ – совершенную дизъюнктивную нормальную форму (табл. 4.2).

Таблица 4.2

 

Адреса

 

 

 

Данные

 

 

 

y2

y1

x2

x1

y2(t+1)

y1(t+1)

 

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

 

d2(t)

d1(t)

z1

z2

z3

z4

z5

 

 

 

 

1

2

3

4

5

6

7

8

9

10

11

0

0

0

0

0

1

1

0

0

0

0

0

0

0

1

0

1

1

0

0

0

0

0

0

1

0

0

1

1

0

0

0

0

 

 

 

 

 

51

 

 

 

 

 

Окончание табл. 4.2

1

 

2

 

3

 

4

 

5

 

6

 

7

 

8

 

9

 

10

 

11

0

 

0

 

1

 

1

 

0

 

1

 

1

 

0

 

0

 

0

 

0

 

0

 

1

 

0

 

0

 

1

 

1

 

0

 

1

 

0

 

0

 

0

 

 

0

 

 

1

 

 

0

 

 

1

 

 

1

 

 

1

 

 

0

 

 

1

 

 

0

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

1

 

1

 

0

 

1

 

1

 

0

 

1

 

0

 

0

 

0

 

0

 

1

 

1

 

1

 

1

 

1

 

0

 

1

 

0

 

0

 

0

 

 

1

 

 

1

 

 

0

 

 

0

 

 

1

 

 

0

 

 

0

 

 

0

 

 

1

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

1

 

0

 

1

 

0

 

0

 

0

 

1

 

0

 

0

 

1

 

1

 

0

 

1

 

1

 

1

 

0

 

1

 

0

 

0

 

0

 

 

1

 

 

1

 

 

1

 

 

1

 

 

1

 

 

1

 

 

0

 

 

1

 

 

0

 

 

0

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

0

 

1

 

0

 

1

 

0

 

0

 

1

 

0

 

0

 

0

 

0

 

0

 

1

 

0

 

 

1

 

 

0

 

 

1

 

 

0

 

 

0

 

 

0

 

 

0

 

 

0

 

 

0

 

 

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0

 

1

 

1

 

0

 

0

 

0

 

0

 

0

 

0

 

1

 

Запишем массив шестнадцатеричных чисел – таблицу про-

граммирования ПЗУ: 30Н,30Н, 30Н, 30Н, 68Н, 68Н, 68Н, 68Н, 02Н, 02Н,01Н,01Н,44Н,68Н, 44Н,68Н. Схема имеет вид(рис.4.4).

Рис. 4.4. Микропрограммное устройство управления

Сформируем НЕХ-массив. Для этого используем программу PLA16, в которой имеется таблица TABL, в которой и записываем нашу таблицу.

52

Открываем папку «Ассемблер 51» (рис. 4.5).

Рис. 4.5. Выбор рабочей папки

Открываем готовый (созданный ранее) файл PLA16.ASM и изменяем в нем таблицу.

TABL:

 

 

db 30H,30H,30H,

 

db 30H,68H,68H,

 

db 68H,68H,02H,

 

db 02H,01H,01H,

 

db 44H,68H,44H,

 

db 68H,00H,00H,

 

db 00H,00H,00H,

 

db 00H,00H,00H,

00H

P1 EQU 90H

 

 

P2 EQU 0A0H

 

 

Begin:MOV A, P1

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

ANL A, #03h

; Маскируем

 

MOV R1, A

; в R1

 

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

53

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)

MOV R0,A

 

; Х0(i + 1) в R0

JNZ Next

 

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

MOV A,R2

 

; Выход в R2

ANL A,#0CH

 

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

MOV R3,A

 

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

MOV P2, R2

 

; Выход на Р2

jmp Begin

 

 

NOP

 

 

NOP

 

 

NOP

 

 

NOP

 

 

NOP

NOP

NOP

54

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

NOP

END

После изменения программы ее необходимо откомпилировать, т.е. получить объектный код. Это выполняется с помощью компилятора 51.ВАТ (рис. 4.6).

Рис. 4.6. Запуск компилятора 51.BAT

55

Запускаем компилятор (рис. 4.7).

Пишем название программы (PLA16), нажимаем «Ввод»

(рис. 4.8).

Рис. 4.7. Окно компилятора 51.BAT

Рис. 4.8. Ввод названия файла

После компиляции проверяем отсутствие ошибок в файле Pla16.lst (рис. 4.9). Ошибки не обнаружены. Если ошибки есть, их нужно устранить.

Посмотрим сформированный файл Pla16.hex:

:100000003030303068686868020201014468446832

:10001000000000000000000000E5905403F9EB49E7

:10002000F97A00900000E493F8E859F8E4A39368A3

:10003000A37004E4934AFAE4A393F870ECEA540C36

:10004000FB8AA080D4000000000000000000000037

:080050000000000000000000A8

:00000001FF

Нам необходима только первая строчка – 16 чисел, но в наше ПЗУ мы загрузим все.

56

Рис. 4.9. Файл с описанием ошибок

Вначале строим схему без триггеров (рис. 4.10).

Рис. 4.10. Схема устройства

57

Загружаем в ПЗУ требуемый файл (рис. 4.11).

Рис. 4.11. Загрузка файла программы

Проверяем, что в ПЗУ есть наша таблица по первым 16 адресам. По нулевому адресу проверяем состояние индикато-

ров D2–D5 (рис. 4.12).

Рис. 4.12. Проверка содержимого ПЗУ по нулевому адресу

58

По первому адресу проверяем состояние индикаторов D2–D5

(рис. 4.13).

Рис. 4.13. Проверка содержимого ПЗУ по первому адресу

И так далее, до 1111.

Теперь устанавливаем обратную связь на триггерах микросхемы 74175 (рис. 4.14).

Рис. 4.14. Схема с обратной связью

59

Проверяем работу. Все переменные – по нулям, формируется согласно ГСА – z1. Нажимаем и отпускаем «Синхро» (CLOK) (рис. 4.15). Формируется согласно ГСА – z2.

Рис. 4.15. Формирование состояния z2

Нажимаем и отпускаем «Синхро» (CLOK) (рис. 16). Формируется согласно ГСА – z3.

Рис. 4.16. Формирование состояния z3

60

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