Sdc файл quartus как создать

Обновлено: 07.07.2024

Раз уж в прошлой статье я начал рассказывать о принципах оцифровки и воспроизведения звука, то наверное можно и немного рассказать о самом проектировании на ПЛИС. Сегодня я покажу, как реализовать проект "с нуля" - безо всяких makefile и докеров - просто на запущенном Quartus Prime под Windows. Ну а поскольку последним проектом у меня была музыкальная шкатулка , то и продолжу я с той же ноты - сделаю мини-пиано для исполнения кусочка "в лесу родилась ёлочка".

Правда кнопки у меня на плате только 4, много не наиграешь.

Поскольку сегодня формат урока, то начнём с требуемых для его выполнения вещей. Урок ориентирован на Quartus, поэтому нужна плата с ПЛИС от фирмы Altera (выкуплена Intel-ом, так что новые уже идут под Intel-овским брендом). Продвигаемые самим Intel платы стоят как туалет на МКС, поэтому обратимся к китайцам. А китайцы в 2020 году внезапно решили, что на любой уважающей себя плате с ПЛИС обязательно должен быть RS-232 порт 🤦‍♂️ Вот тольку куда его пихать сегодня. И ладно бы поставили, так они его ставят вместо usb-uart интерфейсов, что совсем огорчает. Зачем они это сделали - непонятно, но если закрыть глаза на него, то вот эта плата выглядит неплохой:

У неё на борту разъём D-SUB (VGA) для подключения монитора, 7-сегментный индикатор, 8мб оперативки, 1кб eeprom (читай flash) и 2 мегабайта flash-памяти на конфигурационном хранилище (которое и как флешку тоже можно использовать), кнопочки и светодиодики. Главное - в комплекте идёт USB Blaster. Без него плату с компьютером вам не подружить (COM-порт на плате нельзя использовать для прошивки)

Более достойным вариантом я считаю вот эту плату .

Кнопочек маловато, но зато оочень много внешних разъёмов, много оперативки и flash. Кнопочек маловато, но зато оочень много внешних разъёмов, много оперативки и flash.

Самое главное преимущество - куда как более жирный ПЛИС. на 15к логических элементов вместо 6к. Это значит, что проекты вы на нём сумеете запускать куда как более сложные. В 2 раза больший объём встроенной в ПЛИС оперативки: 504 к бит вместо 273 к бит . Количество ног в 4 раза больше. Так же на плате есть D-SUB, 7-сегментник (но только 3 разряда), тоже кнопочки и тоже светодиодики, 8мб флешки (теперь флешка одна на всё), целых 32 мб оперативки, гигабитный Ethernet! и usb-uart преобразователь. В целом - на порядок лучше предыдущей, хоть в комплекте и не идёт USB Blaster, нужно покупать отдельно .

Стоимостью в 200руб, не велика беда - купить отдельно. Стоимостью в 200руб, не велика беда - купить отдельно.

Всё что я указывал - это ценовой диапазон "до 3 000 руб комплект" и с хорошей периферией на борту. Но Aliexpress в помощь, можно найти и вот такой вариант с новеньким Intel (уже Intel) Cyclone 10 на 16к логических элементов и модным HDMI . Или вот такая - пусть и не самая передовая, зато по-настоящему богатая на периферию. В целом - на любой вкус и цвет - такой он алик. Можно даже взять эконом-вариант: CPLD платку . Но нужно понимать, что тут всего 240 логических элементов и ни единого байта встроенной оперативки. Для примера - на всех остальных как минимум 6 000 логических элементов.

Сам я когда-то купил вот такую платку

Хоть и не всё на ней продумано, но в целом устраивает. Сегодня таких уже не найти.

Хватит о железках, пора качать Quartus. Если у вас Cyclone IV или новее, то качайте просто самую последнюю Lite версию. Она бесплатна. А вот с более старыми циклонами, придётся качать и более старый квартус. К примеру у меня валяется вот такая платка . Для неё идёт только Quartus 13 и старше. Даже Quartus 13.1 уже не подходит.

