Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

CASE current_instruction IS. 2.3. Типичные ошибки при представлении комбинационных схем на VHDL. 2.4. Практикум по теме




CASE current_instruction IS

   WHEN add => < описание варианта реализации сложения>;

   WHEN subb => < описание варианта реализации вычитания>;

   WHEN and => < описание варианта реализации поразрядного И>;

   …….  

   END CASE;  

и так далее.

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

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

В практике наряду с алгебраической формой записи логической функции можно использовать алгоритмическую или табличную форму. Язык VHDL позволяет использовать для описания логики функционирования любую форму, не прибегая к преобразованию форм представления.

 

2. 3. Типичные ошибки при представлении комбинационных схем на VHDL

Из наиболее распространенных ошибок представления комбинационных схем, приводящих к явно избыточным затратам, а иногда к некорректному поведению синтезированной схемы, отметим следующие.

1. Неполный список чувствительности процесса порождает «неожиданные» триггеры. Рассмотрим для примера такой оператор

 

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 скажется только при следующей инициализации процесса.

2. 4. Практикум по теме

Для практического освоения темы предлагается выполнить модификацию и осуществить моделирование комбинационной схемы на основе различных способов реализации логической функции. Варианты индивидуальных заданий сведены в табл. 2. 1.

 

Таблица 2. 1.

Входной Числовой

Варианты задания функции

код эквивалент

 

В качестве исходных обучающемуся представляется файлы Lab21. vhd, Lab22. vhd и Lab23. vhd, содержание которых соответствует различным схемным реализациям комбинационных схем (рис. 2. 2), а представление на языке VHDL приведено в программах 2. 1 – 2. 4.

При проведения тестовых экспериментов над рядом схожих схем использование команды системы моделирования FORCE не рационально. В данной работе и последующих, в отличие от работы №1, используется принцип построения специальной тестовой программы TestBench. Текст программы содержится в файле Tb_Lab2 и приведен на листинге 2. 5. В отличие от программы на листинге 1. 1 здесь декларация ENTITY не определяет портов. Предполагается, что проект полностью «внутренне» определен. Он содержит генератор тестовой последовательности (процесс Stimulator) и модель некоторого «исследуемого» устройства (компонент – Lab2*), выходы которого будут наблюдаться проектировщиком в сеансе моделирования. Такой подход – создание модели экспериментальной установки, включающей в качестве компонентов собственно проектируемое устройство, генератор тестовых воздействий, а иногда и модуль анализа результатов – это весьма распространенный прием проектирования и отладки.

В программе (листинг 2. 5. ) процесс stimulator не имеет определенных инициализаторов и поэтому, безусловно, запускается в начале моделирования. Процесс включает в себя цикл изменения переменной i, причем между последующими изменениями предусмотрена приостановка (сохранение сигналов неизменными) на 50 нс. модельного времени. В начале каждого периода выполняется формирование сигналов, соответствующих текущему значению параметра цикла i в нескольких различных формах: как целое, как вектор, как набор независимых скалярных сигналов. В процессе выполнения работы этот фрагмент не меняется и служит для тестирования различных модификаций способа описания комбинационной логической схемы. В процессе работы обучающийся модифицирует функцию, воспроизводимую процессом.

 

Листинг 2. 5 Совместное представление комбинационной схемы и генератора тестового воздействия

 

  LIBRARY ieee;

USE ieee. std_logic_1164. ALL;

USE ieee. std_logic_arith. ALL;

USE STD. textio. ALL;

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...