Verilog — это язык, который используется для описания и моделирование электронных систем.
Общие сведения о языке Verilog
Verilog HDL считается модульным языком высокого уровня, полностью интегрированным в среду разработки Quartus II. Файлы проекта Verilog (с расширением *.v)
могут быть созданы при помощи текстового редактора Quartus II. А затем их можно откомпилировать и промоделировать перед занесением в ПЛИС (программируемая логическая интегральная схема) Altera. Файлы с проектом Verilog могут иметь в своем составе любые комбинации конструкций, которые поддерживаются САПР (системой автоматизированного проектирования) Quartus II.
В них могут также включаться поддерживаемые Altera логические функции, такие как:
- логические примитивы,
- логические мега функции,
- логические макрофункции,
- заданные пользователями логические функции.
Конструкции Verilog HDL предоставляют возможность создания иерархических проектов как из модулей, которые написаны только на кодах Verilog, так и из проектных файлов Verilog, объединенных в иерархическом проекте с иными типами файлов. Проекты Verilog HDL также могут быть легко включены в иные иерархические (не Verilog) проекты.
В текстовом редакторе пользователь может в автоматическом режиме формировать символьное отображение схемы, которая описана в файле на языке Verilog (Verilog Design File). Его можно вставлять в схему, представленную графически в GDF-файле(ах) (Graphic Design Files). Кроме того, в любые файлы проекта Verilog пользователи могут включать как определяемые ими функции, так и предоставляемые компанией Altera логические функции.
Компилятор Quartus II предоставляет возможность быстрой проверки синтаксиса кода Verilog или выполнения полной компиляции для отладки и обработки проекта. Процессор сообщений Quartus II может быть использован для автоматического определения местоположения ошибок с их подсвечиванием в окне редактора текста.
После успешной компиляции проекта, можно осуществить дополнительное моделирование и временной анализ. Однако с возрастанием плотности ПЛИС фирма Altera оказалась не в состоянии поддержать процесс моделирования внутри САПР Quartus II (начиная с десятой версии) и предложила пользователям воспользоваться услугами сторонних производителей. Для этого компилятор способен создавать выходные файлы Verilog и файлы в формате Standard Delay Format (SDF), то есть в формате стандартной задержки.
Программирование на языке Verilog
Специалист, занимающийся проектированием схем, способен сам определять метод разбиения и назначения устройств для проектируемого файла Verilog, чтобы выполнять логический синтез и отладку проекта, или может использовать компилятор (синтезатор схем) для автоматической реализации проекта в лучшей комбинации устройств и распределении ресурсов внутри проекта.
Программное обеспечение Quartus II способно поддерживать подмножество конструкций, которые определены стандартом IEEE 1364-2001, то есть оно способно поддерживать лишь конструкции, относящиеся к логическому синтезу. Перечень поддерживаемых конструкций приведен в документации Altera на Quartus II.
Формирование кода на Verilog предоставляет возможность пользователям сфокусировать свое внимание на функционировании оборудования с позиций высокого уровня, вместо описания схемы на низком уровне при помощи низкоуровневых компонентов логики. Проектирование цифровой схемы на Verilog как правило состоит из следующих основных процессов:
- Процесс теста на базе симуляции.
- Процесс реализации рабочего кода.
На рисунке ниже изображены данные процессы.
Рисунок 1. Проектирование цифровой схемы на Verilog. Автор24 — интернет-биржа студенческих работ
Вначале необходимо осуществить передачу исходных файлов Verilog в инструментальный набор симуляции, что изображено на рисунке слева. Инструментальный набор симуляции должен программными средствами эмулировать реальное поведение аппаратуры схемы для определенной совокупности входных воздействий, что должно быть описано в специально созданном тесте (testbench). Так как процесс компиляции программного кода Verilog для инструмента симуляции реализуется сравнительно быстро, то этот этап применяется в основном для оценки общей работоспособности дизайна.
Необходимо также отметить, что на рисунке слева отображена симуляция при помощи платного пакета ModelSim, но симуляция может быть реализована и при помощи бесплатного симулятора iSIM, который входит в пакет разработки Xilinx ISE Webpack.
На рисунке выше справа в упрощенном виде изображен процесс реализации проекта после успешного прохождения теста в симуляторе. После того как пользователь удостоверился в безошибочности высокоуровневого исходного кода Verilog, он может использовать инструментальный набор синтеза, предназначенный для преобразования этого кода в низкоуровневый перечень логических вентилей (gate netlist).
Далее утилита отображения (mapping tool) должна привязать netlist к требуемым ресурсам применяемого кристалла логики (микросхема CPLD или FPGA). На завершающем этапе выполняется загрузка конфигурационного лотка данных (bitstream) в выбранную микросхему логики (это реализуется при помощи кабеля JTAG). В итоге пользователь получает готовую схему, которая может выполнять требуемые логические функции.
Синтаксис Verilog имеет определенную схожесть с синтаксисом языка программирования Cи. Тем не менее концептуально Verilog не похож на большинство языков программирования, так как Verilog предназначен для описания аппаратуры, а не программы. Следует подчеркнуть следующие моменты:
- Операторы Verilog по своей природе изначально являются конкурентными, то есть, они исполняются в реальном времени в параллельном режиме.
- Формируемый код Verilog в конечном итоге отображается (map) на реальные аппаратные вентили логики. С другой стороны, компилируемый код Cи отображается на некие биты в памяти, которые процессор будет или не будет интерпретировать как команды и (или) данные при выполнении программы.