Так же приходится качать 13-й квартус и мне с моим USB Blaster-ом. Возможно китайцы сегодня пихают в них более новые прошивки, но мой на Windows напрочь отказывается дружить с драйверами, идущими в комплекте новых Quartus-ов. Хуже того, сочетание нового драйвера с этим USB Blaster-ом приводит к экранам смерти. Забавненько. Хотя мне от старого Quartus-а нужен только лишь драйвер из комплекта. Этот старый драйвер дружит и с виндой 10-кой (подписан, сертифицирован, все дела), и с новыми Quartus-ами и с моим USB Blaster-ом. Он идеален.

Но так как Quartus - штука проприетарная, то даже скачка превращается в квест. Обязательно надо зарегится. Без этого никак. Перейти на страницу скачки и выбрать последнюю версию в Lite исполнении. Качать всё не обязательно. Достаточно скачать сам Quartus и пак, содержащий ваш ПЛИС. Для меня это Cyclone IV device support . Если пака с вашим ПЛИС нет, то смотрите более старые версии Quartus.

Запускаем Quartus Prime. Если у вас Windows или Linux, то это должно вам даться безо всяких усилий. Разные хитрости только на macOS нужны.

Как только загрузиться главное окно Quartus, нажимаем Ctrl+N . В открывшемся списке выбираете New Quartus Prime Project .

Появится окно, на котором нужно просто нажать Next

Далее нужно указать, что создавать. В первом поле выбираете папку. И тут внимание - Quartus будет сохранять файлы прямо в эту папку, так что укажите пустую, предназначенную для этого конкретного проекта,

Имя проекта (второе поле) и объекта верхнего уровня (третье) пусть будет top

На следующей вкладке оставляете Empty project , и сразу Next , на очередной вам предложат добавить файлы, которых у вас нет, так что снова Next . Так мы и пришли к окну выбора вашего FPGA. На мой взгляд, самый простой способ - это ввести название своего камня в поле
Name filter.

Вводить достаточно до тех пор, покуда не увидите нужное в списке Available devices. Как увидите - выбирайте и жмите сразу Finish , так как ничего интересного больше не будет. Проект готов, нужно добавлять файлы.

Ещё раз нажмите на Ctrl+N . Но теперь выбирайте
Verilog HDL File
И жмите OK .

Открывается новый пустой файл в редакторе, в котором нужно что-то писать.

Вот теперь и начинается тот самый этап, из-за которого я откладывал изучение FPGA несколько лет. Проектирование. И главное, что должен для себя уяснить каждый программист - тут проектируется не программа, а микросхема! При декомпозиции нужно думать, что вы выделяете именно микросхему, а не блок кода. Для программера со стажем это не всегда просто.

Задача данного проекта - выводить на ногу ПЛИС меандр с определённой частотой. Откуда взять - использовать сигнал с присутствующего на платке кварцевого генератора. А генератор присутствует на любой платке ПЛИС. Даже на упомянутой выше CPLD с 240 логическими элементами. Но генератор этот генерирует сигнал высокочастотный: как правило 48 или 50 мгц. Это несколько выше слухового диапазона. Соответственно частоту меандра надо делить.

Делается это при помощи счётчика, который каждый такт входного сигнала увеличивает своё значение на 1. Как только он достигает своего максимального значения, счётчик сбрасывается а выходная ножка меняет своё состояние на противоположенное. Значит, выбирая различные максимальные значения для счётчика, можно получить различные коэффициенты деления. А следовательно - разную частоту на выходе. Это именно то что надо. Такой счётчик-делитель уже хорошо годиться на выделение в отдельный модуль.

Запомнили и думаем дальше - нам нужно поддержать 4 разные кнопки, и при нажатии на каждую из них должна воспроизводиться своя нота. Сделать это можно 2-мя способами:

1. Держать целых 4 делителя, каждый выводит сигнал определённой частоты. При нажатии кнопки, коммутировать один из делителей с выходом схемы.

В этой статье я расскажу, как создать новый проект в среде Altera Quartus II, как его откомпилировать и как прошить плату Марсоход.

