5. Напишите отчет по лабораторной работе, включающий:
–постановку задачи на лабораторную работу;
–листинг основного модуля и его тестбенча с комментариями, а также подробное описание созданного кода;
–иллюстрация: последовательность данных (вейвформ). Фон рисунка белый, линии и надписи черные.
Варианты заданий
1.Бегущий огонь. По линейке светодиодов непрерывно бежит в одну сторону светящаяся точка. Длину линейки задает двоичное слово, введенное на трех младших позициях дип-переключателя. Например, код 101 означает, что в линейке 5 светодиодов. Кнопка 0 сбрасывает систему в начальное состояние.
2.Группа бегущих огней. По линейке из восьми светодиодов бежит конфигурация из четырех горящих светодиодов, заданная с дип-переключателя. Например, код 1101 означает, что по ленте бегут три световые точки, две из которых располагаются рядом друг с другом, а одна отделена от них пустой позицией. Кнопка 0 сбрасывает систему в начальное состояние.
3.Гирлянда. Работает в режимах «бегущий огонь» (линейка из восьми светодиодов) и мигание (все восемь светодиодов мигают). Кнопка 0 сбрасывает систему в начальное состояние. Дип-переключатель задает максимальное число циклов, которое может быть произведено в одном режиме, после чего он автоматически переключается. Например, число 0010 определяет, что бегущий огонь совершает две итерации, после чего все восемь светодиодов два раза мигают с последующим повторением цикла программы. Кнопка 1 переключает режимы вручную.
4.Бегущий огонь с накоплением. По линейке светодиодов бежит светящаяся точка, доходя до последнего светодиода ленты и оставаясь в конце последней в горящем состоянии. При этом из начала ленты бежит новая точка. Так происходит до тех пор, пока лента не заполняется, после чего все огни сбрасываются и счет начинается сначала. Кнопка 0 сбрасывает систему в начальное состояние.
5.Счетчик числа нажатий на кнопку. По нажатию кнопки 1 загорается очередной светодиод в линейке. Кнопка 0 сбрасывает систему в исходное состояние. Максимальное число светодиодов задается дип-переключателем. Опционально: когда максимальное число светодиодов активно, нажатие на кнопку 1 вызывает кратковременное погасание всей линейки светодиодов на 0,2 сек.
21
6.Мигающая линейка. Линейка из светодиодов, длина которой задается тремя младшими битами дип-переключателя, мигающая с частотой в несколько Гц. Нажатие на кнопку 0 сбрасывает систему в исходное состояние.
7.Бегущий огонь с пропусками. При коде 0 в младшем бите дип-
переключателя поочередно активируются четные светодиоды в линейке, а при коде 1 нечетные. Кнопка 0 сбрасывает систему в исходное состояние.
8.Бегущие огни с пересечением. Светящиеся точки бегут с двух концов линейки навстречу друг другу, пересекаются и бегут до противоположного конца. Длину линейки задает двоичное слово, введенное на трех младших позициях дип-переключателя. Например, код 101 означает, что в линейке пять светодиодов. Кнопка 0 сбрасывает систему в начальное состояние.
9.Бегущие от центра огни. Светящиеся точки бегут из центра линейки в противоположные стороны. Длину линейки задает двоичное слово, введенное на двух младших позициях дип-переключателя: 00 – длина линейки с четвертого по пятый светодиод, 01 – с третьего по шестой, 10 – с второго по седьмой, 11 – с первого по восьмой светодиоды. Например, код 101 означает, что в линейке пять светодиодов. Кнопка 0 сбрасывает систему в начальное состояние.
10.Убегающий огонь. Нажатие на кнопку 1 вызывает однократный пробег светящейся точки. Длина линейки задается дип-переключателем. Кнопка 0 сбрасывает систему в исходное состояние.
11.Змейка. По линейке светодиодов бежит «змейка» из светящихся точек. Как только последний светодиод гаснет, «змейка» бежит из начала линейки. Длина «змейки» задается тремя младшими битами дип-переключа- теля. Кнопка 0 сбрасывает систему в исходное состояние.
12.Разноскоростной бегущий огонь. Скорость перемещения бегущей точки задается двумя младшими битами дип-переключателя. При коде 00 точка движется в 4 раза медленнее, чем при коде 11.
Лабораторная работа 7. ПЛАТФОРМА ПЛИС: ТЕКСТОВОЕ И ГРАФИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Цель работы – знакомство со средой Quartus и особенностями использования графических оболочек при разработке на ПЛИС.
Среда Quartus предлагается фирмой Altera для программирования ПЛИС данного производителя и обладает широким функционалом.
22
Порядок выполнения работы
1. Создайте проект в Quartus и в нем новый файл *.bdf (блок-диаграмма); Выберите пункт меню File →New Project Wizard. Откроется окно Intro-
duction. Нажмите на кнопку Next.
Впервом поле следующего окна определите папку, в которой будет сохранен новый проект. Новая папка проекта не создается автоматически, поэтому необходимо создать ее предварительно. Во втором поле введите имя проекта. Третье поле содержит имя модуля верхнего уровня иерархии; как правило, оно совпадает с именем проекта.
После нажатия на кнопку Next выбрать пункт Empty project. В окне
Family & Device Settings необходимо в поле Family выбрать Cyclone IV, а в поле Available Devices выбрать EP4CE22F17C6N. Нажать кнопку Next.
Вокне EDA Tool Setting необходимо изменить значение поля Simulation со значения VHDL на Verilog HDL. Нажать на кнопку Next и проверить данные проекта. Если данные верны, нажать кнопку Finish.
2. Разработанный в ЛР 6 модуль превратите в графический символ. Для создания графического файла выберите пункт меню File → New → Block Dia-
gram/Schematic File.
Чтобы разместить на BDF-диаграмме компоненты, необходимо щелкнуть правой кнопкой мыши по рабочему полю и выбрать пункт Insert → Symbol…
3.В качестве блока тактирования на блок-диаграмме разместите модуль
ALT_PLL;
4.Соедините модули, подключите их проводниками к пинам ввода–вы- вода, скомпилируйте проект и загрузите его на отладочную плату.
5.Составьте отчет по лабораторной работе.
Содержание отчета:
–текст задания, приведенный к техническому стилю изложения;
–иллюстрация: графический код из файла *.bdf;
–иллюстрация: одна или несколько фотографий платы DE0-Nano, показывающих, что разработанный вами код работает корректно.
Варианты заданий заимствуются из предыдущей лабораторной работы.
23
Лабораторная работа 8. ПЛАТФОРМА ПЛИС: ВВОД–ВЫВОД ЦИФРОВЫХ И АНАЛОГОВЫХ СИГНАЛОВ
Цель работы – знакомство с работой цифровых интерфейсов платформы ПЛИС. Получение навыков ввода–вывода аналоговых данных.
В качестве аппаратной платформы для настоящего курса лабораторных работ была выбрана отладочная плата DE0-Nano фирмы Terasic.
Плата DE0-Nano обеспечивает компактную платформу для разработки FPGA-проектов, предназначенную для широкого спектра встраиваемых приложений, таких как управление роботами или подвижными объектами.
Порядок выполнения работы
1.Разместите на блок-диаграмме проекта Quartus модули управления АЦП и ЦАП согласно варианту задания;
2.Создайте дополнительный модуль обработки данных, при необходимости промоделируйте его работу в Modelsim;
3.Залейте созданный код на плату DE0-Nano, убедитесь в его работоспособности.
4.Напишите отчет по лабораторной работе.
Содержание отчета:
–текст задания, приведенный к техническому стилю изложения;
–иллюстрация: графический код блок-диаграммы;
–листинг всех дополнительно написанных модулей, при наличии – вейвформы;
4.Иллюстрация: одна или несколько фотографий платы DE0-Nano, показывающих, что созданный вами код работает.
Для реализации изменяющегося уровня напряжения можно использовать внешний генератор сигналов с цифровым управлением (ВНИМАНИЕ: входное напряжение АЦП не должно превышать 3,3 В!) либо потенциометр, реализующий делитель напряжения, а для анализа генерируемого сигнала – внешний осциллограф.
Варианты заданий
1. Дискретный индикатор напряжения. Входное напряжение с АЦП де-
лится на восемь уровней, каждому из которых соответствует определенное число горящих светодиодов. Например, при входном напряжении 1,65 В должны гореть четыре светодиода, а при напряжении 3,3 В – все восемь светодиодов.
24
2.Аналоговый индикатор напряжения. Яркость свечения светодиодной ленты зависит от входного напряжения. Яркость задается с помощью широт- но-импульсной модуляции, где ширина импульса соответствует уровню считанного напряжения.
3.Компаратор с индикацией. Напряжение в диапазоне от 0 В до 3,3 В делится на 16 уровней, уровень детектируемого напряжения устанавливается
спомощью дип-переключателя. Когда входное напряжение превысит заданный уровень, линейка светодиодов загорается. Например, при коде 0111 светодиоды будут срабатывать при превышении напряжением уровня в 1,6 В.
4.Повторитель напряжения. На вход АЦП поступает аналоговое напряжение, на выходе ЦАП выставляется то же аналоговое напряжение. В качестве индикатора можно использовать линейку светодиодов, яркость которой задается с помощью ШИМ.
5.Управление семисегментным индикатором, выдающим от 0 до 9 В
в зависимости от уровня напряжения на АЦП. В качестве драйвера семисегментного индикатора используется библиотечный декодер 7446, 7447 (для индикаторов с общим анодом) или 7448, 7449 (для индикаторов с общим катодом). Вставка осуществляется через диалог Symbol → others → maxplus2 → модель драйвера. Физически индикатор подключается к DE0-Nano на макетной плате по схеме, приведенной на рис. 3.
Рис. 3. Подключение семисегментного индикатора с общим анодом
На макетной плате между пинами подключаются защитные резисторы 220 Ом. Можно использовать номиналы резисторов вплоть до 1 кОм.
25