Мегаобучалка Главная | О нас | Обратная связь


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



2020-02-04 346 Обсуждений (0)
Типичные ошибки при представлении комбинационных схем на VHDL 0.00 из 5.00 0 оценок




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

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.1.

 

Таблица 2.1.

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

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

код эквивалент 0 1 2 3 4 5 6 7
000 0 1 1 0 0 0 0 0 1
001 1 0 1 1 1 0 1 0 0
010 2 1 0 0 1 1 0 0 0
011 3 0 0 1 0 0 1 1 0
100 4 0 0 0 0 1 0 1 1
101 5 0 1 0 1 1 1 0 1
110 6 1 0 0 0 1 0 1 1
111 7 0 0 1 1 0 1 0 0

 

В качестве исходных обучающемуся представляется файлы 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;

 

ENTITY Tb_Lab2 IS

 

END Tb_Lab2;

ARCHITECTURE test OF Tb_Lab2 IS

 

SIGNAL stim_integer      : INTEGER;

SIGNAL  z, x0, x1, x2    :std_logic;

SIGNAL v                       :std_logic_vector( 1 DOWNTO 0);

 

COMPONENT Lab2

 PORT (

       x0, x1, x2 : IN std_logic;

       z                 : OUT std_logic

       );

 END COMPONENT;

 

BEGIN

 

 u1:Lab2

 PORT MAP(x0,x1, x2, z);

 

       stimulator:

     PROCESS

                   VARIABLE i                              : INTEGER;

                   VARIABLE stim_vector : std_logic_vector( 2 DOWNTO 0);

     BEGIN

                   --TIME_VAR:=5NS;  

                   FOR i IN 0 TO 15 LOOP

                 stim_integer <=i;

                 stim_vector :=conv_std_logic_vector(i,3);

                 x0 <= stim_vector(0);

                 x1 <= stim_vector(1);

                 x2 <= stim_vector(2);

                          WAIT FOR 50 ns;   

                   END LOOP;

                 ASSERT false REPORT "End of Stimulation !"

                 SEVERITY error;

                 WAIT;

     END PROCESS;

 

       END test;

 

 

 Рекомендуется придерживаться следующего порядка работы:

I. Моделирование

1. Запустить моделирующую программу  (QuestaSim или ModelSim).

2. Создать в системе моделирования новый проект, включив в него файл  Tb_Lab2.vhd, а также файлы Lab21.vhd, Lab22.vhd и Lab23.vhd . Изменить тексты программ в файлах Lab2*.vhd так, чтобы реализовать в каждой из них одну из функций таблицы  2.1 по заданию преподавателя.

3. Выполнить компиляцию проекта Tb_Lab2.vhd со встроенным компонентом Lab21.

4. Запустить  процедуру моделирования,  вызвав опцию simulate системы моделирования. Открыть окна наблюдения  source, signal, wave. После отладки проект сохранить в новом директории.

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

6. Повторить пункты 3 – 5 для компонента Lab22. Объяснить получаемую реализацию.

7. Повторить пункты 3 – 5 для компонента Lab23. Объяснить получаемую реализацию.

 

II. Синтез и имплементация.

1. Открыть пакет Quartus II (версия задается преподавателем).

2. Создать новый проект – File / New Project Vizard, указав созданный директорий и программу lab2.vhd.

3. Компилировать проект (Processing/Start Compilation), опираясь на данные о ПЛИС, соответствующие используемому учебному стенду (Assigments/Device)

4. Оценить затраты на реализацию проекта Processing / Compilation Report.

5. Просмотреть RTL вид проекта и его топологическую реализацию – Tools / RTL View  –  Tools / Technology Map View.

6. Задать номера контактов ИС, соответствующие подключению учебной платы DE0. Подключить к контактам ИС x0, x1 x2 переключатели SW, а к контакту  z Led.

7. Выполнить компиляцию проекта с назначенными контактами.

8. Загрузить в ИС полученный загрузочный файл проекта и проверить работоспособность разработки.

9. Повторить  пункты 2 – 8, перестроив программу Tb_Lab2.vhd, чтобы она включала компонент  Lab22.

10. Повторить  пункты 2 – 8, перестроив программу Tb_Lab2.vhd, чтобы она включала компонент  Lab23.

11. Объяснить расхождение поведения проектов.

12. Имплементировать проект в ИС учебного стенда

13. Проверить реальную работу загруженной программы

 

Содержание отчета по теме:

  - Порядок и результаты синтеза устройств по пп. 1, 8, 9.

  - Тексты всех разработанных версий программы с комментарием вносимых изменений.

  - Временные диаграммы результатов моделирования.

 

 2.5.   Контрольные вопросы

1. Представьте синтаксическое определение и порядок исполнения операторов if, case, loop, условного присваивания, присваивание по выбору.

2. Определите правила и преимущественные области использования типов данных для представления одиночных данных.

3. Как выполняется переход от табличного задания логической функции к   алгебраическому?

4. Когда могут возникнуть в схеме «неожиданные» триггеры?

 




2020-02-04 346 Обсуждений (0)
Типичные ошибки при представлении комбинационных схем на VHDL 0.00 из 5.00 0 оценок









Обсуждение в статье: Типичные ошибки при представлении комбинационных схем на VHDL

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...
Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (346)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)