Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_VHDL.doc
Скачиваний:
58
Добавлен:
13.11.2019
Размер:
3.18 Mб
Скачать

78

МИНОБРНАУКИ РОССИИ

–––––––——————————–––––––

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ»

————————————————————

Р.И. ГРУШВИЦКИЙ, А.Х. МУРСАЕВ

Проектирование дискретных устройств

на VHDL

Учебное пособие

Санкт-Петербург

Издательство

2012

УДК 004.3144(075)

ББК 3.973.2-04

Г

Грушвицкий Р. И., Мурсаев А. Х.

Г Проектирование цифровых устройств на VHDL: Учеб. пособие. – СПб.: 2012

Изд-во ……. , 2012. 90 с.

ISBN 978-5-7629-1086-6

Представлены основные этапы проектирования цифровых устройств с использованием языков проектирования: созданием описания, моделирования, встраивания проекта в реальную ИС, входящую в состав типовой системы проектирования на ПЛИС, и отладку получаемого устройства. Изложение сопровождается рекомендациями по практическому освоению различных этапов методики проектирования.

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

Предисловие

Настоящее пособие занимает промежуточное положение между методическими указаниями к лабораторным работам и учебником. Очевидно, понятие учебного пособия в наибольшей степени отражает суть настоящей работы. Пособие продолжает и расширяет рассмотрение вопросов, поднятых авторами в методических указаниях “Элементы программирования на VHDL” [1] 2000 год, пособии “Проектирование систем на микросхемах с программируемой структурой ” [2] 2006 год, пособии “Моделирование цифровых устройств на VHDL” [3] 2010 год. Именно поэтому многие фрагменты настоящей работы повторяют материалы предшествующих публикаций. Однако само название показывает изменение целевой направленности пособия.

Задача настоящей работы (так же как и работ [4], [5]) помочь читателям в освоении приемов проектирования цифровых устройств, используя язык VHDL как инструмент описания проектов, а моделирование в современных САПР как один из важнейших (но не единственный) этапов проектирования. Требования краткости изложения и ориентации на продолжительность изучения затрагиваемых проблем не более 32 академических часов лекций и тесно связанных с ними лабораторных работ (6 тем или около 12 часов) заставляют считать этот курс лишь начальным этапом изучения проблематики проектирования цифровых устройств на языке VHDL.

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

В работах приводится методика проведения функционального моделирования разработок. Несмотря на существенную вероятность обнаружения имеющихся дефектов, большую эффективность дают методы, связанные с экспериментами на реальном оборудовании. Ещё больше информации дают методы временного моделирования, когда в модели учитываются временные характеристики элементов реальной технологической реализации. В пособии показано, что во многих случаях совсем не обязательно дожидаться изготовления платы, предназначенной для окончательной реализации проекта.

Широкое распространение получили так называемые прототипные платы разработчика, содержащие интегральные схемы программируемой логики (ПЛИС), что позволяет организовать требуемые эксперименты. Процедура занесения в ПЛИС проектной информации обычно носит название имплементация проекта. После имплементации, отладку проекта можно производить в условиях практически совпадающих с работой реальной системы. Для определенности в пособии предполагается, что рассматриваемые лабораторные работы выполняются на ПЛИС отладочной платы DE0 фирмы TerASIC. Следует иметь в виду, что большинство положений пособия остается справедливым и при использовании других технических средств.

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

1. Современный проектный поток.

Пример простейшей программы на языке VHDL

Программа на языке VHDL создается для достижения определенной цели при проектировании. Существует три основных назначения программ: для спецификации объекта, для моделирования поведения объекта, для последующего синтеза объекта в заданном базисе. Одна и та же программа может использоваться как основа всех трех назначений или любого их сочетания. Хотя теоретически процесс проектирования современных систем (Design flow) должен строиться именно в такой последовательности (задание на проектируемое устройство, спецификация, моделирование, синтез), для целей обучения (когда проектировщику ещё неизвестны даже простейшие приемы работы над проектом) целесообразно двигаться от простого к сложному, но сразу стремясь к конечному результату. Именно так и строится данное пособие.

Данный раздел посвящен синтезу простейшей комбинационной схемы, моделированию её поведения и имплементации в реальную схему FPGA. Первые два этапа работы выполняются с помощью САПР QuestaSim фирмы Model Technologies, а имплементация с помощью САПР Qurtus II фирмы Altera, загружающей проект в ИС FPGA отладочной платы DE0 фирмы Terasic. В дальнейшем по мере прохождения материала будут представляться различные аспекты описаний и интерпретации в аппаратуре.

