close

Вход

Забыли?

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

?

Лаб QUARTUS содержание

код для вставкиСкачать
 -------Введение
Лабораторный практикум содержит четыре лабораторные работы, две первые из которых посвящены освоению среды автоматизированного проектирования (САПР) Quartus II фирмы Altera, позволяющей на основе программируемых логических схем (ПЛИС) создавать проекты цифровых устройств. Отработка механизмов проектирования осуществляется путем реализации простейших цифровых структур. Основой для выполнения данных работ являются описание САПР и знания функционирования базовых логических схем. В качестве языка описания цифровых устройств выбран язык AHDL. Третья работа знакомит с принципами использования предопределенных структур пакета Quartus II - примитивов, а также с особенностями проектирования устройств на их основе. В четвертой работе отрабатываются механизмы создания и применения модулей, имеющихся в библиотеке САПР и создаваемых разработчиком проекта. Лабораторные работы выполняются фронтальным методом, т.е. все студенты группы одновременно выполняют одно и то же задание. По результатам выполнения работы оформляется отчет, содержащий название и цель работы, описание проектируемых цифровых структур с приведением их программной реализации на языке AHDL, временные диаграммы, отражающие результаты имитационного моделирования, тип выбранной микросхемы ПЛИС и параметры ее конфигурирования.
Лабораторная работа защищается каждым студентом индивидуально путем ответа на вопросы, сформулированные преподавателем.
Лабораторная работа № 1
Освоение среды разработки цифровых схем Quartus II
Цель: знакомство с особенностями работы приложения Quartus II 9.0 в процессе синтеза цифровых устройств на ПЛИС.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Открытие проекта Вызов приложения Quartus II производится последовательным выполнением операций Пуск→Программы→Altera→Quartus II 9.0sp2 Web Edition→Quartus II 9.0sp2 Web Edition. Создание нового проекта осуществляется запуском операций File→New Project Wizard ... ("Файл→Мастер создания проекта..."), вызываемых из главного меню приложения Quartus II. Открытие нового проекта также можно осуществить, кликнув на кнопке Create a New Project вкладки Getting Started With Quartus II Software. Здесь же можно открыть уже существующий проект, кликнув на кнопке Open Existing Project либо на названии проекта из списка, отображаемого на данной вкладке. В появившемся окне New Project Wizard: Introduction ("Мастер создания проекта: введение") можно поставить "галочку" у надписи Don't show me this introduction again ("Не показывать мне это вводное окно снова"), если требуется, чтобы данное нефункциональное окно в будущем не появлялось, и щелкнуть по кнопке Next ("Следующий шаг"). Для создаваемого проекта в появившемся окне New Project Wizard: Directory, Name, and Top-Level Entity [page 1 of 6] ("Мастер создания проекта: папка, имя и модуль верхнего уровня [страница 1 из 6]") щелкнуть по кнопке с тремя точками у верхнего поля ввода и в новом окне Select Directory ("Выбрать папку"), переместившись в желаемое место на диске, выбрать требуемую папку. При необходимости папку можно создать, используя известные стандартные процедуры. Размещение проекта в отдельной папке вызвано тем, что проект может содержать достаточно большое количество файлов. Для того чтобы все разрабатываемые проекты находились в одном месте рабочего диска, их желательно помещать в папку с именем, соответствующим номеру группы студента. После этого щелкнуть по кнопке "Открыть" окна Select Directory. При возвращении в окно New Project Wizard: Directory, Name, and Top-Level Entity [page 1 of 6] убедитесь в том, что в верхнее поле ввода занесен полный маршрут к вновь созданной папке (рис. 1). Во втором поле введите имя проекта. В третьем (нижнем) поле автоматически отобразится имя модуля верхнего уровня, аналогичное имени проекта, введенного во втором поле. Можно переместиться и в другие страницы данного окна, выполняя клики на кнопке Next. Вместе с тем начальную процедуру создания проекта можно завершить, щелкнув по кнопке Finish ("Завершение").
Рис. 1
При создании цифровых устройств, описание которых содержится в одном конструкторском файле (Device Design File), следует давать проекту и модулю верхнего уровня одно и то же имя. В начале каждого следующего сеанса работы с уже созданным проектом необходимо кликнуть в главном меню File→Open Project. В появившемся окне Open Project найти папку проекта и, выделив файл проекта, щелкнуть по кнопке "Открыть". При запуске системы Quartus II открывается главное окно, показанное на рис. 2.
Рис. 2 В верхней части окна отображается полное имя проекта. Ниже располагаются кнопки основных инструментов системы. В левой части главного окна размещены навигатор, показывающий дерево иерархии проекта, и окно состояний решаемых задач. В правой части главного окна расположено рабочее окно, в котором в зависимости от решаемой задачи выводятся окна конструкторского файла, редактора временных диаграмм и отчета о компиляции. Нижнюю часть главного окна занимает окно сообщений об ошибках и предупреждениях.
Создание конструкторского файла
Для создания конструкторского файла в главном меню выберите File→New... ("Файл→Новый"). В появившемся окне New (рис. 3) на закладке Device Design Files ("Конструкторские файлы устройств") определите тип создаваемого конструкторского файла. Конструкторский файл устройства - это главный файл проекта, он содержит функционально-логическое описание устройства. Пакет Quartus II поддерживает ввод описания проекта на основе пяти типов конструкторских файлов: • AHDL File - файл на языке описания аппаратуры фирмы Altera (AHDL - Altera Hardware Description Language); • Block Diagram/ Schematic File - файл в виде графического представления схемы или блок-схемы проекта; • EDIF File - файл в формате обмена электронными проектами (Electronic Design Interchange Format); • Verilog HDL File - файл на универсальном языке описания аппаратуры Verilog; • VHDL File - файл на универсальном языке описания аппаратуры VHDL (Very High Speed Integrated Circuit Hardware Description Language). Рис. 3
Рассмотрим проектирование, основанное на использовании языка описания аппаратуры AHDL. В окне New (рис. 3) выберите строку AHDL File ("Файл на языке описания аппаратуры AHDL"). Далее щелкните по кнопке "OK" в нижней части окна. В рабочем поле главного окна (в правом верхнем углу) появится окно созданного файла с именем AHDL1.tdf. Его расширение означает, что это "Text Design File", т. е. файл с текстовым (программным) представлением проекта.
Текст описания проекта можно непосредственно ввести в рабочее окно приложения либо ранее подготовленное в любом из текстовых редакторов описание перенести в данное рабочее окно. Строки описания проекта нумеруются (рис. 4).
Незаполненный конструкторский файл имеет имя AHDL1.tdf. Если в него вводится программа, имя файла меняется на AHDL1.tdf*. Подготовленное описание проекта следует сохранить с именем, соответствующим имени проекта. Для этого необходимо в главном меню выбрать File→Save As... ("Файл→Сохранить с новым именем..."). В появившемся диалоговом окне "Сохранить как" будет предложено сохранить файл с именем проекта и расширением "tdf". Следует принять предложение и щелкнуть по кнопке "Сохранить". В результате имя AHDL1 файла заменится на имя проекта. Выбор микросхемы и компиляция проекта Поскольку реализация проекта предполагается на основе определенной микросхемы ПЛИС, необходимо в проекте указать тип используемой микросхемы. Для этого выберите в главном меню Assignments→Device... ("Назначения→Микросхема..."). В открывшемся окне Device в списке
Рис. 4 Family ("Семейство") укажите семейство микросхем, например MAX3000A. В расположенном ниже списке Available devices ("Доступные микросхемы") отметьте микросхему, например EPM3032ALC44-10. Окно выбора микросхемы имеет вид, показанный на рис. 5.
После назначения микросхемы можно выполнить компиляцию проекта. Выберите в главном меню Processing→Start Compilation ("Процессы→Запуск компиляции"). По окончании компиляции в рабочем окне отобразится информация о процессе компиляции (рис. 6).
В окне, показанном на рис. 6, присутствуют следующие окна: • окно иерархии проекта Project Navigator (состав и подчиненность модулей) - было на экране до компиляции; • окно состояния процесса компиляции Tasks ("Status window") - было до компиляции незаполненным; в ходе компиляции отражает текущий объем выполнения отдельных этапов в процентах и фиксирует время, затраченное на каждый этап и на весь процесс в целом; • окно отчета о компиляции ("Compilation Report") - появилось в процессе компиляции; • окно сообщений ("Message Window") - было незаполненным до компиляции; отражает статистическую информацию о проекте, а также предупреждения (warnings) и сообщения об ошибках (error messages); • информационное окно ("Quartus II") - появляется по окончании процесса компиляции; сообщает о его успешном или неудачном завершении. Наибольший интерес представляют последние два окна. Информационное окно не позволит продолжать работу, пока вы не щелкните по кнопке "OK", размещенной в данном окне. В окне сообщений, в случае аварийного завершения процесса компиляции, будут представлены сообщения об ошибках. В случае появления сообщения об ошибках требуется установить местоположение ошибок, а также необходимо устранить их. После этого повторить компиляцию проекта. Наиболее часто встречающейся ошибкой является несоблюдение требования одинаковости названия программы и папки проекта. Рис. 5 Рис. 6 Информация, размещенная в окне Compilation Report - Flow Summary, позволяет проверить состояние статуса компиляции, название проекта, выбор микросхемы, число используемых макроячеек и количество задействованных выводов. Детальное назначение выводов микросхемы можно посмотреть, используя последовательный вызов из меню Compilation Report→Fitter→Resource Section→All Package Pins.
Если назначение выводов, сделанное средой проектирования, не удовлетворяет пользователя, необходимые назначения можно выполнить вручную, кликнув Assigments→Pins. В результате выведется окно планировщика выводов Pin Planner (рис. 7), в котором показан внешний вид (схема выводов) микросхемы и обозначен тип используемых выводов. В левой части окна дается перечень групп, а в нижней части - список входных и выходных переменных проекта. При подведении курсора к любому из выводов микросхемы выводится расшифровка его назначения.
Рис. 7
Переменным проекта, показанным в нижней части окна, можно сделать назначение выводов микросхемы. Для этого в поле Location после двойного клика открывается меню, из которого можно выбрать номер назначаемого вывода. При переходе в другую ячейку поля Location ранее выполненное назначение вывода микросхемы фиксируется и назначенный вывод отмечается на схеме красным цветом. Аналогично можно сделать назначения других переменных проекта. После закрытия окна планировщика выводов все сделанные назначения сохраняются. Для того чтобы назначения вступили в силу, следует повторно выполнить компиляцию проекта.
После выполнения компиляции, используя вызов из меню Compilation Report→Fitter→Resource Section→All Package Pins, можно посмотреть назначения выводов микросхемы.
Увеличить размеры окна Compilation Report можно следующим образом. Навести курсор мыши на кнопку Compilation Report, кликнуть правой кнопкой мыши и в выпадающем меню выбрать Detach Window.
Закрытие ненужных окон реализуется кликом правой кнопкой мыши на названии выбранного окна и выбором Close из выпадающего меню.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Запустите приложение Quartus II. 2. На рабочем диске (например, W) создайте папку с номером группы, в которой в дальнейшем будет сохраняться создаваемый проект. 3. Выполните действия, описанные в разделе "Открытие проекта", учитывая, что названия имени проекта и имени модуля верхнего уровня должны совпадать с именем программы, указанным в tdf-файле после слова SUBDESIGN.
4. Выполните действия по созданию конструкторского файла, описанные в разделе "Создание конструкторского файла".
5. Внесите в редактор системы Quartus II текст представленной ниже программы.
% Ф.И.О., гр. 735, Дешифратор 7-сегментного индикатора % SUBDESIGN prim1 -- Название проекта (
i[3..0] : INPUT; -- Объявление входных переменных
a, b, c, d, e, f, g : OUTPUT; -- Объявление выходных переменных
)
BEGIN
TABLE -- Объявление таблицы истинности
i[3..0] => a, b, c, d, e, f, g;
H"0" => 1, 1, 1, 1, 1, 1, 0;
H"1" => х, х, х, х, х, х, х;
H"2" => х, х, х, х, х, х, х;
H"3" => х, х, х, х, х, х, х;
H"4" => х, х, х, х, х, х, х;
H"5" => х, х, х, х, х, х, х;
H"6" => х, х, х, х, х, х, х;
H"7" => х, х, х, х, х, х, х;
H"8" => х, х, х, х, х, х, х;
H"9" => х, х, х, х, х, х, х;
H"A" => х, х, х, х, х, х, х;
H"B" => х, х, х, х, х, х, х;
H"C" => х, х, х, х, х, х, х;
H"D" => х, х, х, х, х, х, х;
H"E" => х, х, х, х, х, х, х;
H"F" => х, х, х, х, х, х, х;
END TABLE;
END;
6. Замените символы "х" в модуле TABLE объявления таблицы на 0 или 1 в зависимости от структуры изображаемого символа.
Семисегментный индикатор имеет семь сегментов (светодиодов), размещаемых пространственно в порядке, показанном на приведенном ниже рисунке. Каждый из сегментов индикатора имеет буквенное обозначение.
Структура начертания символов на семисегментном индикаторе имеет следующий вид:
.
7.Сохраните введенную программу в созданной ранее папке. Имя файла должно соответствовать имени проекта.
8.Назначьте микросхему, используемую для реализации проекта. Например, микросхему семейства MAX3000A - EPM3032ALC44-10.
9.Выполните компиляцию программы. При наличии стилистических ошибок в программе исправьте их.
10. Просмотрите параметры загрузки (используемые ресурсы микросхемы), тип и назначение выводов ПЛИС.
11. Измените назначения выводов микросхемы таким образом, чтобы для входных и выходных сигналов использовались выводы, начиная с меньших номеров, в следующем порядке: i[0], i[1], i[2], i[3], a, b, с, d, e, f, g. Назначать можно только комбинированные выводы I/O (input/output). 12. Взяв за основу программу ранее выполненного проекта, составьте программы для синтеза комбинационных устройств по приведенным на рис. 8 схемам (a и b). Программа должна содержать название проекта, объявления входных и выходных переменных, заключенные в круглых скобках, логические выражения, размещенные в операторных скобках BEGIN - ЕND.
13. Выполните компиляцию программ и исправьте возможные ошибки.
Рис. 8
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как реализуются открытие проекта в Quartus II и создание его конструкторского файла?
2. Для чего выполняется компиляция проекта и какую информацию содержит отчет о компиляции?
3. Как отыскать ошибки, имеющиеся в программе проекта, и как их исправить?
4. Как осуществляется назначение микросхемы, используемой при реализации проекта?
5. Объясните механизм назначения сигналов выводам микросхемы.
Лабораторная работа № 2
Освоение моделирования работы цифровых схем в среде Quartus II
Цель: знакомство с особенностями работы приложения Quartus II в процессе моделирования цифровых устройств на ПЛИС.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Создание файла временных диаграмм Процедура проверки функционирования проекта ("Simulation") предваряется определением сигналов, представляющих собой импульсные процессы требуемой формы, подаваемых на входные выводы спроектированного устройства. Входные воздействия выполняются в виде так называемых временных диаграмм ("Waveform") переменных, задаваемых разработчиком в редакторе временных диаграмм ("Waveform Editor") и записываемых в файл *.vwf ("Vector Waveform File"). В процессе моделирования симулятор определяет, какие сигналы разработанное устройство сформирует на выходных выводах, и представляет результаты также в виде временных диаграмм. Для запуска процесса моделирования необходимо в главном меню последовательно выбрать Processing → Generate Functional Simulation Netlist ("Процессы→Создание списка цепей для функционального моделирования"). В результате выводится окно Quartus II, в котором отражается информация об успешном создании списка. На этом этапе из конструкторского файла извлекается список цепей для функционального моделирования. Далее следует выбрать в главном меню File→New, в появившемся окне New активизировать закладку Verification Debuger Files и в списке файлов на этой закладке выбрать строку Vector Waveform File. Щелкнуть по кнопке "OK" окна New. В рабочем поле приложения поверх других окон появится незаполненное окно редактора временных диаграмм с именем Waveform1.vwf. Для дальнейшей работы с данным окном его необходимо сохранить, присвоив ему имя проекта. Для этого следует выбрать в главном меню File→Save As... и в появившемся окне Сохранить как нажать кнопку Сохранить. В результате файлу по умолчанию будет дано имя проекта. То есть название Waveform1.vwf будет заменено на название проекта с расширением .vwf (рис. 9). Для запуска процесса моделирования в форму временных диаграмм требуется ввести имена переменных проекта. Необходимо щелкнуть правой копкой в поле имен узлов и шин редактора временных диаграмм. В появившемся контекстном меню следует выбрать строку Insert→Insert Node or Bus... ("Ввести узел или шину..."). На экране появится окно Insert Node or Bus (рис. 10). Это окно позволяет ввести в файл временных диаграмм отдельный узел или шину, набрав вручную имя в верхнем поле окна Name. Для входного узла остальные параметры можно оставить без изменения и щелкнуть по кнопке "OK". Однако существует более удобная возможность автоматического ввода узлов и шин из числа существующих в конструкторском файле. Для реализации этой возможности следует, не меняя параметров окна Insert Node or Bus, щелкнуть по кнопке Node Finder... ("Регистратор узлов..."). На экране появится окно Node Finder (рис. 11). В окне Node Finder в поле ввода Named: ("Из имен:") оставьте символ Рис. 9 Рис. 10
шаблона для всех возможных имен - "*". В списке Filter: ("Фильтр:") выберите строку "input" для "фильтрации" в список только входных выводов проекта ("output" - только выходных; "all" - всех и т. п.). Щелкните по кнопке List ("Извлечь список"). В окне Nodes Found: ("Найденные узлы:") появится список всех входных узлов проекта. Если выделить в списке Nodes Found один или несколько узлов и щелкнуть по кнопке ">", то только выделенные узлы будут занесены в список Selected Nodes: ("Выбранные узлы:"). Если, не выделяя узлов, щелкнуть по кнопке ">>", то все узлы из списка Nodes Found будут занесены в список Selected Nodes. Для выделения группы следующих друг за другом узлов необходимо щелкнуть по первому и затем щелкнуть с нажатой клавишей Shift по последнему из выделяемых узлов. Ошибочно внесенные узлы можно удалить из списка "Selected Nodes:". Щелчок по кнопке "<" удалит только выделенные в этом списке узлы; щелчок по кнопке "<<" - все внесенные узлы. Далее следует щелкнуть по кнопке "OK" окна Node Finder и затем - по кнопке "OK" окна Insert Node or Bus. В результате в поле Name редактируемого файла временных диаграмм появится список имен входных узлов, в поле Value появятся значения "B 0" ("Binary 0" - Двоичный 0),
Рис. 11 а в поле временных диаграмм - соответствующие логическому значению 0 диаграммы во всем временном диапазоне. По умолчанию по оси времени установлен диапазон 0 - 1us (0 - 1 микросекунда). Конечное значение времени моделирования можно изменить, выбрав в главном меню Edit→End Time... ("Редактирование→Конечное время") и установив в появившемся окне End Time в поле ввода Time требуемое значение верхнего предела времени, а в расположенном справа списке - нужные единицы измерения: s - секунды, ms - миллисекунды, us - микросекунды, ns - наносекунды, ps - пикосекунды. Начальное значение временного диапазона всегда равно нулю. Также можно задать отсчеты времени (шаги изменения состояний) временных диаграмм. Для этого следует в главном меню выбрать Edit→Grid Size... ("Редактирование → Параметры сетки..."). В появившемся окне Grid Size, не меняя других параметров, в поле ввода Period: ("Период:") установить число, например 100, а в следующем справа от него списке единиц - "ns" (наносекунды). Щелкнуть по кнопке "OK". Установленная таким образом сетка времени позволит точно совмещать фронты логических уровней на диаграммах разных входных узлов в точках, кратных шагу сетки. Для функционального моделирования проекта необходимо сформировать диаграммы всех входных сигналов так, чтобы они воспроизводили все возможные комбинации значений аргументов из таблицы истинности разрабатываемого устройства. Рассмотрим принцип задания входных колебаний. Выделим узел "а" в редакторе временных диаграмм. Для этого щелкнем по имени "а" в поле имен или по полю значений напротив имени "а" (рис. 12). Выделенный узел
Рис. 12 вместе со своей диаграммой будет помечен так, как это показано на рис. 12. Если требуется в каком-либо временном интервале установить известное логическое значение сигнала, то необходимо выделить мышью этот временной интервал на диаграмме данного сигнала, а затем воспользоваться одной из основных кнопок на вертикальной панели инструментов: • "Forcing Unknowm (X)" - установка неопределенного уровня; • "Forcing Low (0)" - установка низкого (0) логического уровня; • "Forcing High (1)" - установка высокого (1) логического уровня; • "High Impedance (Z)" - установка третьего состояния (Z). Для установки переменного колебания необходимо щелкнуть по кнопке Count Value ("Расчетное значение"). Краткие названия кнопок появляются в подсказках при наведении курсора мыши на кнопку. На экране появится окно Count Value (рис. 13). В этом окне активизируйте закладку Timing ("Хронометраж"). Установите отметку против надписи At absolute times: ("По абсолютным отсчетам:"). В поле ввода Count every: ("Рассчитывать каждые:") введите, например, число 100, а в находящемся справа от него списке единиц выберите "ns". В поле Multiplied by: ("Умножать на:") введите 1. Щелкните по кнопке "OK". Временная диаграмма для выбранной переменной будет представлять собой импульсное колебание с параметрами, заданными в окне Count Value.
Таким же образом можно сформировать временные диаграммы для других узлов. Если требуется диаграмма, аналогичная сигналу "а", но с большей длительностью импульса, необходимо повторить все перечисленные действия, но в поле Multiplied by введите значение 2 или более.
Рис. 13
Моделирование проектируемого устройства Для осуществления моделирования процессов в проектируемом устройстве необходимо кликнуть в главном меню на Processing → Simulator Tool ("Процессы → Параметры симулятора"). В появившемся окне Simulator Tool (рис. 14) в списке Simulation mode: ("Режим моделирования:") выбрать строку Timing ("Временной"). При установке режима Functional ("Функциональный") в результате моделирования будут получены идеальные временные диаграммы сигналов выходных узлов без учета реальных аппаратных задержек, что может быть полезно на предварительных этапах проектирования. В режиме "Временной" будут получены диаграммы с задержками сигналов, определяемыми числом элементов на пути распространения сигнала и выбранным типом микросхемы. Кроме того, в режиме "Временной" симулятором обнаруживаются так называемые Glitches ("Выбросы") - перепады логического уровня за короткие промежутки времени. Для запуска процесса моделирования необходимо щелкнуть по кнопке с тремя точками справа от поля Simulation input: ("Входные данные для моделирования:") и убедиться в том, что в поле внесено имя подготовленного файла временных диаграмм "*.vwf". На панели Simulation period ("Период моделирования") включите радиокнопку "Run simulation until all vector stimuli are used". На панели Simulation options ("Параметры моделирования") установите "галочку" в строке Automatically add pins to simulation outputs waveforms ("Автоматически включать выходные узлы в результирующие временные диаграммы"). Установка указанного выше свойства обеспечит автоматическое добавление в исходный файл "*.wvf" всех существующих выходных узлов с их диаграммами. Это свойство не следует включать, если требуется наблюдать диаграммы только части выходных узлов. В этом случае названия узлов необходимо ввести вручную. Рис. 14 Остальные свойства на панели Simulation options обеспечивают следующее: • Check outputs ("Контроль выходных диаграмм") - позволяет симулятору сравнивать сформированные разработчиком ожидаемые диаграммы выходных сигналов с диаграммами, получаемыми в результате моделирования; • Setup and hold time violation detection ("Обнаружение нарушений времени предустановки и времени удержания") - контролирует процесс моделирования на наличие нарушений параметров "время предустановки" и "время удержания" и сообщает о них в окне сообщений; • Glitch detection ("Обнаружение выбросов") - контролирует процесс временного моделирования на наличие выбросов и сообщает о них в окне сообщений; • Overwrite simulation input file with simulation results ("Обновление входного файла "*.vwf" c добавлением результатов моделирования") - включает режим обновления файла временных диаграмм. Старт симуляции можно выполнить как из данного окна, так и из главного меню, кликнув Processing→Start Simulation. На экране появится окно Simulation Report ("Отчет о моделировании"), а в окне состояния процесса начнет отражаться объем выполнения процесса моделирования. После завершения моделирования на экране появится информационное окно с сообщением о завершении процесса. Его следует закрыть, щелкнув по кнопке "OK". Если моделирование завершилось успешно, то на экране останется окно Simulation Report, представленное на рис. 15. Рис. 15 ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. Откройте созданный в первой лабораторной работе файл, используемый для синтеза дешифратора семисегментного индикатора.
2. Выполните компиляцию файла.
3. Просмотрите и зафиксируйте назначения аппаратной реализации проекта, сделанные по умолчанию системой Quartus II. Определите тип микросхемы, загрузку ее макроячеек, требуемое количество ресурсов и топологию размещения входных и выходных выводов.
4. Подключите сигнальный редактор Waveform Editor. Сделайте назначения входных сигналов индивидуально для каждого входа, установив на них уровни логической единицы в течение следующих интервалов времени: i0 - 100 нс, i1 - 200 нс, i2 - 300 нс, i3 - 400 нс. Выполните моделирование, зафиксируйте и проанализируйте результаты моделирования.
5. Измените общее время моделирования с 1мкс на 5мкс.
6. В окне редактора Waveform Editor представьте входные сигналы в составе группы. Используя назначения счетчика генератора входных сигналов, установите шаг изменения инкремента сначала 1, а затем 2 и временные интервалы 100 мкс и 400 мкс соответственно. Результаты моделирования зафиксируйте и проанализируйте. 7. Проанализируйте работу цифровых объектов, представленных на рис. 8, программная реализация которых выполнена в лабораторной работе № 1. Для аппаратной реализации проектов используйте микросхему EPF10K10LI84-4 серии FLEX10K. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как выполняются подготовка и создание файла временных диаграмм, используемого в процессе моделирования поведения объекта проекта?
2. Как выполняется моделирование проектируемого устройства и какие изменения можно внести в исходный файл временных диаграмм?
3. Как выявить возможную некорректную работу проектируемого устройства, фиксируя несоответствия задержек в его узлах?
4. Как задаются общее время моделирования и градация шага изменения состояний временных диаграмм?
5. Как в окно временных диаграмм внести дополнительные переменные, введенные в программу с расширением .tdf при ее модификации?
Лабораторная работа № 3
Примитивы триггеров и цифровые устройства на их основе
Цель: знакомство с особенностями применения примитивов языка AHDL и построения цифровых устройств на их основе.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
В языке AHDL в качестве готовых логических блоков могут применяться встроенные примитивы буферов и триггеров. Наиболее легко воспринимаемым способом использования примитивов в описании устройства является объявление именованного экземпляра примитива в разделе переменных. После такого объявления в логическом разделе описания можно обращаться к портам (выводам) примитива. Рассмотрим применение примитива D-триггера типа dff. Программа с использованием именованного экземпляра dff может быть записана следующим образом:
SUBDESIGN dtr
(
data, clock, resetn, setn : INPUT;
out : OUTPUT;
)
VARIABLE
a_trig : dff;
BEGIN
a_trig.d=data;
a_trig.clk=clock;
a_trig.clrn=resetn;
a_trig.prn=setn;
out=a_trig.q;
END;.
Указанный примитив можно применять при построении более сложных цифровых структур, например регистров. При построении четырехразрядного регистра в программе следует предусмотреть использование четырех однотипных D-триггеров, причем включить их следует последовательно (выход предыдущего триггера должен быть подключен к входу последующего). Использование примитивов триггеров может осуществляться и без их объявления. Программа, реализующая регистр на четырех триггерах dff без их предварительного объявления, будет иметь приведенный ниже вид. Для более глубокого изучения механизмов построения структур на основе примитивов в данную и последующие программы, отмеченные знаком ***, введены некоторые неточности. TITLE "REGISTR***";
SUBDESIGN regdtr
data, clock, resetn, setn : INPUT;
a, b, c, d : OUTPUT;
)
BEGIN
a=dff(data, clock, resetn, setn)
b=dff(data, clock, resetn, setn)
c=dff(data, clock, resetn, setn)
d=dff(data, clock, resetn, setn)
END; Рассмотрим пример программной реализации Т-триггера.
TITLE "T-trigger";
SUBDESIGN ttr ( clock : INPUT;
outa : OUTPUT; ) BEGIN outa=tff(vcc,clock,vcc,vcc); END;
На основе нескольких Т-триггеров можно построить двоичный счетчик. Программа для его реализации имеет вид:
TITLE " COUNTER***";
SUBDESIGN sttr
(
clock, setn, resetn : INPUT;
tt1, tt2, tt3, tt4 : OUTPUT;
)
BEGIN
tt1=tff(vcc,clock,resetn,setn);
tt2=tff(tt1,clock,resetn,setn);
tt3=tff(tt2,clock,resetn,setn);
tt4=tff(tt3,clock,resetn,setn);
END;.
Счетчик, построенный с использованием данной программы, последовательно реализует 16 состояний четырехразрядного двоичного кода. Выполнив дешифрацию 14-го состояния счетчика и использовав дешифрированный импульс в качестве сигнала обнуления счетчика, можно построить асинхронный счетчик-делитель на 14. Программа, полученная на основе модификации предыдущей, будет иметь вид:
TITLE "COUNTER_uk***";
SUBDESIGN sttr
(
clock,setn:INPUT;
tt1,tt2,tt3,tt4:OUTPUT;
)
BEGIN
tt1=tff(vcc,clock,R,setn);
tt2=tff(tt1,clock,R,setn);
tt3=tff(tt2,clock,R,setn);
tt4=tff(tt3,clock,R,setn);
R=!(tt1& tt2 & tt3 & tt4);
END;.
Если дополнить последнюю структуру счетчика схемами дешифрации, то можно выделить, например, следующие состояния счетчика: 0, 5, 8, 12. В этом случае в последнюю программу следует внести изменения. Так, нулевое состояние счетчика дешифрируется следующей записью: t0=!tt1 & !tt2 & !tt3 & !tt4, внесенной в логический раздел программы. Аналогично можно выполнить дешифрацию и остальных перечисленных состояний.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1. В рабочее окно Quartus II перенесите из теоретической части описания работы программу, синтезирующую D-триггер. Проверьте, отражает ли работа программы режимы таблицы истинности для D-триггера.
2. Используя Waveform Tool, проанализируйте работу триггера. Частоту сигнала на входе clock задайте, используя опцию Count Value, предварительно установив параметр Grid Size = 100 ns.
3. Измените исходную программу D-триггера таким образом, чтобы в ней были принудительно определены как VCC значения сигналов на портах clrn, prn.
4. На основе последовательно подключенных однотипных триггеров постройте четырехразрядный регистр сдвига, учитывая, что выход первого триггера должен быть подключен к входу второго триггера, а выход второго триггера - к входу третьего и т.д.
5. В редакторе Waveform Editor задайте на входе d первого триггера импульс уровня логической единицы в течение одного периода частоты clock. Проследите продвижение импульса по всей цепочке триггеров.
6. Запишите программу для описания Т-триггера и с помощью волновой диаграммы проследите принцип его функционирования.
7. Взяв за основу программу для двоичного счетчика на основе четырех Т-триггеров, исследуйте работу счетчика в редакторе Waveform Editor. В программе требуется сделать необходимые исправления так, чтобы она адекватно отражала работу счетчика.
8. Выполните доработку программы, полученной в п.7, с целью обеспечения коэффициента деления счетчика, равного 14.
9. В программу счетчика внесите дешифрирующие схемы, позволяющие выделить четыре указанных в описании импульса. Работу схемы проверьте с помощью редактора Waveform Editor.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как осуществляется использование примитива триггера в программе проекта на AHDL?
2. Перечислите существующие примитивы триггеров, указав их отличительные особенности.
3. Перечислите наиболее часто используемые примитивы буферов. Охарактеризуйте их.
4. В чем состоит отличие использования примитива триггера без объявления от использования с объявлением в разделе переменных?
5. Какие порты примитива триггеров не требуют обязательного назначения сигналов на них?
Лабораторная работа № 4
Создание и использование модулей цифровых устройств Цель: изучение методов создания и использования модулей цифровых устройств.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
Модулями в описании языка AHDL называются предварительно спроектированные цифровые блоки, используемые в текущем проекте как компоненты. В оригинальном описании языка модули носят название функций (мегафункций). Применение модулей похоже на применение встроенных примитивов. Отличие в использовании обусловлено тем, что модули не являются предопределенными объектами языка. Для применения модуля в текущем проекте необходимо следующее.
1. Наличие файла *.tdf с описанием модуля на языке AHDL. Этот файл должен быть помещен в папку подключаемой библиотеки пакета САПР или находиться в папке текущего проекта.
2. В предварительном разделе проекта должен быть помещен прототип модуля (оператор prototype) или с помощью оператора include подключен файл *.inc используемого модуля.
3. В разделе переменных необходимо объявить именованные экземпляры модуля аналогично объявлению экземпляров примитивов. 4. В логическом разделе следует произвести подключение выходных внутренних портов модуля и обеспечить присваивание сигналов входным внутренним портам в соответствии с решаемой задачей. Для получения информационной поддержки по описанию и применению прототипов функции следует, находясь в файле с расширением *.tdf, нажать кнопку F1. В результате откроется файл помощи Quartus II Help. В нем можно отыскать информацию о необходимом для использования модуле, прототип которого размещен в библиотеке САПР. Для получения информации требуется во вкладке Содержание кликнуть на Megafunctions/LPM. В результате в поле, расположенном справа от поля содержания, отобразится информация об имеющихся в библиотеке мегафункциях. Информация собрана в семь разделов. Рассмотрим, например, мегафункцию параллельного (буферного) регистра, который обозначается именем lpm_ff. Для получения помощи о структуре прототипа мегафункции регистра необходимо в правом поле кликнуть на Storage MegaWizards and Megafunctions и в открывшейся таблице кликнуть на надписи lpm_ff. Для просмотра структуры прототипа данного модуля в открывшемся окне lpm_ff Megafunction следует кликнуть на AHDL Function Prototype. В результате отобразится структура прототипа функции lpm_ff:
FUNCTION lpm_ff (data[LPM_WIDTH-1..0], clock, enable, sclr, sset, sload, aclr, aset, aload)
WITH (LPM_WIDTH, LPM_AVALUE, LPM_SVALUE, LPM_FFTYPE)
RETURNS(q[LPM_WIDTH-1..0]).
Первая строка записи прототипа указывает на то, что разрядность регистра (число информационных входов data) задается параметром LPM_WIDTH. Прототип содержит входы: clock - тактовой частоты, enable - разрешения работы, sclr, sset, sload - синхронных сброса, установки и загрузки, а также входы aclr, aset, aload - асинхронных сброса, установки и загрузки. Перечисленные после оператора WITH параметры позволяют настроить регистр под требуемые условия использования. Не все указанные в скобках после слова WITH параметры являются обязательными. Можно обойтись только настройкой обязательного параметра LPM_WIDTH, задающего число разрядов регистра. Выходы регистра указаны после ключевого слова RETURNS.
Программа, позволяющая применить мегафункцию lpm_ff для реализации четырехразрядного буферного регистра, может иметь следующую структуру.
INCLUDE "lpm_ff";
SUBDESIGN lpmff
(
takt, d[3..0], ena : INPUT;
out[3..0] : OUTPUT;
)
BEGIN
out[]=lpm_ff(d[],takt,ena,,,,,,) with (lpm_width=4, lpm_fftype="dff");
END;
В проекте, использующем модуль lpm_ff, определены входы: d[3..0] - информационные, takt - синхронизирующий и ena - разрешения, а также выходы out[3..0]. Модуль lpm_ff применяется без предварительного объявления. Параметры модуля (lpm_width=4, lpm_fftype="dff") объявляются при его использовании. Первый параметр определяет величину разрядной шины регистра (число используемых триггеров), а второй параметр - тип используемых триггеров. Наряду с имеющимися в библиотеке САПР модулями, пользователь сам может создать любой необходимый модуль, выполнить его реализацию в форме библиотечного модуля и в дальнейшем использовать как составной элемент в других проектах.
Рассмотрим построение проекта с использованием предварительно разработанного модуля. Допустим, требуется создать двоичный счетчик, имеющий 8 разрядов. Для его синтеза применим двоичные счетчики с четырьмя разрядами. Подпроект четырехразрядного счетчика оформим в виде подключаемого модуля. Tdf-файл четырехразрядного счетчика имеет вид:
SUBDESIGN cntr
(
clock, load, ena, clr, d[3..0] : INPUT;
q[3..0], cout : OUTPUT; )
VARIABLE
count[3..0] : DFF;
BEGIN
count[ ].clk = clock;
count[ ].clrn = !clr;
IF load THEN
count[ ].d = d[ ];
ELSIF ena THEN
count[ ].d = count[ ].q + 1;
ELSE
count[ ].d = count[ ].q;
END IF;
q[ ] = count[ ].q;
cout = !(q0 & q1 & q2 & q3);
END;.
После компиляции проекта счетчика на его основе можно создать модуль. Для этого требуется кликнуть File→Create/Update→ Create AHDL Include Files for Current File. В окне Quartus II Create Include File was successful кликнуть "OK". Структуру файла с расширением .inc можно посмотреть, открыв соответствующий файл в папке проекта. В дальнейшем данный модуль можно применять в настоящем проекте, а если поместить его в библиотеку САПР, то и в других проектах. Для того чтобы воспользоваться полученными модулями в проекте верхнего уровня, следует в папку проекта верхнего уровня скопировать папки подпроектов и отдельно файлы модулей с расширениями *.inc и *.tdf.
Прототип созданной мегафункции, отражающий входные и выходные порты, имеет вид:
FUNCTION cntr (clock, load, ena, clr, d[3..0]) RETURNS (q[3..0], cout).
Файл проекта верхнего уровня, синтезирующий восьмиразрядный двоичный счетчик с предустановкой и сбросом, описывается приведенной далее программой. INCLUDE "cntr";
SUBDESIGN cntrs
(
takt, zagr, cont, sbr, dv[7..0] : INPUT;
qw[7..0] : OUTPUT; )
VARIABLE
counter1 : cntr;
counter2 : cntr;
a : node;
BEGIN
counter1.(clock, load, ena, clr, d[3..0])=(takt, zagr, cont, sbr, dv[3..0]);
counter2.(clock, load, ena, clr, d[3..0])=(a, zagr, cont, sbr, dv[7..4]);
qw[7..4] = counter2.q[3..0];
qw[3..0] = counter1.q[3..0];
a = counter1.cout;
END;.
ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
1.Ознакомьтесь со структурой библиотечного модуля lpm_ff и на основе программы, приведенной в теоретической части работы, создайте проект, в котором разрядность регистра равна 8. Кроме того, проект должен обладать свойством синхронной установки регистра в единичное состояние и возможностью его асинхронного сброса.
Работоспособность полученного в проекте устройства проверьте путем моделирования с использованием редактора временных диаграмм Waveform Editor .
2.Разработайте подпроект универсального двоичного счетчика с разрядностью 8. На его основе создайте модуль с расширением .inc. Используйте полученный модуль для реализации нового проекта 16-разрядного счетчика. 3.В проекте верхнего уровня ограничьте коэффициент деления счетчика, например, числом 211. Для реализации коэффициента счета (деления) частоты, равного 211, требуется дешифрировать состояние 209 счетчика, запомнить его на один период опорной частоты со сдвигом на половину периода опорной частоты и сформированным импульсом обнулить счетчик. Все соответствующие изменения следует ввести в программу проекта верхнего уровня.
При имитации работы проекта установите полное время имитации
20 мкc, а градацию сетки - 50 нс. КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Что требуется сделать для создания прототипа и модуля цифрового устройства, используемого как составной элемент в другом, более крупном проекте?
2. Как подключить модуль к разрабатываемому проекту?
3. Чем отличается программная реализация обычного цифрового устройства от программы устройства, реализованного в виде цифрового автомата?
4. Какую функцию выполняет прототип модуля?
5. Какое преимущество обеспечивают параметризированные модули?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Программируемые логические интегральные схемы (часть I): учеб. пособие / А.С. Ашихмин; Рязан. гос. радиотехн. акад. - Рязань, 2005. -88 с. 2. Антонов А.П. Язык описания цифровых устройств AlteraHDL. Практический курс. 2-е изд., стереотип. - М.: ИП РадиоСофт, 2002. - 224 с.
3. Комолов Д.А., Мяльк Р.А., Зобенко А.А., Филиппов А.С. Системы автоматизированного проектирования фирмы Altera MAX+plus II и Quartus II. Краткое описание и самоучитель. - М.: ИП РадиоСофт, 2002. - 284 с.
Содержание
Введение .......................................................................... 1
1. Лабораторная работа № 1. Освоение среды разработки
цифровых схем Quartus II ...................................................... 1
2. Лабораторная работа № 2. Освоение моделирования работы
цифровых схем в среде Quartus II ............................................ 10
3. Лабораторная работа № 3. Примитивы триггеров и цифровые
устройства на их основе ....................................................... 17
4. Лабораторная работа № 4. Создание и использование модулей
цифровых устройств ............................................................ 20
2
Документ
Категория
Рефераты
Просмотров
1 283
Размер файла
572 Кб
Теги
quartus, содержание, лаб
1/--страниц
Пожаловаться на содержимое документа