Основы Verilog: проектирование вашего первого И-шлюза
Verilog — это язык описания аппаратуры (HDL), который позволяет инженерам моделировать, симулировать и синтезировать цифровую логику для ПЛИС и ASIC. Наряду со своим близким родственником VHDL, Verilog является индустриальным стандартом как для академических программ, так и для коммерческой разработки продуктов.
Если вы новичок в мире программируемой логики или кремниевого проектирования, это руководство проведет вас через основы Verilog и покажет, как построить простой И-шлюз — базовый элемент каждой цифровой системы.
В отличие от высокоуровневых языков программирования, таких как Java или C, Verilog описывает аппаратуру на уровне вентилей. Результат — код, который может быть непосредственно отображен в кремний, давая проектировщикам тонкий контроль над таймингом, мощностью и площадью.
Ниже приведена схема классического двухвходового И-шлюза, которую мы смоделируем в Verilog.
Давайте погрузимся в реализацию на Verilog.
В Verilog строительным блоком является wire. Для этого примера мы будем рассматривать wire как бинарный сигнал, который может быть только 0 или 1.
wire and_temp; assign and_temp = input_1 & input_2;
Первая строка объявляет wire с именем and_temp. Вторая строка присваивает ему результат логического И между input_1 и input_2. В Verilog амперсанд (&) — это булев оператор И.
Все сигналы, которые модуль выставляет наружу, перечислены в его заголовке module. Ключевое слово module вводит самодостаточный блок кода с определенными входами и выходами.
module example_and_gate ( input_1, input_2, and_result ); input input_1; input input_2; output and_result;
Наконец, мы соединяем внутренний сигнал and_temp с внешним выходом and_result и закрываем модуль.
/////////////////////////////////////////////////////////////////////////////// // File Downloaded from https://www.nandland.com /////////////////////////////////////////////////////////////////////////////// module example_and_gate ( input_1, input_2, and_result ); input input_1; input input_2; output and_result; wire and_temp; assign and_temp = input_1 & input_2; assign and_result = and_temp; endmodule // example_and_gate
Поздравляем — вы написали свой первый Verilog-модуль! Хотя синтаксис HDL может казаться многословным по сравнению с обычным программным обеспечением, он предлагает беспрецедентную точность для проектирования аппаратуры. С практикой вы сможете реализовать всё — от простых логических вентилей до полноценных графических конвейеров.
Verilog
- Освоение Verilog: полное руководство по проектированию цифровых схем
- Освоение конкатенации в Verilog: практическое руководство
- Понимание назначений в Verilog: типы, синтаксис и лучшие практики
- Блокирующие и неблокирующие назначения в Verilog: ключевые различия
- Мастерство функций в Verilog для эффективного RTL дизайна
- Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
- Генератор тактового сигнала в Verilog: проектирование и реализация
- Мастерство математических функций Verilog для эффективного аппаратного дизайна
- Мастерство $timeformat в Verilog: точность и контроль отображения времени
- Понимание и печать timescale в Verilog в любой области видимости