1.1. Структура программы на vhdl. Её основные компоненты

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

Проект в целом или его самостоятельная часть называются ENTITY (сущность). Для определения сущности необходимо создать первичный модуль – декларацию ENTITY, и подчиненный этому модулю вторичный модуль – архитектурное тело. Декларация ENTITY определяет имя некоторого объекта проектирования (целостного проекта или его автономной части), а также, необязательно, его интерфейс, т. е. порты и параметры настройки. Подчиненное этой декларации архитектурное тело описывает тем или иным способом функционирование объекта проектирования, объявленного декларацией, и (или) его структуру. Каждой декларации ENTITY может быть сопоставлено одно или несколько архитектурных тел, каждое из которых описывает одну из возможных реализаций объекта, и каждому из которых присваивается собственное имя. Для определения, какие архитектурные тела из числа имеющихся в библиотеке будут использованы на определенном этапе проектирования, существует специальные средства конфигурации [2]. Первичные и соответствующие им вторичные модули могут сохраняться в различных файлах или записываться в одном файле. Важно лишь, чтобы они были скомпилированы в общую проектную библиотеку, причем первичный модуль компилируется раньше подчиненного ему вторичного. При записи первичного и вторичного модуля в одном файле первичный модуль записывается ранее соответствующего ему вторичного.

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

Рассмотрим проект, заключающийся в создании ИС, содержащей модуль, приведенный на рис.1.1. и соответствующий реализации логической функции 2(3И)-2ИЛИ. Ввиду тривиальности фрагмента сразу проанализируем структуру и основные разделы программы-образца (листинг 1.1).

Рис. 1.1. Схема исследуемого устройства

Как и большинство программ на языке VHDL эта программа начинается с раздела декларации используемых библиотек. Здесь объявляется системная библиотека (ieee.lib) и определяется использование (USE) содержащихся в ней пакетов: std_logic_1164 (содержит определение логических преобразований в многозначной логике), и textio (ввод и вывод сообщений).

Листинг 1.1 Описание простого логического устройства

LIBRARY ieee;

USE ieee.std_logic_1164.ALL;

USE std.textio.ALL;

ENTITY lab1 IS

GENERIC (delay : time := 5 ns);

PORT (

x0 : IN std_logic;

x1 : IN std_logic;

x2 : IN std_logic;

z : OUT std_logic

);

END lab1;

ARCHITECTURE test OF lab1 IS

BEGIN

z <= (x0 AND (NOT x1) AND x2 ) OR

(x0 AND (NOT x1) AND (NOT x2) ) ;

END ARCHITECTURE test;

Следующий раздел программы – декларация ENTITY – объявляет имя проекта или описываемого в данном фрагменте модуля, параметры настройки GENERIC (подробнее рассмотрим далее), имена и типы портов, т.е. данных, подаваемых на входы x0, x1, x2 (IN), и формируемых на выходе z (OUT). Если модуль является вершиной иерархии в проекте, то его имя должно совпадать с именем файла, включающего его (на случай необходимости автономной отладки внутренних модулей проекта целесообразно этого правила придерживаться всегда). Если выводов во внешнюю среду не предусмотрено, т.е. описываемый блок внутренне закончен и определен, поле декларации внешних соединений модуля может отсутствовать (см. примеры в разделах 3 и 4) . Параметры настройки рассматриваются как константы внутри модуля, но могут модифицироваться при включении такого модуля в иерархический проект или передаваться в модули более низкого уровня.

Данные, поступающие на вход модуля и выходящие из него, в терминологии языка VHDL являются сигналами (в терминологии САПР QuestaSim или ModelSim фирмы Model Technologies версий старше 5.8 – объектами).

Архитектурное тело заключается между выражением “ARCHITECTURE <имя архитектурного тела>” и выражением “END ARCHITECTURE<имя архитектурного тела>”. В декларации архитектурного тела обязательно указывается имя соответствующего первичного ENTITY.

Архитектурное тело программы 1.1 реализует поведенческое представление проектируемого устройства. Функционирование устройства в рассматриваемом примере задается параллельным оператором присваивания выходному сигналу значения, являющегося логической функцией входных сигналов.