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

книги / Реализация цифровых автоматов в системе Quartus фирмы Altera

..pdf
Скачиваний:
10
Добавлен:
19.11.2023
Размер:
27.48 Mб
Скачать

Определим задержку (рис. 3).

Рис. 3. Определение временной задержки схемы реализации функции трех переменных №132 на «гибкой» логике

Ставим первый маркер на фронт сигнала 011(3), а второй – на первую формируемую «1» на выходе. Получаем 10 наносекунд. Как ни странно, она получилась даже меньше, чем у схемы на «жесткой» логике. Видимо, это связано с тем, что и в «жесткой» схеме каждый элемент – это тоже ПЗУ! А как в реальной схеме делает компилятор, нам не ведомо… Но там в цепи от входа к выходу – два элемента, а здесь три…

2. Варианты заданий

Построить схему реализации заданной функции трех переменных на «гибкой» логике по вариантам (указаны в лабораторной работе №1). Варианты заданий: соответствуют номеру по списку группы.

71

Лабораторная работа №5 СИНТЕЗ И ИССЛЕДОВАНИЕ ПОСЛЕДОВАТЕЛЬНОСТНОГО

АВТОМАТА-АКЦЕПТОРА (РАСПОЗНАВАТЕЛЯ) НА «ГИБКОЙ» ЛОГИКЕ

Задание: синтезировать автомат-распознаватель заданной последовательности двоичного двухразрядного сигнала на «гибкой» логике.

Пример. Пусть необходимо распознавать последовательность 013 двоичного двухразрядного сигнала. При ее получении сформировать выходной сигнал z1 «верно», при нарушении последовательности – сигнал z2 «неверно».

Воспользуемся таблицей переходов-выходов (ТПВ, табл. 3) из лабораторнойработы№2 иперенесем еевтабл. 1.

Таблица 1

Представим ее несколько иначе (табл. 2).

72

 

 

 

 

 

 

 

 

 

 

Таблица 2

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

a

 

b

 

y(t+1)

 

 

 

 

 

 

 

 

 

 

 

d(t)

z1

 

z2

 

0

 

 

0

 

0

0

0

 

0

 

0

 

 

0

 

1

1

0

0

 

 

 

 

 

0

 

 

1

 

0

 

0

0

 

1

 

0

 

 

1

 

1

-

-

-

 

1

 

 

0

 

0

1

0

1

 

1

 

 

0

 

1

1

0

0

 

1

 

 

1

 

0

-

-

-

 

1

 

 

1

 

1

1

1

0

Это и будет почти таблица программирования ПЗУ. Здесь данные по семи адресам – три функции y(t+1)(d(t)), z1, z2. Только надо записать вместо «тильд» какие-нибудь конкретные значения, например нули (табл. 3).

 

 

 

 

 

 

 

 

 

Таблица 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

a

 

b

y(t+1)

 

 

 

 

 

 

 

 

 

 

 

 

d(t)

z1

 

 

z2

 

0

 

 

0

 

0

0

0

 

0

 

 

 

 

 

 

 

0

 

 

0

 

1

1

0

 

0

 

 

0

 

1

 

0

0

0

 

 

1

 

 

0

 

 

1

 

1

0

0

 

 

0

 

 

1

 

 

0

 

0

1

0

 

1

 

 

1

 

 

0

 

1

1

0

0

 

 

1

 

 

1

 

0

0

0

 

 

0

 

 

1

 

 

1

 

1

1

1

 

 

0

 

Таким образом, y(t+1)(d(t)) – это дизъюнкция наборов 1, 4, 5, 7; z1 – это один набор 7; z2 – это дизъюнкция наборов 2, 4.

1. Выполнение эксперимента

Реализуем постоянное запоминающее устройство, как и ра-

нее, на основе дешифратора 74154 (megafunctions, others, maxplus2) и элементов ИЛИ. В качестве элемента памяти возьмем четырехразрядный регистр 74175.

73

У дешифратора «занулен» адресный вход D, так как у нас функции трех переменных, а также «занулены» инверсные управляющие входы G1N, G2N. Занулены и три оставшихся входа регистра. Получим рис. 1.

Рис. 1. Схема автомата-распознавателя на «гибкой» логике

Поскольку выходы дешифратора инверсные, то они инвертируются инверторами. Обращаем внимание на порядок переменных на адресных входах дешифратора: старшая – y, далее – a, младшая – b.

Обращаем внимание, что на схеме не должно быть одинаковых имен элементов и контактов! Иначе при компиляции будет зафиксирована ошибка.

После компиляции приступаем к временному моделированию (рис. 2).

Видим формирование 1 по z1. Сформируем неправильную последовательность 02 (рис. 3).

Сформируем неправильнуюпоследовательность010 (рис. 4).

74

Рис. 2. Проверка правильной последовательности 013

Рис. 3. Формирование z2 = 1

75

Рис. 4. Проверка последовательности 010

Все работает!

76

Лабораторная работа №6 СИНТЕЗ И ИССЛЕДОВАНИЕ СХЕМЫ МИКРОПРОГРАММНОГО

УСТРОЙСТВА УПРАВЛЕНИЯ НА «ГИБКОЙ» ЛОГИКЕ ПО ЗАДАННОЙ ГСА

Задание: синтезировать микропрограммное устройство управления на «гибкой» логике по заданной графической схеме алгоритма.

Пример. Построим микропрограммное устройство управления на «гибкой» логике по заданной ГСА из лабораторной работы №3. Результат сведем в обобщенную таблицу перехо- дов-выходов (табл. 1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица

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

 

 

Преобразуем все функции в СДНФ для получения таблицы

программирования ПЗУ (табл. 2).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица

2

 

 

 

Адреса

 

 

 

 

 

 

 

 

Данные

 

 

 

 

 

 

 

y2

 

y1

x2

 

x1

y2(t+1)

 

y1(t+1)

 

 

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

 

 

 

 

 

 

 

 

 

 

 

d2(t)

 

d1(t)

z1

 

z2

 

z3

 

z4

z5

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

 

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

77

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

Обращаем внимание, что в табл. 2 номера клеток расположены не по порядку!

Получим символическую форму функций: y2(t+1) = d2(t) = 4, 5, 6, 7, 12, 13, 14, 15;

y1(t+1) = d1(t) = 0, 1, 2, 3, 4, 5, 6, 7, 14, 15; z1 = 0, 1, 2, 3;

z2 = 4, 5, 6, 7, 14, 15; z3 = 12, 14;

z4 = 8, 9;

z5 = 10, 11.

Запишем массив шестнадцатеричных чисел – таблицу программирования ПЗУ (это строки данных табл. 2): 30Н, 30Н, 30Н,

30Н, 68Н, 68Н, 68Н, 68Н, 02Н, 02Н, 01Н, 01Н, 44Н, 68Н, 44Н, 68Н.

Схема имеет вид (рис. 1).

 

 

 

A ROM D

 

 

Логические

x1

 

1

1

z5

 

x2

 

2

2

z4

Выходные сигналы –

условия

y1(t+1)

3

z3

 

 

4

4

z2

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

 

 

y2(t+1) 8

5

z1

 

 

 

 

16

6

 

 

 

 

 

7

 

 

 

 

 

 

к генератору

 

 

 

 

 

 

импульсов

 

 

 

 

 

c

D2D 1

Хранитель состояния

 

 

 

 

 

RG

автомата

 

 

 

 

 

 

Рис. 1. Микропрограммное устройство управления на «гибкой» логике – на основе ПЗУ

78

1. Выполнение эксперимента

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

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

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

Открываем готовый (созданный ранее) файл 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

79

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)

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

 

80