В предыдущей статье "Введение в Verilog, урок первый" я писал о простых "программах" на языке Verilog. Мы изучили простое понятие провод ( wire ) и регистр ( reg ). Я хочу сделать совсем простой проект - соединить проводами кнопочки и светодиоды на плате Марсоход. Чтоб было не совсем скучно, добавим совсем простую логику в наш проект - две логические функции И и ИЛИ .

Соединить проводами - это не значит, что мы будем что-то паять. Мы напишем "программу" на языке Verilog, откомпилируем ее средствами среды разработки Quartus II и зашьем в плату Марсоход.

Вот какая у меня будет программа на Verilog:

module test_wires(
input wire key0,
input wire key1,
input wire key2,
input wire key3,
output wire led0,
output wire led1
);

assign led0 = key0 & key1;
assign led1 = key2 | key3;

endmodule

Светодиод led0 будет гореть если от кнопочек key0 И key1 будет приходить сигнал единица .

Светодиод led1 будет гореть если от кнопочек key2 ИЛИ key3 будет приходить сигнал единица .

Посмотрим, что у нас получится (внимание траффик - более 30 картинок - очень подробная инструкция).

Шаг 1.

Шаг 1 - делаем простой проект для ПЛИС Altera в Quartus II

Запускаем среду разработки Altera Quartus II Web Edition и выбираем пункт меню File/New Project Wizard . (Нажмите на картинку, чтобы посмотреть крупнее).

Шаг 2.

Шаг 2 - делаем простой проект для ПЛИС Altera в Quartus II

Вы видите начальный диалог мастера создания проекта. Этот диалог в несколько простых шагов поможет нам сделать наш первый проект. Сейчас нажмем кнопку Next - и пойдем дальше.

Шаг 3.

Шаг 3 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас нам нужно выбрать папку для нашего нового проекта и его название. Выберите себе любую пустую папку. Я назвал наш проект lesson1 , вы можете использовать любое другое название.

Шаг 4.

Шаг 4 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас можно добавить в новый проект какие-то существующие файлы, модули, может быть из других проектов. Поскольку это наш первый проект, то пропускаем этот шаг. Нажимаем Next .

Шаг 5.

Шаг 5 - делаем простой проект для ПЛИС Altera в Quartus II

Вот здесь пожалуйста внимательнее. Нужно выбрать тип микросхемы CPLD или FPGA , для которой будет делаться проект. Конечно этот шаг тоже можно пропустить и сделать это назначение позже. Я предлагаю делать выбор сейчас. На плате Марсоход стоит микросхема ПЛИС (CPLD) EPM240T100C5. Вот ее и выбираем. После того, как выбрали - нажимаем Next .

Шаг 6.

Шаг 6 - делаем простой проект для ПЛИС Altera в Quartus II

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

Шаг 7.

Шаг 7 - делаем простой проект для ПЛИС Altera в Quartus II

Заходим в меню File/New и видим вот такой диалог. Здесь нам нужно решить какой именно файл мы собираемся создать, какого типа. Вы можете выбрать Block diagram/Schematic file - тогда логику проекта будем рисовать в виде схемы. Запустится специальный графический редактор и можно будет вставить в проект разные логические элементы, триггера, регистры, счетчики, сумматоры, мультиплексоры и много еще чего. Потом все эти элементы соединяются проводками - они буквально "рисуются" в этом графическом редакторе. Очень удобно. Я расскажу об этом как нибудь в другой раз. Сейчас в этом диалоге мы можем выбрать создание файла на языках описания аппаратуры: AHDL, VHDL, Verilog и других. Я выбираю Verilog - пункт списка Verilog HDL File .

Шаг 8.

Шаг 8 - делаем простой проект для ПЛИС Altera в Quartus II

Вот наш новый файл создан! Здесь мы будем набирать текст нашей программы.

Шаг 9.

Шаг 9 - делаем простой проект для ПЛИС Altera в Quartus II

Вот я набрал текст программы и теперь нужно его сохранить в каком нибудь файле. По умолчанию сейчас имя файла Verilog1.v - его можно поменять на любое другое имя файла.

Шаг 10.

Шаг 10 - делаем простой проект для ПЛИС Altera в Quartus II

Выбираем пункт меню File/Save As .

Шаг 11.

Шаг 11 - делаем простой проект для ПЛИС Altera в Quartus II

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

Шаг 12.

Шаг 12 - делаем простой проект для ПЛИС Altera в Quartus II

Файл записан. Вы можете видеть наше имя файла на закладке.

Шаг 13.

Шаг 13 - делаем простой проект для ПЛИС Altera в Quartus II

Вот здесь пожалуйста внимательней. Сейчас мы скажем среде программирования Quartus II, что этот наш текущий файл test_wires.v является самым главным файлом проекта. Попробую объяснить. Проект всегда включает в себя самый главный модуль, который может включать в себя многие другие модули в других файлах. Сейчас мы явно скажем, кто у нас тут самый главный . Заходим в меню Project/Set As Top Level Entity . Все - готово.

Шаг 14.

Шаг 14 - делаем простой проект для ПЛИС Altera в Quartus II

Пожалуй можно пробовать компилировать наш проект. Видите кнопочку треугольничек на панели инструментов?.Ну или можно зайти в меню Processing/Start Compilation .

Пожалуй перед компиляцией сделаем еще одну очень важную настройку нашего проекта.

Шаг 15.

Шаг 15 - делаем простой проект для ПЛИС Altera в Quartus II

Выберем пункт меню Assignments/Device . Здесь можно задать многие параметры компиляции проекта, связанные конкретно с чипом.

Шаг 16.

Шаг 16 - делаем простой проект для ПЛИС Altera в Quartus II

Появился вот такой диалог - на нем куча всяких настроек. Например можно выбрать тип микросхемы, для которой будет делаться компиляция проекта. Мы уже выбрали микросхему раньше. Сейчас можете проверить - должно быть EPM240T100C5. Нас же сейчас интересует кнопка Device and Pin Options . Нажмем ее.

Шаг 17.

Шаг 17 - делаем простой проект для ПЛИС Altera в Quartus II

Появился еще более страшный диалог. Не пугайтесь. Выбираем закладку Unused Pins .

Шаг 18.

Шаг 18 - делаем простой проект для ПЛИС Altera в Quartus II

Сейчас нам нужно сделать очень важную настройку . Мы должны сказать компилятору, что делать с неиспользуемыми ножками микросхемы. Поясню. В написанной нами программе всего 4 входа подключенных к кнопочкам, и два выхода, подключенных к светодиодам. Итого наш проект будет использовать 6 контактов микросхемы ПЛИС. А у нее, например всего 80 контактов, которые мы можем использовать по своему разумению. Компилятор подключит 6 контактов, а что делать с остальными? По умолчанию все неиспользуемые контакты микросхемы подключаются к нулю по питанию. Конечно все зависит от печатной платы, куда впаяна микросхема. Если на плате, например ошибочно, неиспользуемый контакт микросхемы подключен к питанию платы, то произойдет короткое замыкание. Не очень приятно. Что нибудь может сгореть на плате. Поэтому я всегда устанавливаю эту настройку. Я ставлю As input tri-stated . Это обозначает, что неиспользуемые входы будут входами с высоким входным сопротивлением. Это обезопасит микросхему и плату.

Шаг 19.

Шаг 19 - делаем простой проект для ПЛИС Altera в Quartus II

Вот теперь компилируем!

Шаг 20.

Шаг 20 - делаем простой проект для ПЛИС Altera в Quartus II

Мы видим, что проект успешно откомпилирован! Поздравляю!

Тем не менее, это еще не все. Пожалуйста обратите внимание на Warnings - предупреждения, а особенно на Critical Warnings - критические предупреждения. Я вообще, всегда рекомендую внимательно читать предупреждения компилятора. Конечно, хорошо бы знать английский язык, но я думаю вы довольно быстро освоитесь. Посмотрим, что же нам выдал компилятор?

Шаг 21.

Шаг 21 - делаем простой проект для ПЛИС Altera в Quartus II

Читаем: " Critical Warning: No exact pin location assignments for 6 pins of a total 6 pins ".

Это обозначает, что в проекте всего было 6 контактов и всем шести контактам не были сделаны назначения по расположению на чипе. На самом деле компилятор выполнил свою работу, но расположил контакты как попало, как ему было удобно. Так дело не пойдет. У нас уже есть плата Марсоход и кнопочки присоединены к конкретным ножкам микросхемы. Светодиоды так же подключены на плате. Точное расположение контактов нужно смотреть на схеме нашей платы

. Нам нужно сказать компилятору куда подключать какую ногу микросхемы.

Шаг 22.

Шаг 22 - делаем простой проект для ПЛИС Altera в Quartus II

Выберем пункт меню Assignments/Assignment Editor .

Шаг 23.

Шаг 23 - делаем простой проект для ПЛИС Altera в Quartus II

В открывшемся окне делаем нужные нам назначения согласно схеме нашей платы. В колонке To вписываем имя входа или выхода. В колонке Assignment Name выбираем из списка нужную нам настройку Location . В колонке Value вписываем номер контакта микросхемы - его смотрим в PIN OUT файле или на схеме платы.

Шаг 24.

Шаг 24 - делаем простой проект для ПЛИС Altera в Quartus II

Вот теперь можете компилировать проект и все будет нормально!

Шаг 25.

Шаг 25 - делаем простой проект для ПЛИС Altera в Quartus II

После успешной компиляции проекта его можно зашить в чип платы Марсоход. Для этого запускаем программу программатора. Выберите пункт меню Tools/Programmer .

Шаг 26.

Шаг 26 - делаем простой проект для ПЛИС Altera в Quartus II

Вот так выглядит окно программатора на экране. Видите в левом верхнем углу " No Hardware " - похоже программатор еще не установлен. Подключите программатор к вашему ПК. Если у вас UsbBlaster, то нужно будет установить драйвера к нему. Они находятся в папке C:/Altera/91/Quartus/Drivers . Если у вас ByteBlaster (в том числе сделанный самостоятельно), то драйвера не нужны. Теперь нажмите кнопку Hardware Setup .

Шаг 27.

Шаг 27 - делаем простой проект для ПЛИС Altera в Quartus II

В открывшемся диалоговом окне выберите тип программатора, который у вас установлен.

Шаг 28.

Шаг 28 - делаем простой проект для ПЛИС Altera в Quartus II

Теперь нужно проставить нужные "галочки" в Program/Configure и Verify . Строка CFM имеет отношение к собственно программированию ПЛИС. Строка UFM имеет отношение к программированию флеш памяти внутри чипа ПЛИС. Их можно программировать по отдельности.

Колонка Verify обозначает проверить после прошивки.

Шаг 29.

Подключение платы Марсоход к UsbBlaster

Подключаем плату Марсоход к UsbBlaster

Нужно подключить плату Марсоход к UsbBlaster и подать питание на плату.

Шаг 30.

Шаг 29 - делаем простой проект для ПЛИС Altera в Quartus II

Нажимаем в програматоре кнопку Start - и, все готово! Плата Марсоход прошита с только что откомпилированным проектом! Урра!

После прошивки, подключаем питание и пробуем, что у нас получилось:

Обратите внимание, как все работает.

Левые две кнопки key3, key2 объединены в логическую функцию ИЛИ . Именно поэтому светодиод led1 гаснет только если нажать обе эти кнопки.

Правые две кнопки key1 , key0 объединены в логическую функцию И . Именно поэтому светодиод led0 гаснет если нажать хотя бы одну кнопку.

Вот так это все работает.

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

