close

Вход

Забыли?

вход по аккаунту

?

Agafonova

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное учреждение
высшего образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
(ГУАП)
Ю.Е. Агафонова, А.И. Найда, В.А. Мирончик, Е.Е. Агафонов,
С.В. Дьяков, Ю.В. Бакшеева
ПРОЕКТИРОВАНИЕ ЦИФРОВЫХ УСТРОЙСТВ НА ПЛИС
В САПР QUARTUS II
методические указания по выполнению лабораторных работ
Санкт – Петербург
2017
УДК 004.31
Агафонова Ю.Е. Проектирование цифровых устройств на ПЛИС в
САПР QUARTUS II: метод. указания по выполнению лабораторных
работ/ Ю.Е. Агафонова, А.И. Найда, В.А. Мирончик, Е.Е. Агафонов,
С.В. Дьяков, Ю.В. Бакшеева. – СПб., 2017. – 122 с.
Методические указания содержат сведения о САПР Quartus II,
об этапах и особенностях проектирования цифровых устройств на
ПЛИС, о стандартных библиотеках САПР Quartus II и о порядке
выполнения лабораторных работ.
Предназначены для студентов очной и заочной формы
обучения по направлениям и специальностям радиотехнической
направленности: "Радиотехника" 11.03.01, "Радиоэлектронные
системы и комплексы" 11.05.01, "Конструирование и технология
электронных средств" 11.03.03 и др.
© Агафонова Ю.Е., Найда А.И., Мирончик В.А., Агафонов Е.Е.,
Дьяков С.В., Бакшеева Ю.В., 2017
© ГУАП, 2017
2
СОДЕРЖАНИЕ
ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ .................................................................... 4
ВВЕДЕНИЕ .............................................................................................................. 5
1
Проектирование цифровых устройств в САПР QUARTUS II ..................... 6
1.1 Введение в САПР QUARTUS II ................................................................ 6
1.2 Ввод описания проекта ............................................................................. 11
1.3 Компиляция проекта ................................................................................. 26
1.4 Назначение физических контактов ПЛИС. PIN PLANNER ................. 31
1.5 Моделирование проекта. UNIVERSITY PROGRAM WAVEFORM ... 37
2
Мегафункции в QUARTUS II ........................................................................ 45
2.1 Счётчик lpm_counter ................................................................................. 47
2.2 Мультиплексор lpm_mux ......................................................................... 52
2.3 Двухпортовая память RAM: 2-PORT ...................................................... 55
2.4 Компаратор lpm_compare ......................................................................... 68
3
Лабораторные работы ..................................................................................... 73
3.1 Общие рекомендации по выполнению лабораторных работ ............... 73
3.2 Лабораторная работа № 1......................................................................... 74
3.3 Лабораторная работа № 2......................................................................... 80
3.4 Лабораторная работа № 3......................................................................... 93
3.5 Лабораторная работа № 4....................................................................... 102
3.6 Лабораторная работа № 5....................................................................... 111
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ ............................................. 119
ПРИЛОЖЕНИЕ А ............................................................................................... 120
3
ОБОЗНАЧЕНИЯ И СОКРАЩЕНИЯ
ПЛИС – программируемая логическая интегральная схема
САПР – система автоматизированного проектирования
AHDL − Altera Hardware Description Language
EDA − Electronic Design Automation
HDL − Hardware Description Language
IP − Intellectual Properties
LVTTL − Low Voltage Transistor-Transistor Logic
NPW − New Project Wizard
PLL − Phase Locked Loop
SRAM − Static Random Access Memory
VHDL − VHSIC (Very High Speed Integrated Circuits) Hardware Description
Language
.bdf − Block Design File
.bsf − Block symbol file
.hex − Hexadecimal (Intel-format) File
.mif − Memory Initialization File
.pof − Programmer Object File
.qpf − Quartus Project File
.qsf − Quartus Settings File
.rpt − Report File
.sof − SRAM Object File
4
ВВЕДЕНИЕ
Электроника за последние двадцать лет вышла на принципиально
новый уровень. Современные компоненты обладают характеристиками во
много раз превышающими возможности своих предшественников, да и
система их производства отлажена настолько, что почти в любом магазине,
специализирующихся на электронных компонентах, можно купить всё
необходимое и по доступной цене. Такой прогресс, в совокупности со всей
информацией, предоставленной интернетом, привёл к тому, что количество
любителей-разработчиков заметно увеличилось. Некоторые из таких людей
собирают сложные устройства, в состав которых обязательно входят
управляющие компоненты. Такими, по сути, в большинстве своём являются
микроконтроллеры,
поскольку
они
характеристиками,
достаточными
доступны
для
по
цене
обеспечения
и
обладают
определённой
многофункциональности. Безусловно, есть предел их возможностей, но
зачастую их вполне хватает. Бывает и такое, что задача, стоящая перед
разработчиком,
требует
ресурсов
больше,
чем
могут
предложить
микроконтроллеры.
Что делать в такой ситуации? Здесь на помощь и приходят ПЛИС.
Разработанные на транзисторной логике, эти микросхемы сегодня являются
одними
из
лучших
микроэлектронике.
Они
программируемых
являются
более
устройств
в
дорогостоящим
современной
и
в
разы
превосходящие по характеристикам аналогом микроконтроллерам. Большие
рабочие частоты (до 700 МГц), большой объём памяти (до сотен Мб),
большое количество вводов-выводов (до нескольких тысяч) и большое
количество логических элементов (до 500 тысяч) - вот чем может обеспечить
разработчика ПЛИС.
5
1 Проектирование цифровых устройств в САПР QUARTUS II
1.1 Введение в САПР QUARTUS II
Пакет САПР Quartus II был создан фирмой Altera (с 2016 года
являющейся подразделением Intel) для проектирования цифровых устройств
на выпускаемых ею микросхемах программируемой логики. Quartus II
состоит из отдельных программных модулей, предназначенных для
выполнения различных этапов проектирования.
Полный цикл разработки цифрового устройства на ПЛИС включает три
основных этапа (рис.1.1):
 ввод описания проекта;
 компиляция проекта;
 верификация проекта и конфигурирование ПЛИС.
Рисунок 1.1 – Полный цикл разработки цифрового устройства на ПЛИС
Под термином «проект» в Quartus II понимается набор файлов,
связанных с проектируемым устройством, и набор соответствующих
библиотек.
Файлы проекта подразделяются на два основных типа – логические и
вспомогательные:
- логические файлы описывают поведение или структуру отдельных
модулей проектируемого устройства. К ним относятся файлы с текстовым
описанием на языках описания аппаратуры (HDL – Hardware Description
Language),
файлы
с
графическим
представлением
схем,
файлы
с
представлением отдельных модулей в виде конечных автоматов;
- вспомогательные файлы содержат дополнительную информацию о
проектируемом устройстве. Большинство вспомогательных файлов не
6
содержит описания логики проекта. Примерами вспомогательных файлов
являются файл установок и назначений (.qsf), символьный файл (.bsf), файл
отчёта (.rpt) и т.д.
Проект в Quartus II может содержать один логический файл либо
несколько
логических
файлов,
образующих
иерархическое
описание
проектируемого устройства. В одном иерархическом проекте могут
использоваться различные типы описания модулей проекта, наиболее
подходящие по типу для каждого модуля.
При
иерархическом
описании
проекта
логические
файлы
подразделяются на следующие виды (рис.1.2):
– файл верхнего уровня иерархии (Top-level Design File);
– файлы нижних (одного или нескольких) уровней иерархии (Low-level
Design files).
Рисунок 1.2 – Пример устройства, содержащего иерархическое описание
В файле верхнего уровня иерархии задается архитектура устройства,
определяется набор модулей, входящих в его состав, и их взаимосвязь.
Описания этих модулей содержатся в логических файлах более низкого
уровня иерархии. В их состав, в свою очередь, в виде компонентов также
7
могут входить модули, описания которых приведены в логических файлах
еще более низкого уровня иерархии, и т. д.
Имя проекта должно совпадать с именем модуля верхнего уровня
иерархии и, соответственно, с именем логического файла, в котором
хранится его описание. Имена модулей нижних уровней иерархии, в свою
очередь, должны совпадать с именами файлов, в которых они описаны.
Графический пользовательский интерфейс
Работа в Quartus II осуществляется с использованием графического
пользовательского интерфейса (другое название – оконный интерфейс
менеджера проекта).
Графический пользовательский интерфейс Quartus II предоставляет
разработчику простую и интуитивно понятную среду для проектирования, и
моделирования схемотехнических решений на кристалле. Он позволяет легко
и быстро осуществлять ввод сложных иерархических проектов, в которых
используются базовые логические элементы, мегафункции, макрофункции,
IP-ядра из стандартной библиотеки Quartus II, а также модули из собственной
библиотеки пользователя.
Внешний вид графического пользовательского интерфейса пакета
Quartus II представлен на рис.1.3.
В верхней части графического интерфейса содержится название
проекта с указанием директории, где он размещён, общее меню и рабочие
панели инструментов.
Ниже слева расположено навигационное окно проекта (Project
Navigator), содержащее следующие вкладки:
- иерархия проекта (Hierarchy),
- файлы проекта (Files),
- модули, входящие в проект (Design Units),
- используемые мегафункции (IP Components),
- версии (ревизии) проектов (Revisions).
8
Рисунок 1.3 - Внешний вид графического пользовательского интерфейса в Quartus II
Под окном навигатора проекта расположено окно выполняемого этапа
работы (Tasks), содержащее список выполняемых процессов для выбранного
этапа проектирования.
Большое окно в правой части графического интерфейса является
главным рабочим окном проекта. В этом окне можно работать с графическим
редактором и текстовыми редакторами; кроме того, в нем выводятся
результаты компиляции и моделирования. Полезной особенностью этого
окна является возможность отображения в нем множества разных страниц, с
использованием механизма закладок.
В нижней части графического интерфейса содержится окно сообщений
(Messages), в котором выводится информация о выполненных шагах этапа
проектирования, предупреждения и сообщения об ошибках.
9
Описанные выше окна графического интерфейса Quartus II можно
перемещать, изменять по размеру или закрыть стандартным образом. Окна
можно снова открыть командой «View > Utility Windows» из динамического
меню на панели инструментов менеджера проекта.
10
1.2 Ввод описания проекта
Ввод описания проекта начинается с создания проекта.
Создание проекта
Каждый новый проект размещается в отдельной папке и имеет своё
собственное имя, которое назначается пользователем при создании проекта.
Автоматически
при
создании
нового
проекта
создаются
файлы
с
расширением .qpf (Quartus Project File – файл проекта) и .qsf (Quartus
Settings File – файл установок и назначений), которые содержатся в корневой
папке проекта.
Для создания нового проекта необходимо выполнить команду «File >
New Project Wizard». При этом откроется окно мастера создания нового
проекта New Project Wizard (NPW) (рис.1.4).
Рисунок 1.4 - Этапы создания нового проекта
11
Создание проекта осуществляется в несколько этапов:
1) Выбор рабочей папки проекта, назначение имени проекта и
определение модуля верхнего уровня (рис.1.5). В случае необходимости в
дальнейшем этот модуль может быть переопределён.
Рисунок 1.5 – Окно выбора рабочей папки проекта, имени проекта и определение модуля
верхнего уровня
12
2) Выбор подгружаемых пользовательских библиотек (рис.1.6),
содержащих файлы проекта на языках VHDL, Verilog HDL, AHDL, файлы с
определениями макрофункций, мегафункций и другие файлы проекта.
Рисунок 1.6 - Выбор подгружаемых пользовательских библиотек
13
3) Выбор микросхемы ПЛИС, на которой будет реализован проект
(рис.1.7). Микросхема может быть выбрана пользователем из предлагаемого
списка, либо автоматически назначена компоновщиком. В случае выбора
микросхемы
пользователем
необходимо
выполнить
следующую
последовательность действий:
 выбрать семейство микросхем в окне Family,
 определить тип корпуса интегральной схемы в окне Package,
 указать количество выводов кристалла в окне Pin Count,
 указать градацию быстродействия кристалла в окне Speed grade.
