Plazer-don.ru

Сварочное оборудование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Создайте драйвер PWM для проектирования FPGA и SoC с помощью Verilog HDL

FPGA является важным инструментом для многих инженеров DSP и встроенных систем. Однако кривая обучения при запуске может быть довольно крутой. В этом проекте представлены комплекты программного обеспечения Quartus II и ModelSim, а также справочная информация о потоке FPGA для разработки System on Chip. Используемая плата разработки — это Terasic DE1-SoC, у которой есть микросхема Altera Cyclone V SoC. Эта ИС содержит FPGA и интегрированную ARM Cortex A9 в качестве жесткой процессорной системы.

Проектный поток FPGA

Image

Разработчик системы DE1-SoC

Image

Программное обеспечение System Builder не является строго необходимым, но оно невероятно полезно. Пользователь называет проект и выбирает, какие входы / выходы будут использоваться на FPGA. Это программное обеспечение будет генерировать четыре разных файла в выбранном каталоге. В этом случае проект был назван «DE1_SOC_PWM», и используются только внешние часы, светодиоды и переключатели. Были созданы следующие файлы:

  • DE1_SOC_PWM.qpf Файл проекта Quartus
  • DE1_SOC_PWM.qsf Файл настроек Quartus
  • DE1_SOC_PWM.v Файл Verilog Top
  • DE1_SOC_PWM.sdc Сконфигурирование

Файл проекта quartus содержит основную информацию о проекте (например, версию quartus, которая была использована для создания проекта). Файл настроек Quartus содержит информацию обо всех присваиваниях, выполненных в проекте. Верхний файл — это объект верхнего уровня в иерархическом дизайне, об этом позже будет сказано. Файл ограничений дизайна Synopsys содержит различные ограничения (например, время).

Начало работы с проектом

Этот проект был завершен в Quartus Prime, но любая версия с 13.1 года будет работать, причем эта процедура может немного измениться. Откройте проект, дважды щелкнув файл .qpf в выбранном вами каталоге

Image

В навигаторе проекта выберите файлы и откройте файл с именем ‘(your_Project_Name) .v’, он должен открыть что-то похожее на следующее:

Мы будем использовать это как верхний файл в нашем иерархическом дизайне. Что подразумевается под иерархическим дизайном, станет очевидным, поскольку мы добавим еще несколько модулей позже. Если мы посмотрим на планировщик булавки:

Читайте так же:
J305 трубки для счетчик гейгера

Image

Мы видим, что назначение контактов для входов и выходов в верхнем файле было сделано для нас. Это одно из преимуществ использования программного обеспечения системного строителя, поскольку этот шаг может быть довольно продолжительным и утомительным.

Добавление PLL

Первым шагом в разработке нашего драйвера PWM является реализация цикла с фазовой синхронизацией для генерации тактовой частоты 5 МГц от внешнего генератора 50 МГц. Cyclone V SoC имеет специализированные аппаратные PLL. Для использования одного из них можно использовать модуль PLL Altera IP. Каталог IP (называемый MegaWizard Plugin Manager в версии 13.1) можно найти в меню инструментов. В каталоге IP перейдите в раздел Основные функции> Часы и ФАПЧ> Altera PLL. Следующее окно должно открыть после того, как вы назовете PLL (в данном случае, с именем PLL)

Image

Для Cyclone V SoC скорость равна 6. Если используется другой FPGA / SoC, то оценка скорости может быть найдена в техническом описании. Контрольные часы на плате DE1-SoC составляют 50 МГц, а желаемый выход для драйвера PWM составляет 5 МГц.

После того, как PLL IP будет сгенерирован, мы включим его в качестве модуля в верхнем файле. Чтобы добавить модуль в верхний файл, можно использовать следующий шаблон кода:

В случае PLL имеется три входа и выхода. В навигаторе проекта под файлами откройте PLL.v (под PLL.qip), чтобы увидеть имена узлов в модуле PLL, поскольку имена могут отличаться в зависимости от версии Quartus.

Вход ФАПЧ является внешним генератором 50 МГц (подключен к порту с именем CLOCK_50), который используется в качестве опорного тактового сигнала. Поскольку сброс не используется в этой конструкции, это связано с логическим уровнем 0 (т.е. не сбрасывается). Выход этого модуля (часы 5 МГц) был привязан к проводу с именем clk. Чтобы добавить в это модуль, используется ключевое слово wire.

Читайте так же:
Американка с обратным клапаном для счетчика

Провод представляет собой тип структурной сети в Verilog и в основном используется для комбинационной логики. В этом случае он будет использоваться для подключения PLL к другому модулю в верхнем файле.

Драйвер PWM

Теперь PLL IP был сгенерирован, мы можем перейти к следующему шагу, который заключается в разработке и проверке нашего модуля драйверов PWM. Драйвер PWM будет содержать три основные части: пилообразный генератор, компаратор и кодовое слово PWM.

Image Image

В то время как выход пилообразного генератора меньше, чем кодовое слово PWM, выход штырька PWM равен 1 и нулю в противном случае. Реализация пилообразного генератора в цифровом оборудовании довольно проста, так как это простой счетчик. Для n-разрядного драйвера PWM требуется счетчик n-бит. Счетчик будет принимать 2 n тактовых циклов для сброса, и, следовательно, каждый цикл PWM длится 2 n тактов. Рабочий цикл может быть рассчитан как количество тактовых циклов, при котором выходной сигнал PWM высок, по количеству тактовых циклов, которое требуется одному циклу ШИМ.

Verilog Внедрение драйвера PWM

Как упоминалось ранее, для драйвера PWM есть три основные части: n-битовый счетчик, кодовое слово PWM и компаратор. Мы начнем с 8-битного счетчика.

Модули являются основными строительными блоками иерархического дизайна в Verilog. Во-первых, порты объявляются и затем указываются, если это входной, выходной или inout-порт. Следующий бит кода всегда является блоком. Список чувствительности (posedge clk в этом случае) является триггером, когда выполняется код внутри начального / конечного блока. Блок begin и end похож на <> на языке программирования C.

Image

Теперь счетчик закончен, мы можем написать модуль драйвера PWM. Используется следующий код:

Этот модуль довольно интуитивно понятен, поскольку он просто сравнивает 8-разрядный счетчик с 8-битным кодовым словом PWM и устанавливает выходной сигнал PWM высоким или низким в зависимости от значения счетчика. Обратите внимание, как используются неблокирующие назначения (<=), а не блокировка (=). Как правило, при написании последовательной логики должно использоваться неблокирующее присвоение, а для комбинационного использования следует использовать блокировку.

Читайте так же:
Как сделать сброс счетчика картриджей epson

Проверка драйвера PWM

В разработке ПЛИС используются два основных типа моделирования. Моделирование RTL (уровень передачи регистра) используются для проверки дизайна перед логическим синтезом, т.е. как ведет себя код Verilog. Моделирование Gate-Level используют постсинтез и постподготовку, т.е. имитирует, как сигналы будут действовать на FPGA или ASIC. Последнее требует гораздо больше времени для имитации.

Моделирование RTL

Программное обеспечение ModelSim Altera Edition будет использоваться для моделирования RTL PLL. Прежде чем это можно сделать, требуется тестовая площадка. Testbench похож на верхний файл, но используется для проверки.

Создайте новый проект в ModelSim и создайте его в том же каталоге, что и файл проекта Quartus. Добавьте существующие модули PWM-драйвера и счетчика и скомпилируйте их. Добавьте новый файл verilog в тот же каталог и вызовите его (module_under_test) _tb.v.

Время для моделирования составляет 1 пс, поэтому # 1 — это задержка в 1 пс. Чтобы создать тактовую частоту 5 МГц, цикл должен быть описан в ps, что составляет 200 пс. Из этого мы можем создать тестовые часы, которые можно увидеть в всегда блоке. Когда синтезируется цифровая схема, она будет иметь начальное значение при t = 0. Это не относится к моделированию RTL, поэтому все регистры должны записываться с начальным значением. Это делается в начальном блоке. Также обратите внимание, что в тестовом банке нет портов.

Запуск моделирования

После того как все файлы были скомпилированы в modelsim, дизайн можно моделировать. Выберите файл testbench из окна моделирования запуска.

Image

Хотя мы не использовали никаких блоков Altera IP в модуле PWM, стоит упомянуть, как имитировать с помощью Altera IP. На вкладке «Библиотеки» выберите соответствующие библиотеки для IP-адреса и включите файл .vo в файлы вашего проекта. Файл .vo — это функциональное описание (RTL) IP.

Читайте так же:
Домашних условиях счетчик гейгера

Image

После добавления соответствующих библиотек и файла testbench нажмите ok, чтобы начать симуляцию. На вкладке моделирования щелкните правой кнопкой мыши экземпляр PWM и добавьте в волну.

Image

Запустите симуляцию примерно за 20 секунд, и симуляция должна выглядеть так, как показано выше.

Программирование FPGA

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

Здесь верхний файл подключает выходной сигнал PLL к входному такту к модулю контроллера PWM, а также подключает выход контроллера PWM к LED0 на плате DE1. Кодовое слово PWM устанавливается с помощью переключателей 0 — 7.

Перед тем, как мигать устройство, также стоит посмотреть на просмотр RTL в качестве дополнительной проверки вашего дизайна. Этот параметр находится в разделе «Инструменты»> «Просмотр списка»> «Просмотр RTL»

Image

После подтверждения этого, запустите устройство с помощью инструмента программирования в Quartus (убедитесь, что установлен драйвер USB-бластера!)

Image

Вскоре после нажатия кнопки FPGA будет мигать. Яркость светодиода изменится в зависимости от переключателей 0-7 на плате DE1-SoC.

Устанавливаем Vivado

Первым делом скачивай Vivado Design Suite — HLx Editions — 2018.2 Full Product Installation для своей ОС отсюда (на выбор варианты для Linux и для Windows).

Перед установкой следует зарегистрироваться на сайте.

Для ознакомительных целей я рекомендую установить бесплатную версию Vivado — WEB Pack, она по набору функций ничем не отличается от платной версии, но имеет ограничение на размер дизайна. Это значит, что счетчик в ней можно спроектировать, а что-то посложнее, что можно было бы продать, — вряд ли.

Программа установки Vivado 2018.2

Программа установки Vivado 2018.2

В конце установки откроется Vivado License Manager, также его можно открыть и из Vivado — через вкладку Help в главном меню. Сюда нам нужно подсунуть файл лицензии. Давай создадим ее.

Читайте так же:
Через какое время проверяют счетчик с холодной водой

Скрин страницы http://www.xilinx.com/getlicense

Скрин страницы http://www.xilinx.com/getlicense

  1. Заходим на xilinx.com, попадаем на следующую страницу.
  2. Выбираем свой аккаунт.
  3. Ставим галочку напротив Vivado Design Suite HL: WebPACK 2015 and Earlier License и жмем на Generate Node-Locked License.
  4. Далее используем MAC своей сетевой карты для идентификации хоста и генерируем файл лицензии, который ты позже получишь на почту.
  5. Получив файл лицензии в Vivado License Manager, жмем на Load Licence → Copy License.

Скрин Vivado License Manager на данном этапе

Скрин Vivado License Manager на данном этапе

Теперь Vivado установлена, и нам нужно убедиться, что она корректно запускается.

Открываем терминал в Linux и пишем:

где XILINX_INSTALL_PATH — место установки Vivado. Теперь для запуска достаточно написать vivado .

Также надо установить драйверы кабеля USB для загрузки прошивки. В Windows для этого просто ставим галочку Install Cable Drivers во время установки. В Linux следует вернуться в терминал и набрать следующее:

Теперь ставим драйверы для платы Zybo:

Реализация часов

Реализация часов отличается от счетчика времени нажатия незначительно. Здесь отсутствует кнопка. Отличие в подсчете времени здесь состоит в том, что здесь счетчик времени представляет собой счетчики минут и секунд. Счет происходит до 59 минут 59 секунд, после чего все сбрасывается. В предыдущем случае счет шел до 255 секунд.

Здесь ucf файл отличается только отсутствием кнопки BTNS

Для понимания того, какие уровни сигнала на выходе Pmod на один из его выходов были поданы высокий и низкий уровни, после чего к этому выходу был подключен осциллограф. Осциллограммы представлены ниже.
Pmod connectors
Pmod.jpg
Высокий уровень(на вход подана 1)
RTOScreenshot 2014-12-22 0 122926.png
Низкий уровень(на вход подан 0)
RTOScreenshot 2014-12-22 1 123056.png
—Belyanushkin (обсуждение) 00:20, 25 ноября 2014 (MSK)

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector