Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по микропроцессорам Щеглов.DOC
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
8.33 Mб
Скачать

Проблемы возникающие при кодировании.

Кодирование любого объекта из общего числа объектов, равному n, может быть выполнено:

способами, где . Если n=2k, то число вариантов кодирования в точности равно n! Выбирается такой вариант кодирования, который обеспечивал бы минимальные аппаратные затраты. Эффективных алгоритмов выбора оптимальных вариантов кодирования не существует, и задача решается методом перебора.

При кодировании состояний, помимо проблемы оптимального кодирования в указанном выше смысле, необходимо решать задачу борьбы с гонками, или состязаниями. Вследствие разброса времени перехода отдельных ЭА возникают промежуточные состояния, которые могут привести к неправильной работе автомата.

Н апример, пусть для ЭА Q1,Q2,Q3 имеем переход из ak=<1,0,0> в am=<1,1,1>.

При переходе может возникнуть состояние <1,1,0>, если Q2 быстрее изменяет своё состояние, чем Q3 (гонки выигрывает Q2) или <1,0,1>, если Q3 быстрее изменяет своё состояние, чем Q2 (гонки выигрывает Q3). Возможны два случая:

В случае «а» при воздействии входного сигнала xi достигается верное состояние am, в случае «б» вместо состояния am переходим в другое состояние al. В первом, случае автомат функционирует правильно, и гонки являются некритическими, во втором неправильно - гонки являются критическими.

Для борьбы с состязаниями используют различные методы:

1) Противогоночное кодирование состояний автомата. Оно приводит к увеличению числа состояний автомата. Частным случаем такого кодирования является соседнее кодирование, при котором на каждом переходе изменяется состояние только одного ЭА: 101111110100…

2) Тактирование входных сигналов Сi Ci. В этом случае предъявляются жёсткие условия к длительности тактирующего сигнала , которая должна быть не больше времени задержки в цепи обратной связи.

3) Использование двойной памяти на MS – триггерах и им подобных.

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

Пример 3.2.

Осуществим кодирование символов алфавитов абстрактных автоматов S1 и S2 из раздела 3.2.2. Они заданы на входном x={x1,x2,x3,x4} и выходном y={y1,y2,y3} алфавитах. Кроме того автомат Мура S1 определён на алфавите состояний A1={a1,a2,a3,a4}, а автомат Мили S2 на алфавите A2={a1,a2,a3}.

Определим разрядность кодов символов:

  1. алфавита состояний для S1: nQ=]log2na[=log24=2 (автомат Мура).

Возможно na!=4!=24 способов кодирования для S2: nQ=]log2na[=]log23[=2 (автомат Мили).

Возможно =4*3*2=24 способов кодирования.

  1. входного алфавита

nC=]log2nX[=log24=2

Возможно nX!=4!=24 вариантов кодирования.

  1. Выходного алфавита

nZ=]log2nY[=]log23[=2

Возможно =4*3*2=24 вариантов кодирования.

Д ля автомата S2 таблицу кодирования символов алфавита состояний A2 включает только первые три строки таблицы на рис. 3.22. Структурные автоматы имеют nC=2 входов, nZ=2 выходов и реализуются на nQ=2 элементарных автоматах.

3.3.3. Получение кодированной таблицы переходов и выходов.

Исходными данными для построения кодированной таблицы переходов и выходов являются:

1) Таблицы переходов и выходов абстрактного автомата.

2) Таблицы кодирования символов алфавита абстрактного автомата.

Таблица кодирования получается путём подстановки двоичных кодов символов в таблицу переходов и выходов абстрактного автомата.