В жизни каждого начинающего разработчика настает момент, когда необходимо делать качественные скачки в процессе разработки. Для меня такая необходимость возникла при отладке Verilog проекта в Quartus. Моими основными инструментами на тот момент были: тупое долбление в код, SignalTap и In-System Source and Probe.
Времени на компиляцию тратилось все больше и больше, количество памяти в кристалле все меньше, а ясности не прибавлялось.
Тогда было принято решение перенести отладку в виртуальное пространство при помощи инструмента ModelSim.
Поразительно, но перерыв кучи документации я так и не нашел нигде единого руководства по интеграции Quartus и ModelSim.

Данная статья посвящена новичкам, освещает основные моменты интеграции программ Quartus и ModelSim.
План
1. Подготовка проекта
2. Компиляция библиотек
3. Конфигурирование NativeLink
4. Генерация TestBench и привязка к проекту
5. Запуск симуляции

Подготовка проекта.

Для тех, кто работает на Verilog и VHDL это пункт не нужен. Тем же, кто орудует в схематике и желает отладить проект в ModelSim необходимо знать, что ModelSim квадратики не поддерживает)

Выход есть – преобразовать свой проект в Verilog или VHDL командой:

File — Create/Update — Create HDL Design File from Current File


Выберите желаемый формат выходного файла. Добавьте его в проект. BDF файл необходимо при этом исключить из проекта.

Внимание! Необходимо очень внимательно проверить преобразование, Quartus может и лажануть)

Компиляция библиотек для ModelSim

Внимание! Если используете ModelSim Altera Edition это пункт надо пропустить, там библиотеки уже встроены и скомпилированы.


Tools — Launch EDA Simulation Library Compiler.

Выбираем инструмент моделирования ModelSim и путь к нему, свой чип и язык программирования.
Здесь и дальше я буду использовать C:\MSim_lib для размещения библиотек.
Нажимаем Start Compilation.

Конфигурирование NativeLink

NativeLink – инструмент для налаживания связи между Quartus и Modelsim


Все эти телодвижения выполняется однократно для каждого проекта.
Жмем Assignments — Settings — Simulation
Ставим настройки в точности как на картинке.


Жмем More EDA Netlist Writer Settings…
Указываем путь к скомпилированным библиотекам.


Жмем More NativeLink Settings…
Опять указываем путь к скомпилированным библиотекам)

Настройка закончена, но сюда мы еще вернемся.


upd. В настройка необходимо указать путь к ModelSim.
Идем в Tools — Options — EDA Tool Options
Прописываем путь в ModelSim

Генерация TestBench и привязка к проекту

Собственно это ключевой момент статьи.
Во всех туториалах и документах, которые мне попадались это операция почти не описана. Может это само собой всем известно, но я потратил изрядно времени для осознания как надо делать ПРАВИЛЬНО.


Жмем Processing – Start – Start Test Bench Template Writter


В Message можно увидеть где же располагается ваш testbench.

Учтите, это всего лишь шаблон, а не готовый testbench. Quartus не ясновидец, придется все необходимые воздействия писать руками)


Теперь надо testbench привязать к проекту. Для этого идем опять в
Assignments — Settings — Simulation


Делам все как на картинке

Testbench: произвольное имя нашего testbench
Top Level in Test Bench: имя топ левел модуля testbench. Чтобы его узнать нужно посмотреть сгенерированный testbench. В моем случае Quartus дал имя counter_vlg_tst.
Test Bench Files: добавляем файл с testbench. В моем случае counter.vt

Жмем ОК.
Настройка закончена!

Запуск симуляции


Тут все просто: Tools – Run EDA Simulation Tools – EDA RTL Simulation

Дальше начинается не простой этап моделирования и вылавливания глюков вModelsim.

Допустим, у нас есть проект для ПЛИС Altera в среде разработки Quartus II. Давайте проведём программную симуляцию: подадим на входы ПЛИС определённый сигнал и посмотрим, что будет на её выходах. Для этого воспользуемся встроенным инструментом Simulation Waveform Editor.

1 Создаём файл симуляцииUniversity Program VWF

Первым делом запустим IDE Quartus II и откроем нужный проект. Теперь создадим новый файл. Нажмём комбинацию клавиш Ctrl+N или через меню File New… В открывшемся окне выберем тип файла – University Program VWF.

