Типичные ошибки при представлении комбинационных схем на vhdl
Из наиболее распространенных ошибок представления комбинационных схем, приводящих к явно избыточным затратам, а иногда к некорректному поведению синтезированной схемы, отметим следующие.
Неполный список чувствительности процесса порождает «неожиданные» триггеры. Рассмотрим для примера такой оператор
PROCESS(x0, x1)
BEGIN
z <= x0 AND x1 AND x2:
END PROCESS;
Отсутствие в списке чувствительности сигнала x2 синтезатор воспринимает как необходимость использовать триггер, управляемый сигналами x0 и x1.
2. Неполное представление альтернатив в операторах IF и CASE, а также в условных присваиваниях, порождает «неожиданные» триггеры.
Например, казалось бы, конъюнктор можно описать так:
PROCESS( x0, x1 )
BEGIN
IF x0 = '1' THEN z <= x1; END IF;
END PROCESS;
А что делать, если x0 = '0', а x1 изменяется? Такая запись предполагает в этом случае сохранение состояния. Синтезатор в этом случае выбирает триггер с управлением записью уровнем сигнала x1. Для схемы без памяти следовало бы записать
z <= '0';
IF x0 = '1' AND x1 = '1' THEN z <= '1' ;
END IF;
В данном примере это достаточно очевидно, тем более что здесь пользователь, попросту, будет использовать операцию И. Однако в сложных разложениях и случаях не полностью заданных функций подобная ошибка возможна, неочевидна и требует внимательного анализа.
3. Отнесение промежуточных членов разложения логических функций в процессах к категории сигналов может привести к неадекватному моделированию или породить «неожиданные» триггеры.
Пример:
-- a , b, c, d, e, f – сигналы типа BIT
PROCESS (a, b, c)
BEGIN
d <= a AND b;
e <= d AND c;
f <= d AND NOT c;
END PROCESS;
Изменение a или b вызывает исполнение процесса и предсказание изменения сигнала d. Но ввиду того, что это предсказание не изменяет сигнала до окончания процесса, e и f будут определяться на основании устаревшего значения d, а изменение d скажется только при следующей инициализации процесса.
-
Содержание
- 1.1. Структура программы на vhdl. Её основные компоненты
- Практикум по теме
- 1.3. Контрольные вопросы
- 2. Представление комбинационных схем
- 2.1. Параллельные и последовательные операторы
- Переменные и сигналы
- 2.3. Данные, выражения и их интерпретация в цифровом устройстве
- Типичные ошибки при представлении комбинационных схем на vhdl
- Практикум по теме
- 2.5. Контрольные вопросы
- 3. Структурное представление устройств
- 3.1. Структура и поведение
- 3.2. Описание структур на языке vhdl
- 3.3. Практикум по теме
- 3.4. Контрольные вопросы
- 4. Описание и синтез последовательностных схем
- 4.1. Триггеры и регистровые схемы
- 4.2. Практикум по теме
- 4.3. Контрольные вопросы:
- 5. Описание и синтез автоматов
- 5.1. Классические понятия цифровых автоматов
- 5.2. Инженерный подход к проектированию цифровых автоматов
- 5.3. Практикум по теме
- 5.4. Контрольные вопросы
- 6. Проектирование операционных устройств
- 6.1. Методы построения операционных устройств
- 6.2. Основные этапы проектирования цифровых устройств
- 6.3 Пример проектирования
- 6.4. Имплементация и отладка проектов
- 6.5. Практикум по теме
- Рекомендуется придерживаться следующего порядка работы:
- 6.4. Контрольные вопросы
- I. Описание системы моделирования
- 1. Краткое знакомство с системой меню
- Окно библиотеки проекта – содержит список доступных библиотек пользователя и файлов, включенных в проект
- Примерный порядок работы в системе QuestaSim V.6.5/6.6
- 4. Компиляция и синтаксическая отладка
- 5. Моделирование
- II. Описание системы имплементации проектов в плис
- 2.1. Типовая последовательность выполнения работы.
- 2.2. Процесс моделирования работы узлов средствами пакета Quartus II
- Работа в редакторе временных диаграмм
- III. Создание программ, описывающих автоматы
- Рекомендованные номера контактов для проекта
- 3.2. Таблица соединений платы Cyclone II Starter Board.