Затем выбрать подходящую микросхему из списка в окне Available
Devices.
Рисунок 1.7 – Выбор микросхемы
14
4) Определение средств автоматизации проектирования сторонних
производителей, которые пользователь планирует использовать для синтеза,
моделирования или временного анализа (рис.1.8). В последующем эти
средства будут вызываться непосредственно из пакета Quartus II.
Рисунок 1.8 - Средства автоматизации проектирования сторонних производителей
15
5) Вывод итоговой информации (рис.1.9). На последнем этапе работы
утилиты NPW в окне Summary выводится итоговая информация по
сделанному пользователем выбору на предыдущих шагах, а также
информация по условиям работы выбранной микросхемы.
Рисунок 1.9 – Итоговая информация
Утилита NPW позволяет на каждом шаге своего выполнения вернуться
к предыдущим шагам и, в случае необходимости, скорректировать
выполненные действия.
Изменить настройки проекта можно в процессе работы с проектом, а
также на финальном этапе отладки и разработки путём вызова диалогового
окна настроек Settings командой «Assignments > Settings» (рис.1.10).
16
Рисунок 1.10 – Вызов диалогового окна Settings
Изменить рабочую микросхему ПЛИС также можно в процессе
проектирования в окне Project Navigator (вкладка Hierarchy) двойным
нажатием на рабочую ПЛИС, либо вызовом диалогового окна Device
командой «Assignments > Device» (рис.1.11).
Рисунок 1.11 – Вызов окна Device
17
Ввод описания проекта
Работа с графическим редактором QUARTUS II
После того, как с помощью утилиты NPW создан новый проект,
необходимо создать новый файл проекта.
Существует два способа описания взаимодействия модулей проекта и
описания их поведения:
- представление описания взаимодействия модулей в графическом
виде;
- представление описания взаимодействия модулей на одном из языков
описания аппаратуры (HDL).
Для создания нового файла проекта необходимо открыть диалоговое
окно New. Это можно сделать через основное меню (рис.1.12), либо
командой «File > New».
Рисунок 1.12 – Вызов диалогового окна New через основное меню
18
В вызванном диалоговом окне можно создавать различные файлы
проекта, например, текстовые файлы на языках AHDL, System Verilog, Tcl,
Verilog, VHDL, файлы инициализации памяти, модули для проверки и
отладки выполняемых файлов, а также файлы графического описания
проекта.
Далее будет описан графический способ описания поведения и
взаимодействия модулей.
Для создания файла графического описания в диалоговом окне New
нужно выбрать «Design Files > Block Diagram/Schematic File».
После успешного создания нового модуля графического описания
появится окно графического редактора, как показано на рис.1.13, а во
вкладке Files появится файл с заданным названием и расширением *.bdf
(Block Design File).
Рисунок 1.13 – Окно графического редактора
19
В общем случае модуль представляет собой набор условных
обозначений применяемых логических элементов, соединённых между собой
линиями связи (рис.1.14).
Рисунок 1.14 – Вызов элементов и линий связи в окно графического редактора
В качестве элементов схемы в Quartus II могут использоваться:
1)
примитивы
(primitives),
входящие
в
одноименную
папку
стандартной библиотеки Quartus II (рис.1.15). К ним относятся логические
элементы (папка logic), триггеры (папка storage), буферные элементы (папка
buffer), элементы ввода-вывода (папка pin) и другие (папка other);
2) макрофункции, которые представляют собой модули описания
выпускаемых
промышленностью
цифровых
микросхем 74 серии;
20
микросхем,
например,
3)
мегафункции
(megafunctions),
которые
представляют
собой
параметризируемые модули, созданные фирмой Altera и другими сторонними
производителями.
Для
их
использования
применяется
специальный
инструмент Mega Wizard Plug-in Manager;
4) ядра интеллектуальной собственности (IP-ядра), примерами которых
являются процессорные ядра, контроллеры периферийных устройств и т.д.;
5) компоненты, созданные ранее пользователем в текущем или других
проектах, в том числе и на языках HDL.
Во всех случаях используемые при создании схемы графические
обозначения
(символы)
элементов
должны
присутствовать
либо
в
стандартной библиотеке Quartus II, либо в рабочей библиотеке проекта, либо
в библиотеках, подключаемых к проекту при его создании в New Project
Wizard.
Рисунок 1.15 – Окно Symbol вызова элементов из библиотек
21
Для того чтобы добавить элемент на рабочее поле графического
редактора,
нужно
зайти
в
библиотеку,
воспользовавшись
кнопкой
«элементы» на панели инструментов и выбрать необходимый элемент из
соответствующей папки, как показано на рис.1.15. При добавлении элемента
в схему ему присваивается номер «inst№», отображаемый под элементом.
Для отображения результатов в среде моделирования, вывода и приёма
информационных сигналов и данных используются элементы ввода/вывода,
так называемые «пины» (pins) (рис.1.16).
Элементы ввода/вывода делятся на три группы:
1. Входные элементы (Input);
2. Выходные элементы (Output);
3. Двунаправленные порты ввода/вывода (Bidirectional).
Рисунок 1.16 – Элементы ввода/вывода на панели инструментов
Элементы ввода/вывода могут быть одиночными или объединяются в
многоразрядные порты (рис.1.17).
При
добавлении
элемента
ввода/вывода
ему
автоматически
присваивается имя «pin_name№». При необходимости имя можно изменить
вручную.
22
Имя
одиночного
элемента
ввода/вывода
состоит
только
из
идентификатора Name.
Имя многоразрядного порта Name[x..y] состоит из идентификатора
(Name) и разрядности, которая отображается в квадратных скобках в виде
целых чисел – номеров старшего (x) и младшего (y) битов, - разделенных
двумя точками. Обычно номер младшего бита - «0», как, например, у
восьмиразрядных портов ввода Bus_IN[7..0] и вывода Bus_OUT[7..0] на
рис.1.17. Возможна и обратная нумерация разрядов - Bus_IN[0..7], при этом
происходит инверсия всех битов порта.
Рисунок 1.17 – Примеры элементов ввода/вывода
Для соединения элементов, модулей, а также портов ввода и вывода
используются соединительные линии и соединительные шины. Одиночная
соединительная линия изображается на рисунке одной тонкой линией. Шина
– группа проводников, являющаяся многоразрядной соединительной линией,
изображается на рисунке одной утолщённой линией.
23
Любой
соединительной
линии
или
шине
может
быть
(но
необязательно) присвоено имя (рис.1.18). Имена одиночных соединительных
линий и шин формируются так же, как и имена одиночных и многоразрядных
портов ввода/вывода. Каждый проводник, входящий в шину BUS[x..y],
получает имя шины и индекс BUS[i], где i – индексное значение в диапазоне
разрядности шины [x..y]. Проводники шины приобретают индексы, начиная с
левого индекса x, который всегда считается старшим, что следует учитывать
при выполнении операций с шиной. Например, в шине BUS[2..0] на рис.1.18
левый разряд (старший) имеет индекс 2, а правый (младший) - индекс 0. К
каждому проводнику шины можно обратиться по его имени.
Имена соединительных линий и шин используются для соединения
элементов и модулей без физического изображения линий связи, а также для
доступа к отдельным проводникам шины. Соединяют линии за счёт
присвоения им одинаковых имён, как показано на рис.1.18.
Рисунок 1.18 – Соединительные линии и шины
24
В качестве элементов для оформления схемы проекта используются
инструменты графического редактирования из панели инструментов, а также
титульные таблицы из стандартной библиотеки, вызываемые командой
«Symbol > primitives > other» (рис 1.19).
Рисунок 1.19 – Титульные таблицы
25
1.3 Компиляция проекта
Компиляция представляет собой процесс преобразования описания
проекта в его структурную реализацию на выбранном кристалле ПЛИС.
Компиляции может подвергаться как весь проект, так и отдельные его
фрагменты. В Quartus II компиляция всегда выполняется для модуля
верхнего
уровня
(Top-level).
Поэтому
для
компиляции
отдельного
компонента схемы необходимо предварительно объявить его модулем
верхнего уровня. Для объявления верхнего уровня проекта нужно выбрать
требуемый файл во вкладке Files окна навигатора проекта и правой кнопкой
мыши вызвать контекстное меню, в котором будет вкладка Set as Top-Level
Entity.
Компиляция включает выполнение пяти этапов (рис.1.20). Для старта
компиляции нужно нажать на иконку
(start compilation) на панели
инструментов. Также можно выполнить компиляцию определённого этапа,
при этом предыдущие этапы также будут скомпилированы. Для этого в окне
компиляции нужно нажать на иконку
напротив требуемого этапа.
Рисунок 1.20 – Этапы компиляции
26
Этапы компиляции
1. Анализ и Синтез (Analysis & Synthesis)
Составной частью процесса компиляции проекта является этап анализа
и синтеза. Модуль анализа и синтеза Quartus II производит объединение всех
файлов проекта в единую иерархическую структуру, при этом выявляет
синтаксические ошибки в проекте. Он проверяет логическую завершённость
проекта, проверяя правильность написания текста, а также правильность
подключений всех модулей в схеме.
2. Размещение и трассировка (Fitter (Place & Route))
На этом этапе компиляции модуль Fitter располагает схему, собранную
на предыдущем этапе компиляции, на логических элементах и блоках памяти
ПЛИС. Этот модуль подбирает для каждой логической функции подходящее
место на кристалле, с точки зрения уменьшения времени распространения
сигнала, выполняет соответствующие соединения и назначения контактов
ввода-вывода.
3. Ассемблер (Assembler)
Ассемблер
автоматически
преобразует
результаты
компоновки
логических ячеек и назначения контактов в программный образ устройства в
виде программных файлов Programmer Object (.pof) или объектных SRAM
файлов (.sof). Эти файлы и являются файлами, которые представляют собой
скомпонованную и готовую для конфигурирования ПЛИС программу.
4. Временной анализ (Time Quest Timing Analysis)
На этапе временного анализа выполняется проверка соответствия
реализованного
проекта
требованиям
быстродействия,
а
также
осуществляется проверка правильности функционирования проекта после
выполнения этапов синтеза, размещения и трассировки.
27
5. Создание списков соединений (EDA Netlist Writer)
На стадии EDA Netlist Writer программа Quartus II создаёт .vo или
.vho файлы, которые могут быть использованы в EDA-симуляторах. Это
файлы списков соединений, которые отображают специфику проекта. На
этой стадии не используется информация о временных характеристиках.
Если при компиляции модуль Analysis & Synthesis выявляет ошибки в
проекте, то работа компилятора останавливается. В окне сообщений
выводится информация об ошибках. Например, на рис.1.21 в схеме была
допущена ошибка – одинаковое название входа и выходов; соответствующая
информация появилась в окне сообщений.
Рисунок 1.21 – Ошибки при компиляции
28
После исправления всех ошибок выводится сообщение об успешном
завершении этапа компиляции текущего проекта (рис.1.22).
Рисунок 1.22 – Сообщение об успешной компиляции проекта
Кроме сообщения об успешной компиляции будет открыта вкладка с
отчётом о проделанной компиляции Compilation Report (рис.1.23), в
котором указано время окончания компиляции, название проекта, выбранная
микросхема ПЛИС, число использованных логических элементов, а также
информация о задействованной памяти и количестве использованных
вводов/выводов. В окне компилятора можно узнать время, затраченное на
компиляцию.
29
Рисунок 1.23 – Вкладка с отчётом о выполненной компиляции
30
1.4 Назначение физических контактов ПЛИС. PIN PLANNER
Для
физического
взаимодействия
микросхемы
с
внешними
устройствами (другими микросхемами или оконечными устройствами),
необходимо выполнить назначения входных и выходных сигналов проекта на
физические выводы ПЛИС. Причём назначения должны быть сделаны перед
выполнением окончательной компиляции проекта. Для выполнения этой
задачи в пакете Quartus II используется встроенная утилита Pin Planer
(рис.1.24).
Рисунок 1.24 – Утилита Pin Planer
В окне Pin Planer схематично изображено расположение внешних
выводов ПЛИС, разбиение их по различным банкам, а также их
функциональное назначение (рис.1.25).
31
Рисунок 1.25 – Схематичное изображение внешних выводов ПЛИС
Основные
типы
функционального
назначения
внешних
портов
приведены в табл. 1.1.
Таблица 1.1 – Функциональное назначение внешних портов
Иконка
Назначение
CLK_n. Используется в качестве входа или выхода
синхронизирующего
сигнала.
Если
требуется
подать
дифференциальный сигнал, то используется второй контакт
CLK_p.
CLK_p. Используется в качестве входа или выхода
синхронизирующего
сигнала.
Если
требуется
подать
дифференциальный сигнал, то используется второй контакт
CLK_n.
32
Иконка
Назначение
VCCIO. Питание для пользовательских банков.
VCCINT. Питание для внутренней логики ПЛИС.
VCCA. Аналоговое питание для PLL.
VCCP. Питание периферии ПЛИС.
VREF. Входное опорное
пользовательских банков.
напряжение
для
входов/выходов
GND. Земля.
GNDA_PLL. Аналоговая земля.
DIFF_p.
Дифференциальные
входы/выходы.
Может
использоваться для однопроводного подключения.
p-положительный сигнал для дифференциальных входов/выходов.
DIFF_n.
Дифференциальные
входы/выходы.
Может
использоваться для однопроводного подключения.
n-отрицательный сигнал для дифференциальных входов/выходов.
DQ. Дополнительные входы/выходы для подключения интерфейса
взаимодействия с внешней памятью.
33
Иконка
Назначение
DQS. Синхронизирующий сигнал для подключения интерфейса
взаимодействия с внешней памятью.
Конфигурационные
(Configuration pin).
входы/выходы
На рис.1.25 цветом выделяются разные пользовательские банки, к
которым и осуществляется физическое подключение.
Перед назначением порта на физический вывод ПЛИС необходимо
выбрать используемый интерфейс приёма-передачи. Он указывается в графе
I/O Standard. На рис.1.26 в качестве используемого интерфейса приёмапередачи выбран распространённый стандарт 3.3 LVTTL для портов с
названиями Vhod1 и Vhod2.
После выбора интерфейса порт можно назначать на физический
контакт ПЛИС, как показано на рис.1.27. Для того, чтобы осуществить
проверку назначений, необходимо выполнить команду «Start I/O Assignment
Analysis» слева на панели инструментов графического редактора выводов.
Результат выполненной проверки будет отражён в выводимом
сообщении. Для получения более подробного отчёта о результатах проверки
назначений выводов выполняется полная компиляция проекта. В дальнейшем
при работе проекта эту информацию можно получить путём вызова окна
отчёта через вкладку «Processing > Compilation Report».
34
Рисунок 1.26 – Выбор интерфейса приёма/передачи
35
Рисунок 1.27 – Назначение физических выводов ПЛИС
36
1.5 Моделирование проекта. UNIVERSITY PROGRAM WAVEFORM
При создании проекта одним из важных этапов является отладка
проекта. Моделирование позволяет проверить работоспособность проекта
как в целом, так и отдельных его частей.
В пакете Quartus II тестовые воздействия могут быть сформированы
либо в форме временных диаграмм с использованием соответствующего
редактора (рис.1.28), либо путём описания на языках HDL структурного
компонента, играющего роль генератора тестов.
Реализация второго варианта в пакете Quartus II выполняется таким же
образом, как и создание любых других компонентов проекта. Далее будет
рассмотрен способ отладки проекта с помощью временных диаграмм.
Рисунок 1.28 – Создание редактора Waveform
37
В поле наименования
портов ввода/вывода содержатся
имена
контрольных точек моделируемой схемы и соответствующие значения
сигналов (рис.1.29).
В поле временных диаграмм отображаются входные тестовые сигналы
и получаемые в процессе моделирования ответные реакции, наблюдаемые в
контрольных точках схемы.
Основные временные параметры, используемые при моделировании длительность временного интервала End Time и шаг временной сетки Grid
Size. Чтобы изменить длительность временного интервала, отображаемого в
окне редактора временных диаграмм, нужно в окне «Edit>Set End Time>End
Time» задать конечное значение интервала моделирования. Чтобы изменить
шаг временной сетки, нужно во вкладке «Edit>Set End Time>Grid Size»
задать требуемый шаг.
Рисунок 1.29 – Окно моделирования проекта
38
Для того, чтобы в соответствущем поле редактора временных диаграмм
появились имена контрольных точек моделируемой схемы, необходимо
открыть диалоговое окно «Edit>Insert>Node or Bus». В этом окне в поле
Filters нужно выбрать Pins: all и нажать кнопку List. После этих действий в
левом поле Nodes Found появятся все выводы, которые присутствуют на
схеме. Из них следует выбрать те, для которых хотят получить результаты
моделирования, нажать на кнопку «>» и на кнопку OK. Например, на
рис.1.30 выбраны контрольные точки Bus_NEW, Bus_NEW_1, Bus_NEW_2
и Bus_NEW_3.
Рисунок 1.30 – Окно Node or Bus назначения контрольных точек
После этих действий в поле с наименованиями портов ввода/вывода
появятся выбранные выводы с отображением их названия и функции (вход Input, выход - Output или двунаправленная линия - Bidir, шина - Group).
Проведение
моделирования
предполагает
задание
входных
воздействий (реакция на которые известна), получение и анализ выходных
39
сигналов. Успешным считается моделирование, при котором полученные в
Quartus отклики на входные воздействия совпадают с аналитически
предсказанными или ожидаемыми. Для полной функциональной проверки
работоспособности синтезируемого устройства необходимо проверить его
реакцию на ВСЕ возможные входные воздействия.
На рис.1.31-1.35 рассматривается процесс моделирования для схемы с
выходами BUS_NEW_1, BUS_NEW_2 и BUS_NEW_3. Как видно на
рис.1.31, для получения выходного сигнала необходимо подать входное
воздействие на шину BUS_NEW [2..0].
Рисунок 1.31 - Пример схемы
Для этого в окне моделирования необходимо выделить требуемый
интервал и задать входные логические сигналы - уровень логического «0»
или уровень логической «1» - нажатием на соответствующую иконку
,
как показано на рис.1.32.
Так, на рис.1.33 показано, что на шину BUS_NEW поданы числа «111»,
«110» и «100», а далее сымитирован результат работы суммирующего
счётчика - возрастающая последовательность чисел от 0 до 7 «001», «010»,
«011», «100», «101», «110», «111».
40
Рисунок 1.32 – Окно моделирования Simulation Waveform Editor
Рисунок 1.33 – Пример заданных входных воздействий
41
Кроме задания входных сигналов "побитно" для каждого шага
временной сетки Quartus предоставляет возможность задавать тактовую
последовательность на входной линии или счётную последовательность на
входной шине. В этих случаях необходимо выделить всю линию или шину
нажатием на их имя в левой части окна моделирования левой кнопкой мыши,
а
затем
вызвать
последовательности)
диалоговое
или
Clock
окно
(для
Count
Value
тактовой
(для
счётной
последовательности)
(рис.1.34). В вызванных диалоговых окнах выбираются необходимые
временные параметры.
Рисунок 1.34 – Вызов диалоговых окон Count Value и Clock
После задания входных сигналов необходимо запустить симуляцию
нажатием на иконку Run a functional simulation
.
После окончания симуляции появится новое окно с результатами
симуляции – Simulation Waveform Editor (рис.1.34). На выходных линиях
BUS_NEW_1, BUS_NEW_2 и BUS_NEW_3 будут отображаться результаты
входных воздействий разрядов шины BUS_NEW[2..0] соответственно. В
синем окне 1 на рис.1.35 на выходных линиях отображаются входные
воздействия «111», «110» и «100», а в красном окне 2 - возрастающая
последовательность чисел от 0 до 7.
42
Рисунок 1.35 – Окно моделирования с результатами симуляции
Также
можно
изменить
формат
отображения
сигналов
шины
BUS_NEW. Существует несколько форматов отображения сигналов шины
(представления многоразрядных данных):
1. Binary – двоичный формат;
2. Octal – восьмеричный формат;
3. Hexadecimal – шестнадцатиричный формат;
4. Signed Decimal – десятичный формат со знаком;
5. Unsigned Decimal – десятичный формат без знака;
6. Fractional – дробный формат;
7. ASCII – американская стандартная кодировочная таблица для
печатных символов и некоторых специальных кодов.
На рис.1.35 сигналы на шине отображаются в виде трехразрядного
двоичного кода. Для изменения формата отображения необходимо вызвать
контекстное меню щелчком правой кнопки мыши по имени требуемой шины;
43
в появившемся меню выбрать нужный формат командой «Radix». В примере
на рис.1.36 командой «Radix>Unsigned Decimal» выбран десятичный
беззнаковый формат для шины BUS_NEW.
Рисунок 1.36 – Контекстное меню
При последующей работе с проектом можно создавать новые окна
симуляции для моделирования разных участков проекта.
44
2 Мегафункции в QUARTUS II
Мегафункции - это параметризированные библиотечные блоки,
позволяющие проектировать функционально законченные узлы проекта.
Библиотека
Quartus
II
содержит
мегафункции
комбинационных,
последовательностных, арифметических устройств и устройств электронной
памяти.
Основной
особенностью
мегафункций
является
возможность
настройки их параметров (например, разрядности входных и выходных
сигналов) и выбора используемых входов, и выходов.
Работа с любыми мегафункциями начинается одинаково. Для того
чтобы вызвать элемент из библиотеки, необходимо дважды кликнуть на
пустое место в рабочем поле проекта, после чего в появившемся окне Symbol
в поле Name выбрать нужную мегафункцию из списка (рис.2.1). Галочка в
строке Launch MegaWizard Plug-In запускает помощника настройки
мегафункций MegaWizard Plug-In Manager.
На первом шаге MegaWizard Plug-In Manager [page 1] (рис.2.2)
позволяет задать, будет ли использоваться (редактироваться) готовая
мегафункция или создаваться новая.
На последующих шагах работа помощника различается для разных
мегафункций и определяется их функциональными особенностями.
Далее будут рассмотрены особенности работы MegaWizard Plug-In
Manager для следующих мегафункций:
1. Счётчик lpm_counter;
2. Мультиплексор lpm_mux;
3. Двухпортовая память RAM: 2-PORT;
4. Компаратор lpm_compare.
45
Рисунок 2.1 – Выбор мегафункции в окне Symbol
Рисунок 2.2 - Окно MegaWizard Plug-In Manager [Page 1]
46
2.1 Счётчик lpm_counter
Окно MegaWizard Plug-In Manager [page 2c] для lpm_counter
показано на рис.2.3.
Рисунок 2.3 - Окно MegaWizard Plug-In Manager [page 2c] для lpm_counter
В этом окне предлагается выбрать тип выходного файла (AHDL, VHDL
и Verilog HDL).
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 3 of 7], показанное на рис.2.4.
47
Рисунок 2.4 - Окно MegaWizard Plug-In Manager [page 3 of 7]
В этом окне во вкладке General предлагается задать разрядность
выходной шины данных – How wide should the ‘q’ output bus be - этот
параметр определяет максимальный коэффициент пересчёта будущего
счётчика. Также предлагается выбрать направление счёта – What should the
counter direction be:
- Up only – суммирующий счётчик;
- Down only – вычитающий счётчик;
- Updown – реверсивный счётчик; направление счёта задаётся в
процессе работы устройства управляющим сигналом на входе "updown": при
подаче «1» - суммирование, при подаче «0» - вычитание.
В следующем окне MegaWizard Plug-In Manager [page 4 of 7]
программа переключится во вкладку General 2 (рис.2.5).
48
Рисунок 2.5 - Окно MegaWizard Plug-In Manager [page 4 of 7]
В этом окне выбирается тип счётчика (коэффициент пересчёта) –
Which type of counter do you want:
 plain binary (простой двоичный) - коэффициент (модуль) пересчёта
равен
2n ,
где n - выбранная на предыдущем шаге разрядность выходных
данных;
 modulus, with a count modulus of - произвольный коэффициент
пересчёта, не превышающий значение
2n .
На этом же шаге в будущий счётчик можно добавить дополнительные
выводы – Do you want any optional additional ports:
 clk_en (clock enable) – вход разрешения сигнала синхронизации;
 cnt_en (count enable) – вход разрешения работы счётчика;
 cin (carry-in) – вход сигнала переноса;
 cout (carry-out) – выход сигнала переноса.
49
В следующем окне MegaWizard Plug-In Manager [page 5 of 7]
программа переключится во вкладку Optional inputs (рис.2.6), где можно
добавить следующие дополнительные входы - Do you want any optional
inputs:
 синхронные входы (Synchronous inputs):
 sclr (clear) – сброс счётчика;
 sload (load) – вход разрешения загрузки данных;
 sset (set) – задаёт значение, установленное в поле Set to, на выход.
 асинхронные входы (Asynchronous inputs):
 aclr (clear) – сброс счётчика;
 aload (load) – вход разрешения загрузки данных;
 aset (set) – задаёт значение, установленное в поле Set to, на
выход.
После выбора входа load появляется также вход для загрузки данных
data[7..0] той же разрядности, что задавалась для выходной шины.
Рисунок 2.6 - Окно MegaWizard Plug-In Manager [page 5 of 7]
50
После нажатия кнопки Finish созданный компонент появится в поле
графического редактора и будет выглядеть так, как показано на рис.2.7.
Рисунок 2.7 – Счётчик lpm_counter
При работе с мегафункцией lpm_counter не обязательно создавать
счётчик со всеми возможными выводами - количество используемых
выводов будет зависеть от поставленной задачи. Редактировать созданный
счётчик можно и в процессе дальнейшей работы: двойной клик по элементу
вызовет окно MegaWizard Plug-In Manager, где можно будет внести
необходимые изменения в настройку счётчика.
51
2.2 Мультиплексор lpm_mux
Окно MegaWizard Plug-In Manager [page 2c] для lpm_mux показано
на рис.2.8.
Рисунок 2.8 - Окно MegaWizard Plug-In Manager [page 2c] для lpm_mux
Аналогично п.2.1 в этом окне необходимо выбрать тип выходного
файла (AHDL, VHDL и Verilog HDL).
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 3 of 7], показанное на рис.2.9.
В поле «How many ‘data’ inputs do you want?» выбирается количество
информационных входов (входов данных). Количество информационных
входов определяет разрядность адресной шины sel, используемой в процессе
работы мультиплексора для выбора информационного входа. На рис.2.9 вход
sel[1..0] – 2-х разрядный, т.к. задано 4 информационных входа ( 4  22 ).
52
В поле «How wide should the ‘data’ input and the ‘result’ output buses
be?» задается разрядность информационных входов и выхода.
Рисунок 2.9 - Окно MegaWizard Plug-In Manager [page 3 of 5]
В поле «Do you want to pipeline the multiplexer?» задается, будет ли
осуществляться задержка выходного сигнала относительно входного и на
сколько тактов:
 No - задержки нет;
 Yes, I want an output latency of __ clock cycles – задаются задержка
в количестве тактов и (необязательно) дополнительные входы:

Create an asynchronous Clear input – вход асинхронного сброса
мультиплексора;

Create a Clock Enable input – вход разрешения тактирования.
53
После нажатия кнопки Finish созданный компонент появится в поле
графического редактора и будет выглядеть так, как показано на рис.2.10.
Рисунок 2.10 – Мультиплексор lpm_mux
54
2.3 Двухпортовая память RAM: 2-PORT
Окно MegaWizard Plug-In Manager [page 2а] для RAM: 2-PORT
показано на рис.2.11.
В поле Select a megafunction from the list below (выберите
мегафункцию из списка) необходимо выбрать папку Memory compiler, из
предложенных вариантов памяти выбрать RAM: 2-PORT.
В поле What name do you want for the output file ввести название
выходного файла, описывающего мегафункцию.
Рисунок 2.11 - MegaWizard Plug-In Manager [page 2a] для RAM: 2-PORT
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 3 of 12], вкладка General, показанное на рис.2.12.
55
Рисунок 2.12 - MegaWizard Plug-In Manager [page 3 of 12]
Во вкладке General настраивается количество входов для записи и
выходов для чтения – How will you be using the dual port RAM. Также
предлагается выбрать, как будет вычисляться размер памяти - в байтах или в
битах – How do you want to specify the memory size?
После
нажатия
Next
программа
Widths/Blk Type (рис.2.13).
56
переключится
на
вкладку
Рисунок 2.13 – MegaWizard Plug-In Manager [page 4 of 12]
В этой вкладке выбираются следующие параметры:
 размер памяти в байтах - How many 8-bit words of memory?
 разрядность входной/выходной шины данных - How wide should the
‘data_a’ input bus be
 тип блоков памяти - What should the memory block type be.
После
нажатия
Next
программа
Clks/Rd, Byte En (рис.2.14).
57
переключится
на
вкладку
Рисунок 2.14 – MegaWizard Plug-In Manager [page 5 of 12]
В этой вкладке настраивается метод синхронизации для записи и
чтения информации – What clocking method do you want to use? Возможно
несколько вариантов:
 Single - использование одного синхросигнала для чтения и записи в
память;
 Dual clock: use separate 'read' and 'write' clocks - использование
двух разных синхросигналов для чтения и записи в память;
 Dual clock: use separate 'input' and 'output' clocks - использование
двух синхросигналов для входных и выходных блоков памяти и др.
Также есть возможность создания дополнительного входа разрешения
чтения из памяти – Create a ‘rden’ read enable signal.
После
нажатия
Next
программа
Regs/Clkens/Aclrs (рис.2.15).
58
переключится
на
вкладку
Рисунок 2.15 – MegaWizard Plug-In Manager [page 7 of 12]
В этой вкладке производится настройка выходного регистра Read
output port(s) ‘q’, т.е. будет ли использоваться синхросигнал для чтения из
выходного регистра.
Также могут быть добавлены следующие сигналы:
- сигнал разрешения - Create one clock enable signal for each clock
signal - для каждого тактового сигнала;
- сигнал асинхронного сброса – Create an ‘aclr’ asynchronous clear for
the registered ports для тактируемых портов.
После нажатия Next программа переключится на вкладку Mem Init
(рис.2.16).
59
Рисунок 2.16 - MegaWizard Plug-In Manager [page 10 of 12]
В этом разделе предлагается задать начальное содержимое памяти –
Do you want to specify the initial content of the memory?:
 No,
leave
it
blank
–
оставить
пустым
(с
возможностью
инициализации при моделировании);

Yes, use this file for the memory content data – загрузить в память
содержимое файла (в поле File name указывается путь к файлу с данными в
шестнадцатеричном формате - .hex или в формате инициализации памяти .mif).
60
После нажатия кнопки Finish созданный компонент появится в поле
графического редактора и будет выглядеть так, как показано на рис.2.17.
Рисунок 2.17 – Двухпортовая память RAM: 2-PORT
На рис.2.17 представлена 2-х портовая память с одним входом записи и
считывания информации. Общий объем памяти составляет 16 8-ми битных
слов (16 байт). Добавлены входы разрешения чтения и записи для входных и
выходных портов.
Выводы компонента RAM: 2-PORT:
 data[7..0] – вход данных;
 wraddress[3..0] – вход адреса для записи в память;
 rdaddress[3..0] –вход адреса для чтения из памяти;
 wren – вход разрешения записи;
 rden – вход разрешения чтения;
 wrclock – тактовая частота для записи в память;
 rdclock– тактовая частота для чтения из памяти;
 q[7..0] – выход данных.
Временная диаграмма работы компонента RAM: 2-PORT представлена
на рис.2.18 и 2.19.
61
Рисунок 2.18 - Окно Simulation Waveform Editor
Рисунок 2.19 - Окно Simulation Waveform Editor после симуляции
На рис.2.18 видно, что для записи последовательности данных «51, 78,
37, 99, 144, 76, 55» (вход data) в ячейки с адресами «0, 1, 2, 3, 4, 5, 6» (вход
wraddress), соответственно, требуется подать сигнал разрешения записи
wren на весь интервал существования входных данных и адресов ячеек. Для
чтения этих данных из ячеек с адресами «0, 1, 2, 3, 4, 5, 6», соответственно,
62
требуется подать сигнал разрешения чтения rden на весь интервал
существования адресов ячеек на входе rdaddress.
Операции записи и чтения осуществляются по переднему фронту
тактового сигнала. Данные на выходе q появляются с задержкой на один такт
после подачи требуемого адреса.
Режимы работы двухпортовой памяти RAM: 2-PORT
1. Без сигнала разрешения чтения rden, с единым тактовым сигналом
Внешний вид мегафункции двухпортовой памяти RAM: 2-PORT без
сигнала разрешения rden с единой тактовой частотой представлен на
рис.2.20.
Рисунок 2.20 – УГО RAM: 2-PORT
В этом режиме работы основным запускающим механизмом является
тактовая частота clock и сигнал разрешения записи wren.
На тактовый вход clock подаётся тактовый сигнал (на рис.2.21 в
качестве примера подан тактовый сигнал с частотой 50 МГц). После
поступления на вход разрешения записи wren логического сигнала "1" по
переднему фронту тактового сигнала clock начинается загрузка адресов со
входа wraddress, по которым будет происходить запись данных в память.
Данные выравниваются по переднему фронту тактового сигнала.
В таком режиме работы считывание производится также по переднему
фронту тактового сигнала. Данные на выходе q появляются с задержкой на
один такт после подачи требуемого адреса.
Временная диаграмма работы памяти представлена на рис.2.21.
63
Рисунок 2.21 - Временная диаграмма работы RAM: 2-PORT
2. Без сигнала разрешения чтения rden, с разными тактовыми
сигналами
Внешний вид мегафункции двухпортовой памяти RAM: 2-PORT без
сигнала разрешения rden с разными тактовыми сигналами представлен на
рис.2.22.
Рисунок 2.22 – УГО RAM: 2-PORT
В данном режиме работы основными управляющими механизмами
являются два тактовых сигнала wrclock (тактирование записи) и rdclock
(тактирование чтения) и сигнал разрешения записи wren. Тактовые сигналы
не обязательно должны быть одинаковой частоты.
Принцип работы такой же, как и в предыдущем случае.
64
В таком режиме работы считывание производится по переднему
фронту тактовой частоты.
Временная диаграмма работы представлена на рис.2.23.
Рисунок 2.23 - Временная диаграмма работы RAM: 2-PORT
3. С сигналом разрешения чтения rden, с единым тактовым сигналом
Внешний вид мегафункции двухпортовой памяти RAM: 2-PORT с
сигналом разрешения rden с единым тактовым сигналом представлен
рис.2.24.
Рисунок 2.24 – УГО RAM: 2-PORT
В этом режиме работы основными управляющими механизмами
являются тактовый сигнал clock и сигналы чтения/записи rden/wren.
Основным отличием от предыдущего режима работы является наличие
сигнала разрешения чтения rden.
65
Чтение из памяти работает по тому же принципу, что и запись: чтение
начнётся только тогда, когда на входе разрешения чтения rden появится
разрешающий сигнал - логическая "1". Чтение данных также производится
по переднему фронту тактового сигнала.
Временная диаграмма работы памяти представлена на рис.2.25
Рисунок 2.25 - Временная диаграмма работы RAM: 2-PORT
4. С сигналом разрешения чтения rden, с разными тактовыми
сигналами
Внешний вид мегафункции двухпортовой памяти RAM: 2-PORT с
сигналом разрешения rden с разными тактовыми сигналами представлен на
рис.2.26.
Рисунок 2.26 – УГО RAM: 2-PORT
66
В этом режиме работы основными управляющими механизмами
являются сигналы синхронизации wrclock и rdclock и сигналы чтения/записи
rden/wren.
Принцип работы такой же, как в предыдущем случае, за исключением
наличия разных тактовых сигналов. Считывание данных производится также
по переднему фронту тактового сигнала.
Временная диаграмма работы памяти представлена на рис.2.27.
Рисунок 2.27 - Временная диаграмма работы RAM: 2-PORT
67
2.4 Компаратор lpm_compare
Окно MegaWizard Plug-In Manager [page 2c] для lpm_compare
показано на рис 2.28.
Рисунок 2.28 - Окно MegaWizard Plug-In Manager [page 2c] для lpm_compare
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 3 of 7], показанное на рис.2.29.
В этом окне в поле How many ‘dataa’ input bits do you want to
compare to the ‘datab’ input bits? запрашивается разрядность входных
данных. Также выбираются варианты сравнения - Which outputs do you
want? - и соответствующие выходы, на которых сигнал логической "1"
появится только в случае выполнения проверяемого условия:
 a = b (equal - a равно b), выход aeb;
 a <> b (not equal – a не равно b), выход aneb;
 a > b (greater than – a больше чем b), выход agb;
 a >= b (greater than or equal – a больше или равно b), выход ageb;
68
 a < b (less than – a меньше чем b), выход alb;
 a <= b (less than or equal – a меньше или равно b), выход aleb.
Рисунок 2.29 - Окно MegaWizard Plug-In Manager [page 3 of 7]
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 4 of 7], вкладка General 2 (рис.2.30).
В этом окне в поле Is the 'datab' input bus value a constant? можно
задать число b константой, т.е. назначить ей неизменяемое в дальнейшей
работе значение в выбранной системе счисления.
В поле Which type of comparison do you want? - выбирается тип
сравнения:
 Unsigned (без знака);
 Signed (со знаком).
69
Рисунок 2.30 - Окно MegaWizard Plug-In Manager [page 4 of 7]
После нажатия Next программа переключится на окно MegaWizard
Plug-In Manager [page 5 of 7], вкладка Pipelining (рис.2.31).
В этой вкладке можно добавить функцию задержки выходного сигнала
на заданное число тактов – Do you want an pipeline the function:
 No – нет задержки;
 Yes, I want an output latency of __ clock cycle - задается количество
тактов задержки - и (необязательно) дополнительные входы:

Create an asynchronous Clear input – асинхронный вход сброса;

Create a Clock Enable input– вход разрешения тактирования.
70
Рисунок 2.31 - ОкноMegaWizard Plug-In Manager [page 5 of 7]
После нажатия кнопки Finish созданный компонент появится в поле
графического редактора и будет выглядеть так, как показано на рис 2.32.
Рисунок 2.32 –Компаратор lpm_compare
Временная диаграмма работы компаратора представлена на рис.2.33 и
рис.2.34.
71
Рисунок 2.33 - Окно Simulation Waveform Editor
Рисунок 2.34 - Окно Simulation Waveform Editor после симуляции
Из рис.2.34 видно, что компаратор выдал на выход aeb импульс
длительностью в один такт, который является результатом сравнения входов
data[7..0] и datab[]=1. Этот сигнал появился на выходе с задержкой на один
такт, заданной в поле «Yes, I want an output latency of __ clock cycle».
72
3 Лабораторные работы
3.1 Общие рекомендации по выполнению лабораторных работ
Перед выполнением лабораторных работ необходимо изучить разделы
1 и 2 настоящих методических указаний, описание лабораторной установки,
выдаваемое непосредственно на лабораторных занятиях и получить у
преподавателя индивидуальное задание для выполнения.
Общий порядок выполнения лабораторных работ:
 запустить на компьютере пакет Quartus II;
 создать новый проект в указанном преподавателем каталоге;
 выполнить описание проекта в графическом или текстовом
редакторе (в зависимости от индивидуального задания) - показать
преподавателю результаты работы и сохранить их для отчета;
 скомпилировать проект, при этом назначить параметры компиляции
и физические контакты в соответствии с индивидуальным заданием показать преподавателю результаты работы и сохранить их для отчета;
 выполнить моделирование с использованием утилиты Waveform
(если предусмотрено заданием) - показать преподавателю результаты
работы и сохранить их для отчета;
 загрузить проект на отладочную плату и протестировать работу
созданного
устройства
(если
предусмотрено
заданием)
-
показать
преподавателю результаты работы и сохранить их для отчета.
Содержание отчёта по лабораторной работе
1. Титульный лист;
2. Цель работы;
3. Задание по лабораторной работе;
4. Подробное описание этапов выполнения работы со скриншотами;
5. Выводы по проделанной работе.
73
3.2 Лабораторная работа № 1
"Знакомство с САПР Quartus II. Управление индикаторами на
отладочной плате".
Цель работы: ознакомиться с САПР Quartus II, основными этапами
проектирования на основе создания проекта в графическом редакторе и
работой с отладочной платой.
Задание (получить у преподавателя):
1) включить на отладочной плате заданные индикаторы (светодиоды);
2) при помощи любых подряд идущих светодиодов отобразить на
отладочной плате заданное число в двоичном коде.
Указания по выполнению работы:
1. При создании нового проекта задайте имя «test_project»; назначьте
микросхему (уточнить у преподавателя) из семейства Cyclone.
2. Создайте схему подключения светодиодов в графическом редакторе
(рис.3.1). Чтобы светодиоды светились, на них необходимо подать
логическую единицу - «VCC», если на светодиод подать логический ноль «GND», то он не будет гореть. Сохраните схему. Покажите преподавателю.
Сделайте скриншоты.
3. Скомпилируйте проект. Компиляция может занять несколько минут.
Если ошибок не обнаружено, то по завершении компиляции высветится окно
с сообщением об успешной компиляции. Если были обнаружены ошибки, то
необходимо вернуться к редактированию схемы и устранить их.
4. Осуществите назначение физических выводов в PinPlanner:
4.1. Выберите интерфейс приёма-передачи - он указывается в графе I/O
Standard (рис.3.2). I/O Standard для светодиодов на отладочной плате 2,5 В. Для заполнения столбца I/O Standard дважды кликните на строку, в
предложенном меню выберите нужный интерфейс (рис.3.3).
74
Рисунок 3.1 – Пример схемы подключения светодиодов
Рисунок 3.2 – Окно Pin Planner
75
4.2. Назначьте каждый выход схемы на физический вывод ПЛИС,
заполнив поле Location. Нумерацию выводов ПЛИС для светодиодов
возьмите из описания отладочной платы (спросить у преподавателя). В
результате таблица должна выглядеть так, как показано на рис.3.4;
Рисунок 3.3 – Таблица для назначения физических выводов
Рисунок 3.4 – Заполненная таблица для назначения физических выводов
4.3. Проверьте допустимость созданных назначений командой Start I/O
Assignment Analysis. По окончании проверки закройте окно PinPlanner.
Сохраните проект. Рабочее поле проекта будет выглядеть следующим
образом (рис.3.5). Рядом с выводами появились таблицы, в которых указан
интерфейс приёма-передачи и физический вывод ПЛИС;
4.4. Покажите преподавателю. Сделайте скриншоты.
5. Назначьте для всех неиспользуемых выводов ПЛИС третье (высокоимпедансное) состояние командой
"Project Navigator > Cyclone *** > Device > Device and Pin Options >
Reserve all unused pins > As input tri-stated"
76
Рисунок 3.5 - Рабочее поле проекта после назначения выводов и проверки
6. Скомпилируйте проект. Покажите преподавателю.
7. Сконфигурируйте ПЛИС на отладочной плате - загрузите готовый
проект в ПЛИС. Для этого необходимо выполнить следующие шаги:
- подключить отладочную плату к компьютеру - подключить USBкабель от компьютера к разъёму USB Blaster Port на отладочной плате;
- открыть окно Programmer командой "Tools > Programmer" (рис.3.6);
Рисунок 3.6 – Окно Programmer
77
- в открытом окне удалить файл предыдущего проекта (если
необходимо), выделив в верхнем поле строку с файлом и нажав Delete;
- выбрать USB Blaster в строке Currently selected hardware, нажав
кнопку Hardware Setup в левом верхнем углу;
- выбрать файл конфигурации с расширением .sof командой
"Add file > output_files > test_project.sof > Open";
- нажать кнопку Start для загрузки файла конфигурации в ПЛИС
(рис.3.7).
Рисунок 3.7 - Окно Programmer перед загрузкой конфигурации в ПЛИС
8. После конфигурации на отладочной плате должна включиться
светодиодная индикация в соответствии с собранной схемой. Проверьте
соответствие полученного результата индивидуальному заданию. Покажите
преподавателю. Сделайте скриншоты.
9.
Переведите
в
двоичный
код
заданное
число.
Выберите
самостоятельно светодиоды для задания 2). Выполните пп. 1-8 для задания
2).
10. Отметьте выполнение работы у преподавателя.
78
Контрольные вопросы:
1.
Правила перевода целых и дробных чисел из десятичной системы
счисления в любую другую и обратно.
2.
Светодиоды:
УГО,
электрические
параметры
и
основные
характеристики, схема включения.
3.
Основные этапы проектирования цифровых устройств на ПЛИС в
САПР Quartus II.
4.
Общая характеристика САПР Quartus II.
5.
Состав проекта в САПР Quartus II.
6.
Стандартные библиотеки: что это такое, их назначение.
7.
Состав стандартных библиотек в САПР Quartus II.
8.
Назначение и состав отладочной платы.
9.
Характеристика семейства микросхем ПЛИС Cyclone IV и V.
10.
Характеристика микросхемы Cyclone IV EP4CE115F29C8.
11.
Характеристика микросхемы Cyclone V SE 5CSEMA5F31C6N.
12.
Графический пользовательский интерфейс: назначение, состав,
возможности.
13.
Линии и шины в САПР Quartus II. Соединение элементов с
помощью имен.
14.
Физический интерфейс: виды, технические характеристики.
15.
Утилита Pin Planner: назначение, порядок работы.
16.
Компиляция проекта: назначение, параметры компиляции.
17.
Этапы компиляции проекта.
18.
Моделирование проекта: назначение, порядок выполнения.
19.
Утилита Waveform: назначение, возможности, порядок работы.
20.
Конфигурирование ПЛИС: назначение, параметры, порядок
выполнения.
21.
Файл конфигурирования (.sof) ПЛИС: назначение, порядок
создания.
79
3.3 Лабораторная работа № 2
"Библиотека примитивов в САПР Quartus II. Работа с утилитой
Waveform."
Цель работы: создание проекта на ПЛИС в Quartus II, изучение
принципа работы триггеров (dff, tff), моделирование проекта (симуляция,
знакомство с временными диаграммами), работа с отладочной платой (работа
с тумблерами), изучение работы с утилитой Waveform, дальнейшее
знакомство с отладочной платой, исследование последовательностных
устройств.
Варианты лабораторной работы
1. Собрать схему сдвигового регистра (Приложение А, рис.А1),
промоделировать схему с использованием утилиты Waveform. Работа с
тумблерами на отладочной плате (тумблер SW[9] и диоды LEDR[3],
LEDR[4], LEDR[6]…LEDR[8], выводу CLK назначить физический вывод
«PIN_Y2», 3,3-VLVTTL). Отобразить полученные результаты в отчёте по
лабораторной работе;
2. Собрать
схему
регистра
памяти
(Приложение
А,
рис.А2),
промоделировать схему с использованием утилиты Waveform. Работа с
тумблерами на отладочной плате (тумблеры SW[3]…SW[6] и диоды
LEDR[3]…LEDR[6], выводу CLK назначить физический вывод «PIN_Y2»,
3,3-VLVTTL). Отобразить полученные результаты в отчёте по лабораторной
работе;
3. Собрать
схему
четырёхразрядного
суммирующего
счётчика
(Приложение А, рис.А3), промоделировать схему с использованием утилиты
Waveform. Работа с тумблерами на отладочной плате (тумблер SW[5] и
диоды LEDR[2]…LEDR[5], выводу CLK назначить физический вывод
«PIN_Y2», 3,3-VLVTTL). Отобразить полученные результаты в отчёте по
лабораторной работе;
80
4. Собрать схему четырёхразрядного счётчика со сквозным переносом
(асинхронный счётчик) (Приложение А, рис.А4), промоделировать схему с
использованием утилиты Waveform. Работа с тумблерами на отладочной
плате (тумблер SW[2] и диоды LEDR[0], LEDR[2], LEDR[4], LEDR[7],
выводу CLK назначить физический вывод «PIN_Y2», 3,3-VLVTTL).
Отобразить полученные результаты в отчёте по лабораторной работе;
5. Собрать схему синхронного двоичного счётчика (Приложение А,
рис.А5), промоделировать схему с использованием утилиты Waveform.
Работа с тумблерами на отладочной плате (тумблер SW[5] и SW[6], диоды
LEDR[1], LEDR[3], LEDR[4], LEDR[6], выводу CLK назначить физический
вывод «PIN_Y2», 3,3-VLVTTL). Отобразить полученные результаты в отчёте
по лабораторной работе;
6. Собрать схему счётчика Джонсона (Приложение А, рис.А6),
промоделировать схему с использованием утилиты Waveform. Работа с
тумблерами на отладочной плате (тумблер SW[4], диоды LEDR[2], LEDR[3],
LEDR[5], выводу CLK назначить физический вывод «PIN_Y2», 3,3VLVTTL). Отобразить полученные результаты в отчёте по лабораторной
работе;
7. Собрать схему двоичного вычитающего асинхронного счётчика
(Приложение А, рис.А7), промоделировать схему с использованием утилиты
Waveform. Работа с тумблерами на отладочной плате (тумблер SW[3], диоды
LEDR[2]…LEDR[5] выводу CLK назначить физический вывод «PIN_Y2»,
3,3-VLVTTL). Отобразить полученные результаты в отчёте по лабораторной
работе;
81
Указания по выполнению работы:
Лабораторная работа выполняется в 5 этапов:
1. Этап 1 - Исследование D-триггера
Подробное описание D-триггера можно прочесть в учебном пособии.
1.1 Создайте новый проект в Quartus II, для этого проделайте п.1 – п.4,
описанные в предыдущей лабораторной работе.
В лабораторной работе будет рассмотрен принцип работы D- и Tтриггеров и изучены временные диаграммы этих элементов. Временные
диаграммы логических элементов (И, ИЛИ, НЕ) рассматриваться не будут,
т.к. для освоения принципа их работы, достаточно знания таблиц истинности.
1.2 Вызовите окно Symbol дважды щёлкнув по свободному полю в
проекте. В строке Name введите dff (рис.3.8) и нажмите ОК.
Рисунок 3.8 – Окно Symbol
1.3 Далее для отображения выводов необходимо правой кнопкой мыши
щёлкнуть по элементу, появится меню, в котором выберите Generate Pins for
Symbol Ports. Выводы CLRN и PRN удалите, они Вам пока не понадобятся.
Элемент на экране будет выглядеть так, как показано на рис.3.9.
82
Рисунок 3.9 – D-триггер
Выводы D-триггера:
 D – синхронный вход данных;
 CLK (вход тактовой частоты обозначается треугольником) – вход
тактового сигнала (clock);
 PRN – асинхронная установка;
 CLRN – асинхронный сброс;
 Q – выход триггера.
1.4 Запустите компиляцию проекта, для выявления ошибок. Если были
обнаружены ошибки, необходимо устранить их. Если ошибок не найдено, то
переходите к моделированию проекта.
1.5 Для работы с временными диаграммами в проекте создайте
редактор Waveform. Во вкладке File выберите New, появится окно, далее
выберите University Program VWF и нажмите ОК.
После проделанных действий появится окно Simulation Waveform
Editor (рис.3.10). Описание работы с редактором Waveform можно прочесть
в разделе 1.5 данного методического пособия.
83
Рисунок 3.10 – Окно Simulation Waveform Editor
Дважды кликните в поле наименования портов ввода/вывода, появится
окно Insert Node or Bus (рис.3.11).
Рисунок 3.11 – Окно Insert Node or Bus
В текущем окне нажмите на кнопку Node Finder, откроется
одноименное окно (рис.3.12).
84
Рисунок 3.12 – Окно Node Finder
В поле Filter выберите all. Далее нажмите на кнопку List, в поле Nodes
Found отобразятся все выводы, которые есть в проекте (рис.3.13).
Рисунок 3.13 – Окно Node Finder
Теперь эти выводы необходимо переместить в поле Selected Nodes. Для
этого выделите все выводы с зажатой клавишей Ctrl и нажмите на кнопку,
показанную на рис.3.14. Это удобно в том случае, если в проекте
используется большое количество выводов.
85
Рисунок 3.14 – Поле с кнопками
Для того что бы переместить все выводы, находящиеся в поле Nodes
Found нажмите на клавишу, показанную на рис.3.15.
Рисунок 3.15 – Поле с кнопками
По окончании нажмите ОК. В окне Insert Node or Bus нажмите ОК.
В окне Simulation Waveform Editor в поле наименования портов
ввода/вывода отобразятся выбранные выводы (рис.3.16).
Рисунок 3.16 - ОкноSimulation Waveform Editor
1.6 Далее
необходимо
на
входы
D-триггера
подать
входные
воздействия. Тактовую частоту задайте равной 50 МГц. Для этого выберите в
окне Simulation Waveform Editor вывод CLK, панель инструментов станет
86
активной. На панели инструментов нажмите на значок, показанный на
рис.3.17.
Рисунок 3.17 – Панель инструментов окна Simulation Waveform Editor
Появится окно Clock (рис.3.18). В поле Period выставите 50 МГц или
20 нс. Также в этом окне есть поля Offset (смещение) и Duty cycle (рабочий
цикл). В поле Offset задаётся смещение частоты, а в поле Duty cycle
длительность строба в одном такте. Сделайте так, как показано на рис.3.18 и
нажмите ОК.
Рисунок 3.18 – Окно Clock
В окне Simulation Waveform Editor выберите вывод D и выделите
любой участок временной сетки. На панели инструментов нажатием значка,
показанного на рис.3.19 задайте выделенному участку уровень логической
единицы.
Рисунок 3.19 - Панель инструментов окна Simulation Waveform Editor
В результате проделанных действий окно Simulation Waveform Editor
будет выглядеть так, как показано на рис.3.20.
87
Рисунок 3.20 – ОкноSimulation Waveform Editor
1.7 Следующее действие, которое необходимо проделать, это запуск
симуляции. Для этого на панели задач нажмите на значок, показанный на
рис.3.21.
Рисунок 3.21 – Панель инструментов
Программа предложит сохранить файл (рис.3.22). Нажмите Yes.
Рисунок 3.22 – Информационное окно
В появившемся окне Save Vector Waveform File проверьте путь
сохранения файла (файл должен находиться в папке проекта) и нажмите
Сохранить.
После проделанных действий появится окно Simulation Waveform
Editor в котором будут отображены результаты симуляции (рис.3.23).
88
Рисунок 3.23 - ОкноSimulation Waveform Editor
2. Этап 2 - Исследование T-триггера
Подробное описание T-триггера можно прочесть в учебном пособии.
2.1 Вызовите окно Symbol дважды щёлкнув по свободному полю в
проекте. В строке Name введите tff (рис.3.24) и нажмите ОК.
Рисунок 3.24 – Окно Symbol
2.2 Проделайте п.1.3 – п.1.6 для T-триггера.
Элемент на экране должен выглядеть так, как показано на рис.3.25.
Выводы CLRN и PRN удалите, они Вам пока не понадобятся.
89
Рисунок 3.25 – T-триггер
Выводы T-триггера:
 T – синхронный вход данных;
 CLK3 (вход тактовой частоты обозначается треугольником) – вход
тактового сигнала (clock);
 PRN – асинхронная установка;
 CLRN – асинхронный сброс;
 Q4 – выход триггера.
2.3 Запустите компиляцию проекта, для выявления ошибок. Если были
обнаружены ошибки, необходимо устранить их. Если ошибок не найдено, то
переходите к моделированию проекта.
2.4 Проделайте пункт 1.5. В окне Node Finder из поля Nodes Found
переместите выводы CLK3, T, Q4 (рис.3.26) в поле Selected Nodes.
Рисунок 3.26 – Окно Node Finder
2.5 Далее
необходимо
на
входы
T-триггера
подать
входные
воздействия. Тактовую частоту задайте равной 50 МГц. Выберите вход T и
90
выделите любой участок временной сетки. На панели инструментов задайте
выделенному участку уровень логической единицы.
В результате проделанных действий окно Simulation Waveform Editor
будет выглядеть следующим образом (рис.3.27).
Рисунок 3.27 – Окно Simulation Waveform Editor
2.6 Запустите симуляцию проекта (п.2.5). Окно Simulation Waveform
Editor будет выглядеть следующим образом (рис.3.28).
Рисунок 3.28 – Окно Simulation Waveform Editor
3. Этап 3 – Самостоятельное исследование JK-триггера
4. Этап 4 – Исследование последовательностного устройства
Соберите,
в
соответствии
с
вариантом, предложенную
схему.
Промоделируйте схему с использованием утилиты Waveform, как было
91
показано в п.1. Полученные результаты отобразите в отчёте по лабораторной
работе.
5. Этап 5 - Работа с тумблерами и диодами
Следующим этапом является работа с тумблерами. В зависимости от
варианта, сделайте так, чтобы при переключении тумблеров диоды на
отладочной плате светились.
Для этого на входы схем с помощью утилиты Pin Planner назначьте
физические выводы, которые относятся к тумблерам. При переключении
тумблера в верхнее положениеон задаёт уровень логической единицы.
Физические выводы для тумблеров описаны в руководстве пользователя на
отладочную плату. На выходы схем назначьте физические выводы для
диодов, которые так же можно посмотреть в руководстве пользователя.
Контрольные вопросы:
1. Последовательностные и комбинационные устройства. Значение
и отличие.
2. Принцип работы D-триггера? Временная диаграмма D-триггера?
3. Принцип работы T-триггера? Временная диаграмма T-триггера?
4. Принцип
работы
JK-триггера?
Временная
диаграмма
JK-
триггера?
5. Принцип работы счётчика?
6. Какие
бывают
виды
интерфейсов?
интерфейсов.
7. Назначение тактовой частоты?
92
Логические
уровни
3.4 Лабораторная работа № 3
"Описание элементов на языке VHDL"
Цель работы: создание проекта на ПЛИС в Quartus II.Создание VHDL
файла для описания логических элементов и триггеров на языке VHDL и
преобразование описанного файла в символ. Проверка работоспособности
созданного символа при помощи утилиты Waveform.
Структура текстового файла в общем случае состоит из трёх разделов:
 Объявление библиотек:
-- использование файла библиотек
-- использование библиотеки
-- битовой логики
 Объявление входов/выходов элемента:
library ieee;
useieee.std_logic_1164.all;
-- объявление начала «тела (лица)»
-- элемента
port (
-- объявление входов/выходов
-- элемента
Name_port : mode data_type; -- объявление входа/выхода данных
Name_port : mode data_type -- объявление входа/выхода данных
);
endentity_name;
-- объявление конца «тела (лица)»
-- элемента
 Архитектура программы:
Entity entity_name is
Architecture rtl of entity_name is -- объявление начала архитектуры
-- элемента
begin
-- объявление начала архитектуры
process ()
-- процесс по входному
-- воздействию
begin
-- объявление начала процесса
-- содержание архитектуры
end process;
-- объявление конца процесса
end architecture rtl;
-- объявление конца архитектуры
93
Варианты лабораторной работы
1.
Опишите на языке VHDL D – триггер;
2.
Опишите на языке VHDL T – триггер;
3.
Опишите на языке VHDL логический элемент «И»;
4.
Опишите
на
языке
VHDL
логический
элемент
«И»
с
использованием оператора if (elsif);
5.
Опишите на языке VHDL логический элемент «ИЛИ»;
6.
Опишите на языке VHDL логический элемент «ИЛИ» с
использованием оператора if (elsif);
7.
Опишите на языке VHDL D – триггер с синхронным сбросом;
8.
Опишите на языке VHDL D – триггер с входом разрешения
записи (En);
9.
Опишите на языке VHDL JK – триггер.
Указания по выполнению работы:
Лабораторная работа выполняется в два этапа:
1. Этап 1 – Описание логического элемента на языке VHDL
1.1.
Создайте новый проект в Quartus II, для этого проделайте п.1 –
п.3, описанные в первой лабораторной работе.
1.2.
В проекте создайте VHDL файл, для этого выберите вкладку
File>New>VHDL File и нажмите ОК.
Появится окно текстового редактора, изображённое на рис.3.29.
94
Рисунок 3.29 – Окно текстового редактора
Вновь
созданному
файлу автоматически
присваивается
имя
с
соответствующим расширением. В рассматриваемом примере это имя
Vhdl1.vhd (рис.3.29).

Чтобы назначить создаваемому файлу собственное имя,
выполните команду Save As из вкладки File, после чего на экране
появится окно, показанное на рис.3.30.
95
Рисунок 3.30 – Окно сохранения файла

В поле «Имя файла» введите назначаемое имя и нажмите
кнопку Сохранить.
В окне текстового редактора (рис.3.29) пишется текст программы.
Например, опишем элемент «НЕ» (инвертор) на языке описания аппаратуры
VHDL.
Тогда текст программы для этого элемента будет выглядеть
следующим образом:
96
library ieee;
use ieee.std_logic_1164.all;
-- использование файла библиотек
-- использование библиотеки битовой логики
entity NOT1 is
port
(
A
:in bit;
Y
:out bit
);
end entity NOT1;
-- объявление начала «тела (лица)» элемента
-- объявление входов/выходов элемента
architecture rtl of NOT1 is
begin
process (A)
begin
-- объявление начала архитектуры элемента
-- запуск архитектуры элемента
-- объявление начала процесса
-- запуск процесса элемента
Y<= not A;
end process;
end architecture rtl;
1.3.
-- объявление входа данных
-- объявление выхода данных
-- объявление конца «тела (лица)» элемента
-- содержание архитектуры
-- объявление конца процесса
-- объявление конца архитектуры
Далее описанный элемент необходимо преобразовать в символ и
поместить его в рабочую библиотеку проекта. Чтобы это сделать, выполните
следующие действия:

откройте описанный элемент в главном окне графического
редактора;

щёлкните мышью по вкладке File на панели инструментов
графического редактора. Появится меню, изображённое на рис.3.31. В
меню выберите Create/Update > Create Symbol Files for Current File.
97
Рисунок 3.31 - Выпадающее меню команды File графического редактора
Программа выдаст окно (рис.3.32), в котором говорится, что символ
создан успешно. Нажмите ОК. После этого, созданный символ будет
включён в рабочую библиотеку проекта.
Рисунок 3.32 – Информационное окно
1.4.
Чтобы посмотреть созданный элемент выполните действия,
описанные во второй лабораторной работе (п.1).
Созданный символ будет выглядеть так, как показано на рис.3.33.
98
Рисунок 3.33 – Элемент НЕ
1.5.
Чтобы убедиться в правильности работы созданного элемента,
промоделируйте схему. Для этого проделайте п.1.4 – п.1.7, описанные во
второй лабораторной работе.
Как видно из рис.3.34, элемент «НЕ» (инвертор), описанный на языке
VHDL работает правильно.
Рисунок 3.34 – ОкноSimulation Waveform Editor
2. Этап 2 – Описание триггера на языке VHDL
2.1
Например, опишем RS-триггер на языке описания аппаратуры
VHDL.
2.2
Проделайте п. 1.1 – 1.4 данной лабораторной работы.
Текст программы для RS-триггера будет выглядеть следующим
образом:
libraryieee;
useieee.std_logic_1164.all;
-- использование файла библиотек
-- использование библиотеки битовой логики
entity rs_trigger is
-- объявление начала «тела (лица)» элемента
99
-- объявление входов/выходов элемента
port
(
clk : in std_logic;
R
: in std_logic;
S
: in std_logic;
Q
: buffer std_logic
);
end rs_trigger;
-- объявление входа тактовой частоты
-- объявление входа данных
-- объявление входа данных
-- объявление выхода данных
-- объявление конца «тела (лица)» элемента
architecture trl of rs_trigger is -- объявление начала архитектуры элемента
begin
-- запуск архитектуры элемента
process (clk)
begin
-- объявление начала процесса
-- запуск процесса элемента
if (clk'event and clk = '1') then -- содержание архитектуры
if (S='0' and R='1') then
Q<='0';
elsif (S='1' and R='0') then
Q<='1';
elsif (S='0' and R='0') then
Q<= Q;
end if;
end if;
end process;
-- объявление конца процесса
end rtl;
-- объявление конца архитектуры
На рис.3.35 представлена временная диаграмма работы RS-триггера.
Рисунок 3.35 – Окно Simulation Waveform Editor
100
Контрольные вопросы:
1. Структура текстового файла VHDL?
2. Какие бывают типы данных VHDL?
3. Описание оператора условия if (elsif, else).
4. Основные типы переменных VHDL?
101
3.5 Лабораторная работа № 4
"Знакомство с мегафункциями Quartus II"
Цель работы: изучение принципа работы мегафункций: счётчик
(lpm_counter),
мультиплексор
двухпортовая
(lpm_mux),
память
(RAM: 2-PORT). Изучение временных диаграмм при помощи утилиты
Waveform.
Указания по выполнению работы:
Лабораторная работа выполняется в три этапа:
1.
Этап 1 – Работа с мегафункцией счётчика lpm_counter
1.1
Создайте новый проект в QuartusII, для этого проделайте п.1 –
п.3, описанные в первой лабораторной работе.
Описание мегафункции счётчика приведено в разделе 2 данных
методических указаний.
1.2
Ознакомившись с описанием мегафункции создайте счётчик
проделав пункты, описанные ниже:
 Создайте
8-миразрядный
счётчик,
работающий
в
режиме
updown;
 на вход cnt_en подайте в определённый момент времени «1»
(рис.3.36);
 в любой момент времени когда на cnt_en установлена «1» на
вход sclr подайте «1», т.е. сбросьте счётчик (рис.3.36);
 тактовую частоту clock задайте равной 50 МГц.
102
Рисунок 3.36 - ОкноSimulation Waveform Editor
Компонент должен выглядеть так, как показано на рис.3.37. Далее
после создания компонента запустите компиляцию проекта.
Рисунок 3.37 – Счётчик lpm_counter
После окончания компиляции создайте файл Waveform и проделайте
пункты описанные в п.1.2 этой лабораторной работы. Временная диаграмма
работы счётчика должна выглядеть так, как показано на рис.3.38.
103
Рисунок 3.38 – Окно Simulation Waveform Editor после симуляции
1.3
Далее создайте 4-х разрядный счётчик, проделав следующие
пункты:
 создайте счётчик с 4-х разрядной шиной данных и тактовой
частотой clock равной 50 МГц;
 на вход updown подайте постоянную «1», т.е. счётчик должен
работать в режиме суммирующего счётчика;
 на вход data[3..0] счётчика задайте входное воздействие,
например, «7» как показано на рис.3.39;
 навход разрешения загрузки данных sload в момент времени,
когда на входе data[3..0] задано входное воздействие подайте
«1», как показано на рис.3.39;
 в любой момент времени когда на cnt_en установлена «1» на
вход sclr подайте «1», т.е. сбросьте счётчик.
104
Рисунок 3.39 - ОкноSimulation Waveform Editor
Созданный элемент должен выглядеть так, как показано на рис.3.40.
Рисунок 3.40 – Счётчик lpm_counter
Временные диаграммы счётчика должны выглядеть так, как показано
на рис.3.41.
105
Рисунок 3.41 – Окно Simulation Waveform Editor после симуляции
Из рис.3.41 видно, что на вход data[3..0] счётчика в момент времени,
когда cnt_en равен «1» задано входное воздействие «7», которое задаёт
начало счёта счётчика. Вывод cout оповещает о том, что счётчик закончил
считать и в данном случае досчитал до 15.
1.4
Самостоятельная работа: исследовать, зачем стоит инвертор
перед входов тактовой частоты - clock (рис.3.40).
2.
Этап 2 – Работа с мегафункцией мультиплексора lpm_mux
Описание мегафункции мультиплексора приведено в разделе 2 данных
методических указаний.
2.1
Ознакомившись с описанием мегафункции создайте новый
компонент lpm_mux, без дополнительных выводов и задайте три 2-х
разрядных входа данных.
Созданный компонент будет выглядеть так, как показано на рис.3.41.
Далее после создания компонента запустите компиляцию проекта.
106
Рисунок 3.41 – Мультиплексор lpm_mux
2.2
После окончания компиляции создайте файл Waveform. Далее
выполните следующие действия:
 на входы данных in_data0x, in_data1x, in_data2x подайте
входные воздействия «1, 2, 3», как показано на рис.3.42;
 на вывод sel задайте управляющие сигналы (0, 1, 2), как показано
на рис.3.42.
Рисунок 3.42 - ОкноSimulation Waveform Editor
В результате должно получиться так, как показано на рис.3.43.
107
Рисунок 3.43 – Окно Simulation Waveform Editor после симуляции
Как видно из рис.3.43, мультиплексор поочерёдно выдаёт данные «1, 2,
3» на выход out_result, в зависимости отуправляющего сигнала sel.
2.3
Самостоятельная работа: подайте на вход sel число «3» и
посмотрите, что будет - сделайте вывод.
3.
Этап 3 – Работа с мегафункцией двухпортовой памяти
RAM: 2-PORT
Описание мегафункции двухпортовой памяти приведено в разделе 2
данных методических указаний.
3.1
Ознакомившись с описанием мегафункции создайте память с
сигналом разрешения чтения, с 4-х разрядным входом данных и с одной
синхрочастотой для чтения и записи в память.
Созданный компонент будет выглядеть так, как показано на рис.3.44.
Далее после создания компонента запустите компиляцию проекта.
Рисунок 3.44 – Двухпортовая память RAM: 2-PORT
108
3.2
После окончания компиляции создайте файл Waveform. Далее
выполните следующие действия:
 тактовую частоту clock задайте равной 50 МГц;
 в определённый момент времени, как показано на рис.3.45, на
вход разрешения записи wren подайте входное воздействие;
 на вход адреса для записи в память wraddress задайте адреса
«1, 2, 3, 4, 5, 6», с привязкой к тактовой частоте, как показано на
рис.3.45;
 на вход данных datain задайте данные, как показано на рис.3.45;
 в определённый момент времени, как показано на рис.3.45, на
вход разрешения чтения rden подайте входное воздействие;
 на вход адреса для чтения из памяти rdaddress задайте адреса
«1, 2, 3, 4, 5, 6», с привязкой к тактовой частоте, как показано на
рис.3.45;
Рисунок 3.45 - ОкноSimulation Waveform Editor
В результате должно получиться так, как показано на рис.3.46.
109
Рисунок 3.46 – Окно Simulation Waveform Editor после симуляции
Из рис.3.46 видно, что для записи последовательности данных «2, 6, 3,
7, 1, 5, 4» на вход datain, соответственно по адресам «0, 1, 2, 3, 4, 5, 6»
требуется подать сигнал разрешения записи на весь интервал wren. Для
чтения этих данных соответственно по адресам «0, 1, 2, 3, 4, 5, 6» требуется
подать сигнал разрешения чтения на весь интервал rden.
3.3
Самостоятельная работа:
 задайте один синхросигнал на запись и считывание; задайте
одновременную запись/считывание и посмотрите, что будет;
 задайте чтение из памяти в разбивку.
Контрольные вопросы:
1. Принцип работы счётчика?
2. Принцип работы мультиплексора?
3. Принцип работы двухпортовой памяти?
4. Какие бывают режимы работы двухпортовой памяти?
110
3.6 Лабораторная работа № 5
"Работа с семисегментными индикаторами QUARTUS II"
Цель работы: работа со схемой счётчика (схема выбирается в
соответствии с вариантом), работа с отладочной платой, работа с
семисегментными индикаторами.
Варианты лабораторной работы
1. Вывести на семисегментный индикатор счёт четырёхразрядного
счётчика со сквозным переносом (асинхронный счётчик). Количество
выводимых значений уточняется у преподавателя;
2. Вывести на семисегментный индикатор счёт синхронного двоичного
счётчика. Количество выводимых значений уточняется у преподавателя;
3. Вывести на семисегментный индикатор счёт реверсивного счётчика.
Количество выводимых значений уточняется у преподавателя;
4. Вывести на семисегментный индикатор счёт счётчика Джонсона.
Количество выводимых значений уточняется у преподавателя;
5. Вывести
на
семисегментный
индикатор
счёт
двоичного
вычитающего асинхронного счётчика. Количество выводимых значений
уточняется у преподавателя.
Указания по выполнению работы:
Лабораторная работа выполняется в 4 этапа:
1. Этап 1 – Создание файла второго уровня
1.1 Откройте проект, созданный во второй лабораторной работе.
Назначенные физические выводы удалите, вместо них создайте новые, не
назначая их в Pin Planner.
В
качестве
примера
будет
рассмотрен
четырёхразрядный
суммирующий счётчик (Приложение А, рис.А3).
1.2 Из схемы создайте символ
Для этого в рабочем окне файла щёлкните мышью по вкладке File на
панели инструментов графического редактора. Появится меню, в меню
111
выберите Create/Update > Create Symbol Files for Current File. Программа
предложит сохранить файл, нажмите Сохранить.
Программа выдаст окно, подтверждающее создание файла (рис.3.47).
Созданный файл будет являться файлом второго уровня. Нажмите ОК.
Рисунок 3.47 – Информационное окно
1.3 Далее, для дальнейшей работы, необходимо создать новый
схемный файл и назначить его файлом верхнего уровня.
Для этого перейдите во вкладку File, далее New. В появившемся окне
выберите Block Diagram/Schematic File и нажать ОК.
В окне созданного схемного файла достаньте символ и добавьте
выводы. Далее нажмите на «дискетку» и сохраните файл (рис.3.48).
Рисунок 3.48 – Окно сохранения файла
На панели Project Navigator отобразится созданный файл. Нажмите по
нему правой кнопкой и выберите Set as Top-Level Entity – файл верхнего
уровня. Созданный элемент выглядит так, как показано на рис.3.49.
112
Рисунок 3.49 – Символ четырёхразрядного суммирующего счётчика
2. Этап 2 – Создание блока уменьшения тактовой частоты 50 МГц в
1 Гц.
Человеческий глаз воспринимает частоту смены изображения до 25 Гц.
Следовательно,
чтобы
увидеть
смену
значений
на
семисегментном
индикаторе, он должен выводить значения с частотой ниже 25 Гц. Для этого
в лабораторной работе будет применяться блок уменьшения тактовой
частоты 50 МГц в 1 Гц.
Текст программы для этого блока будет выглядеть следующим
образом:
Library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity one_Hz is
port (
clk: in std_logic;
q:
out std_logic
);
end entity;
architecture rtl of one_Hz is
signal n : integer range 0 to 50000000 :=0;
begin
process(clk)
begin
if (clk'event and clk='1') then
113
if (n>=0 and n<25000000) then q<='0'; n<=n+1;
elsif(n>=25000000 and n<50000000) then q<='1'; n<=n+1;
elsif n=50000000 then q<='1'; n<=0;
end if;
end if;
end process;
end rtl;
2.1 Создайте VHDL файл, вставьте в него текст программы и создайте
символ.
2.2 Достаньте файл из рабочей библиотеки проекта. Соберите схему,
представленную ниже (рис.3.50).
Рисунок 3.50 - Схема
3. Этап 3 – Работа с мегафункцией компаратора (lpm_compare).
Описание мегафункции компаратора приведено в разделе 2 данных
методических указаний.
Для того, чтобы вывести результат счёта счётчика на семисегментный
индикатор понадобятся компараторы. Количество компараторов зависит от
того, до скольких считает счётчик. В примере будет приведено 4
компаратора.
3.1 Достаньте
из
рабочей
библиотеки
проекта
мегафункцию
компаратора lpm_compare. Каждый компаратор необходимо создавать
отдельно.
3.2 Для каждого из компараторов задайте вход datab[] равным
каждому значению счёта счётчика. Разрядность входа dataa[] задайте равной
разрядности выхода счётчика. В качестве выхода компаратора выберите
a = b.
Пример создания 4-х компараторов показан на рис.3.51.
114
Рисунок 3.51 – Мегафункции компараторов
3.3 Соберите схему, представленную ниже (рис.3.52).
Рисунок 3.52 - Схема
4. Этап 4 – Вывод результата счёта счётчика на семисегментный
индикатор.
4.1 Управление
семисегментным
индикатором
осуществляется
отдельно по каждому из семи сегментов. Каждому сегменту назначается
физический вывод ПЛИС, которые можно посмотреть в руководстве
пользователя отладочной платы.
Для
того,
чтобы
на
семисегментном
индикаторе
получить
определённое значение, необходимо сигнал результата сравнения этого
значения с выхода компаратора подать на соответствующие сегменты
115
индикатора. Так как некоторые сегменты цифр совпадают, то для
отображения каждого результата счёта счётчика необходимо подавать
сигналы с выходов разных компараторов на одни и те же сегменты
индикатора. Для этого необходимо использовать логические элементы
«ИЛИ». Количество входов элементов «ИЛИ» будет зависеть от количества
цифр с повторяющимися сегментами.
Ниже приведена нумерация сегментов индикатора в соответствии с
руководством пользователя отладочной платы (рис.3.53).
Рисунок 3.53 - Нумерация сегментов индикатора
4.2 Ниже представлена таблица используемых сегментов для схемы
четырёхразрядного суммирующего счётчика, в соответствии с рис.3.53. В
таблице 3.1 описаны значения счёта счётчика от 0 до 3.
Таблица 3.1 – Используемые сегменты
Номер
Значение счёта счётчика
сегмента
0
0
+
1
+
+
2
+
+
3
+
+
4
+
+
5
+
1
6
2
3
+
+
+
+
+
+
+
+
Из таблицы 3.1 следует, что для сегмента с номером 0 необходимо
использовать логический элемент «ИЛИ» с тремя входами, так как данный
сегмент используется для отображения трёх значений – 0, 2, 3. Максимальное
116
количество входов элемента «ИЛИ» в данном случае равно четырём, т.е. для
сегмента с номером 1. Для сегмента с номером 5 логический элемент «ИЛИ»
не используется, т.к. данный сегмент используется только для отображения
одного числа – 0.
4.3 Соберите схему, представленную на рис.3.54.
Рисунок 3.54 - Схема
При подаче на каждый сегмент семисегментного индикатора уровня
логического нуля осуществляется индикация. На выходах элементов «ИЛИ»
в качестве сигналов индикации устанавливается уровень логической «1».
Поэтому для осуществления индикации на выходах элементов «ИЛИ»
установлены инверторы.
4.4 Запустите компиляцию проекта.
4.5 Назначьте физические выводы на выходные пины HEX в
соответствии с руководством пользователя отладочной платы. Входные пины
назначьте так, как они были назначены во второй лабораторной работе.
4.6 Запустите компиляцию проекта.
4.7 Далее загрузите в ПЛИС файл конфигурации. В данном примере
для того, чтобы счётчик начал считать необходимо на входе CLRN
установить уровень логической «1» при помощи тумблера, как было описано
во второй лабораторной работе.
4.8 По окончании работы выключите отладочную плату.
117
Контрольные вопросы
1. Принцип работы компаратора?
2. Принцип работы семисегментного индикатора?
3. Как создавать файл второго уровня и что является файлом
верхнего уровня?
4. Принцип вывода информации на семисегментный индикатор?
118
СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
1. Захаров Н.Г., Сайфутдинов Р.А. Вычислительная техника: Учебник/
Н.Г. Захаров, Р.А. Сайфутдинов. - Ульяновск: УлГТУ, 2007. - 224 с.;
2. Н.В.
Ефремов.
Введение
в
систему
автоматизированного
проектирования Quartus II: Учебное пособие/Ефремов Н.В. - Московского
государственного университета леса, 2011. -148 с.;
3. Бибило П.Н. Основы языка VHDL: Книга/ П.Н. Бибило – Москва:
СОЛОН-Р, 2002. – 224 с.;
4. Плужников А.Д., Потапов Н.Н., Цветков А.А. Проектирование
автоматов с памятью при использовании языка VHDL и текстового редактора
САПР Quartus II: методические указания к лабораторной работе № 19 по
дисциплинам «Цифровые устройства и микропроцессоры» (часть 1)
/А.Д.Плужников, Н.Н.Потапов, А.А.Цветков–Н. Новгород: НГТУ, 2005. – 34
с.;
5. Ланцов
пособие/В.Н.
В.Н.
Ланцов.
Проектирование
–
Владимир:
университет, 2000. – 35 с.
119
ПЛИС
на
Владимирский
VHDL:
Учебное
государственный
ПРИЛОЖЕНИЕ А
Рисунок А1 – Схема сдвигового регистра
Рисунок А2 – Схема регистра памяти
Рисунок А3 – Схема счётчика четырёхразрядного суммирующего
120
Рисунок А4 – Схема счётчика со сквозным переносом (асинхронный
четырёхразрядного счётчик)
Рисунок А5 – Схема синхронного двоичного счётчика
Рисунок А6 – Схема счётчика Джонсона
121
Рисунок А7 – Схема двоичного вычитающего асинхронного счётчика
122
Документ
Категория
Без категории
Просмотров
7
Размер файла
8 970 Кб
Теги
agafonova
1/--страниц
Пожаловаться на содержимое документа