Математические функции Verilog можно использовать вместо константных выражений, поддерживают как integer, так и real математику. Целочисленные математические функции Функция $clog2 возвращает потолок log2 аргумента. Типично используется для расчета минимальной ширины адресации памяти заданного разм
Системные задачи отображения (display) 주로 используются для вывода информационных и отладочных сообщений, отслеживания хода симуляции из логов и ускорения отладки. Существуют разные группы задач отображения и форматы печати значений. Задачи Display/Write Синтаксис $display и $write выводят аргумент
Тактовые сигналы фундаментальны для цифровых схем — они синхронизируют разные блоки. Свойства тактового сигнала Ключевые свойства: частота (определяет период), скважность (duty cycle) и фаза относительно других тактовых. Период тактового сигнала Частота показывает, сколько циклов в единице времени
Verilog дизайны и тестбенчи содержат много строк кода: блоки always, initial, непрерывные назначения и другие процедурные операторы, активирующиеся в разное время симуляции. Каждое изменение значения сигнала — update event. Процессы (always, assign), чувствительные к этим событиям, оцениваются в пр
Симуляция Verilog зависит от определения времени, так как симулятору нужно знать, что означает #1 во времени. Директива компилятора `timescale задает единицу времени и точность для последующих модулей. Синтаксис `timescale <time_unit>/<time_precision> // Примеры `timescale 1ns/1ps `time
Verilog — язык описания аппаратуры, и для преобразования RTL в логические гейты симуляция не обязательна. Зачем тогда симулировать? Симуляция — техника подачи различных входных стимулов в дизайн в разное время для проверки, ведет ли себя RTL код как задумано. По сути, это проверка надежности диза
Стандартные примитивы Verilog (nand, not) не всегда удобны или достаточны для сложной логики. Новые примитивные элементы — UDP (user-defined primitives) — позволяют моделировать комбинационную или последовательную логику. У всех UDP ровно один выход (0, 1 или X, никогда Z — не поддерживается). Любо
Verilog поддерживает транзисторное моделирование, хотя сейчас оно редко используется дизайнерами из-за сложности схем, требующей перехода к более высоким уровням абстракции. NMOS/PMOS module des (input d, ctrl, output outn, outp); nmos (outn, d, ctrl); pmos (outp, d, ctrl); endmodule module tb
Цифровые элементы — бинарные сущности, хранящие 0 или 1. Однако переходы 0→1 и 1→0 имеют переходные задержки, как и каждый гейт для распространения значения от входа к выходу. Например, двухвходовый AND гейт должен переключить выход в 1, если оба входа становятся 1, и обратно в 0, когда любой вход
В предыдущей статье рассматривались основные встроенные примитивы. Здесь — практические примеры использования простых and, nor, not гейтов. Для написания Verilog-кода с гейтами нужно знать, как соединять элементы. Это принципиально отличается от поведенческого описания, где выбор и соединение элеме
Большинство цифровых дизайнов выполняется на более высоком уровне абстракции (RTL), но иногда интуитивно проще строить небольшие детерминированные схемы на нижнем уровне с использованием комбинационных элементов and и or. Моделирование на этом уровне называется гейтовым моделированием (gate-level mo
Большинство языков программирования имеют характеристику области видимости (scope), определяющую видимость разделов кода для переменных и методов. Scope задает пространство имен (namespace) для предотвращения коллизий между именами объектов в одном пространстве. Verilog определяет новую область вид
Операторы задержки в Verilog могут иметь задержку либо в левой, либо в правой части оператора назначения. Межназначенные задержки (Inter-assignment Delays) // Задержка указана слева #<delay> <LHS> = <RHS> Межназначенная задержка ставит значение задержки слева от оператора назначе
В Verilog два типа таймингового управления: задержка (delay) и событие (event). Задержка — способ добавить задержку между моментом, когда симулятор встречает оператор, и моментом его фактического выполнения. Событийное выражение откладывает выполнение до возникновения события симуляции: изменения зн
Verilog поддерживает директивы компилятора, указывающие, как обрабатывать код. Например, часть кода может реализовывать определенную функцию, и нужен способ исключить её из дизайна, если функция не используется. Это решается условной компиляцией: код оборачивается в директивы, которые говорят компи
Параметры — конструкции Verilog, позволяющие повторно использовать модуль с разными спецификациями. Например, 4-битный сумматор можно параметризовать числом бит, а при инстанцировании передавать новые значения. Так N-битный сумматор становится 4-, 8- или 16-битным. Это похоже на аргументы функции, п
function предназначена для обработки входных данных и возврата одного значения, тогда как task — более универсален: может вычислять несколько результатов и возвращать их через аргументы output и inout. Tasks могут содержать элементы, потребляющие время симуляции: @, posedge и др. Синтаксис Task мож
Часто в RTL встречаются повторяющиеся фрагменты кода, вызываемые многократно. Они обычно не потребляют время симуляции и могут содержать сложные вычисления с разными данными. В таких случаях объявляют function, помещают повторяющийся код внутрь и возвращают результат. Это резко сокращает объем RTL:
Оператор case проверяет, соответствует ли заданное выражение одному из вариантов в списке, и выполняет соответствующую ветвь. Обычно используется для реализации мультиплексоров. Конструкция if-else может быть неудобна при множестве условий и синтезируется в приоритетный энкодер, а не в мультиплексор
Цикл for — самый популярный цикл в программировании, но в Verilog он преимущественно используется для репликации аппаратной логики. Идея — итерировать набор операторов, пока условие истинно. Это похоже на while, но чаще применяется там, где есть итератор, а условие зависит от его значения. Синтакси
Verilog
Как избежать 7 распространённых дефектов литья под давлением: экспертные советы для стабильного качества
SHAPE Machining и Supernatural-X выпускают электрогитару из регенеративного углеродного волокна
Instagram завел выигрышное партнерство: робототехническая команда объединилась с DATRON Dynamics
Низконапорная литье под давлением: преимущества, процесс и почему это важно для автодеталей