Создаём файл University Program VWF

Создаём файл University Program VWF

2 Добавление узлов и шин в Simulation Waveform Editor

Запустится инструмент Simulation Waveform Editor. Сразу сохраним этот файл, пока ещё пустой, под произвольным именем в папке проекта: Ctrl+S (или File Save). Я назову файл "data_test.vwf", т.к. буду подавать данные на вывод ПЛИС под названием DATA.

Теперь нужно добавить в проект наши шины. Идём в меню Edit Insert Insert Node or Bus… Откроется окно Insert Node or Bus, где мы нажмём кнопку Node Finder… для поиска доступных шин ПЛИС в проекте.

Insert Node or Bus – Добавление узлов и шин в симуляцию Simulation Waveform Editor

Insert Node or Bus – Добавление узлов и шин в симуляцию Simulation Waveform Editor

В окне поиска узлов Node Finder нажимаем кнопку List (список). В левой части окна появится список найденных узлов и шин проекта. Для выбора добавьте их в правое поле, нажимая соответствующие кнопки. Или добавьте сразу все, нажав кнопку . Подтвердите выбор нажатием на кнопку OK. В окне Insert Node or Bus также нажмите ОК.

Node Finder – Поиск узлов и шин в проекте Quartus

Node Finder – Поиск узлов и шин в проекте Quartus

В окне формы импульсов появились диаграммы уровней сигналов выбранных выводов. Причём уровень входных сигналов CLK и DATA пока равен логическому нулю, а уровень выходных не определён. Чтобы запустить симуляцию, нужно задать форму входного и тактового сигналов.

Шины добавлены в симуляцию, но пока не описана форма сигналов на них

Шины добавлены в симуляцию, но пока не описана форма сигналов на них

3 Настройка временных параметров в Simulation Waveform Editor

Но сначала нужно задать параметры времени, которые будут использоваться Simulation Waveform Editor при симулировании. В меню Edit Grid Size… зададим шаг временной сетки. А в меню Edit Set End Time… укажем желаемую длительность симулирования.

Настройка временных параметров в Simulation Waveform Editor

Настройка временных параметров в Simulation Waveform Editor

4 Настройка параметров тактового импульса

Зададим параметры тактового импульса. Выбираем в левом поле нужный сигнал по имени Name, нажав по нему левой кнопкой мыши. Теперь идём в меню: Edit Value Overwrite Clock… В открывшемся окне Clock задаём период (Period), фазу (Offset) и скважность (Duty cycle) тактового импульса.

Задаём параметры тактового импульса CLK в редакторе симуляции Simulation Waveform Editor

Задаём параметры тактового импульса CLK в редакторе симуляции Simulation Waveform Editor

5 Настройка параметров входного сигнала в Simulation Waveform Editor

Зададим форму сигнала Data. Выделим его и в меню Edit Value выберем подходящий тип. Я выберу произвольно изменяющийся сигнал Random Values… и настрою его параметры в открывшемся окне.

Задание формы входного сигнала в Simulation Waveform Editor

Задание формы входного сигнала в Simulation Waveform Editor

После этого сохраним настройки сигналов ( Ctrl+S ).

6 Функциональное симулированиев Simulation Waveform Editor

Теперь можно запускать функциональное симулирование: Simulation Run Functional Simulation или нажав соответствующую кнопку на панели меню. Quartus проведёт симуляцию и выведет результат в новом окне Simulation Waveform Editor.


Результат функционального симулирования в Simulation Waveform Editor

Результат функционального симулирования в Simulation Waveform Editor

Для того чтобы провести временную симуляцию (Timing Simulation), необходимо прежде задать временные параметры с помощью инструмента TimeQuest Timing Analyzer.

Полезный совет

С помощью инструмента Master Time Bar удобно определять временные границы импульсов. Выделите левой кнопкой мыши в списке интересующий сигнал по имени, а затем стрелками и в верхней панели перемещайтесь от фронта к фронту.

Читайте также: