Типичные ошибки при представлении комбинационных схем на 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.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;
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. Когда могут возникнуть в схеме «неожиданные» триггеры?
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (350)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |