
ЭБВСиС ЛР Quartus
.pdf21
информации требуется во вкладке Содержание кликнуть на 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") объявляются при его использовании. Первый параметр определяет величину разрядной шины регистра (число используемых триггеров), а второй параметр – тип используемых триггеров.
22
Наряду с имеющимися в библиотеке САПР модулями, пользователь сам может создать любой необходимый модуль, выполнить его реализацию в форме библиотечного модуля и в дальнейшем использовать как составной элемент в других проектах.
Рассмотрим построение проекта с использованием предварительно разработанного модуля. Допустим, требуется создать двоичный счетчик, имеющий 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).
Файл проекта верхнего уровня, синтезирующий восьмиразрядный двоичный счетчик с предустановкой и сбросом, описывается приведенной далее программой.
23
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.Чем отличается программная реализация обычного цифрового
24
устройства от программы устройства, реализованного в виде цифрового автомата?
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