Verilog HDL (Hardware Description Language) — это язык текстового описания аппаратуры. Он используется для проектирования, моделирования, верификации цифровых микросхем (смотри Википедию), плат и систем.
Язык Verilog был разработан в 1984-1985 году Филом Морби (Phil Moorby) во время его работы в компании Gateway Design Automation. Тогда же появился первый Верилог симулятор: Verilog-XL. Позже компанию Gateway купила Cadence Design Systems и в 1990-м сделала Verilog HDL публичным достоянием. В 1995-м году я зык стал стандартом IEEE-1364-1995, IEEE Standard Hardware Description Language Based on the Verilog(R) Hardware Description Language.
Скачать:
Позднее появилась «расширенная» версия языка — это SystemVerilog, разрабатываемый Accellera (www.accellera.org). В SystemVerilog упор сделан на верификацию проектов, язык содержит элементы объектно-ориентированного программирования.
Язык Verilog HDL — это не VHDL. VHDL — это совсем другой язык, хотя и служит тем же целям — описание, моделирование, синтез аппаратуры.
На нашем сайте мы уделяем довольно много внимания языку Verilog HDL — он довольно прост в освоении, позволяет довольно быстро понять основные принципы разработки цифровых микросхем.
Используйте текстовое описание аппаратуры! Не используйте графическое и схемное описание! Есть много причин, почему текстовое описание имеет преимущество.
Чтобы Вы могли быстрее освоить язык Verilog мы подготовили несколько уроков:
Еще, все наше краткое описание можно выкачать сразу в виде одного PDF файла:
Отдельная тема, тем не менее связанная с Verilog — это симуляция проектов. Мы рекомендуем для функциональной симуляции проектов простое и эффективное средство Icarus Verilog + GtkWave — это компилятор, симулятор и средство просмотра временных диаграмм.
Мы рассказываем, как использовать эти инструменты.
Статья Verilog System Tasks поможет понять, как лучше использовать Verilog симулятор, как выводить отладочные диагностические сообщения и как читать и писать в файл. Интерфейс Verilog VPI позволяет связать симулятор Verilog и программы, написанные на других языках, например, C/C++.
Особенности программирования на языке Verilog и возможные типичные ошибки описаны в статье Verilog Gothcas.
Чтобы читателям было проще понять, как язык программирования Verilog может описывать цифровые схемы мы готовим ряд статей, которые показывают соответствие языковой конструкции и соответствующего графического представления схемы.
Мы называем этот раздел сайта «Verilog в картинках»:
marsohod.org
Verilog HDL (Hardware Description Language) — это язык текстового описания аппаратуры. Он используется для проектирования, моделирования, верификации цифровых микросхем (смотри Википедию), плат и систем.
Язык Verilog был разработан в 1984-1985 году Филом Морби (Phil Moorby) во время его работы в компании Gateway Design Automation. Тогда же появился первый Верилог симулятор: Verilog-XL. Позже компанию Gateway купила Cadence Design Systems и в 1990-м сделала Verilog HDL публичным достоянием. В 1995-м году я зык стал стандартом IEEE-1364-1995, IEEE Standard Hardware Description Language Based on the Verilog(R) Hardware Description Language.
Скачать:
Позднее появилась «расширенная» версия языка — это SystemVerilog, разрабатываемый Accellera (www.accellera.org). В SystemVerilog упор сделан на верификацию проектов, язык содержит элементы объектно-ориентированного программирования.
Язык Verilog HDL — это не VHDL. VHDL — это совсем другой язык, хотя и служит тем же целям — описание, моделирование, синтез аппаратуры.
На нашем сайте мы уделяем довольно много внимания языку Verilog HDL — он довольно прост в освоении, позволяет довольно быстро понять основные принципы разработки цифровых микросхем.
Используйте текстовое описание аппаратуры! Не используйте графическое и схемное описание! Есть много причин, почему текстовое описание имеет преимущество.
Чтобы Вы могли быстрее освоить язык Verilog мы подготовили несколько уроков:
Еще, все наше краткое описание можно выкачать сразу в виде одного PDF файла:
Отдельная тема, тем не менее связанная с Verilog — это симуляция проектов. Мы рекомендуем для функциональной симуляции проектов простое и эффективное средство Icarus Verilog + GtkWave — это компилятор, симулятор и средство просмотра временных диаграмм.
Мы рассказываем, как использовать эти инструменты.
Статья Verilog System Tasks поможет понять, как лучше использовать Verilog симулятор, как выводить отладочные диагностические сообщения и как читать и писать в файл. Интерфейс Verilog VPI позволяет связать симулятор Verilog и программы, написанные на других языках, например, C/C++.
Особенности программирования на языке Verilog и возможные типичные ошибки описаны в статье Verilog Gothcas.
Чтобы читателям было проще понять, как язык программирования Verilog может описывать цифровые схемы мы готовим ряд статей, которые показывают соответствие языковой конструкции и соответствующего графического представления схемы.
Мы называем этот раздел сайта «Verilog в картинках»:
marsohod.org
Глава 1. Предварительное знакомство с языком Verilog
1.1. История языка Verilog
1.2. Первый проект на языке Verilog
1.2.1. Описание проекта
1.2.2. Моделирование проекта
1.3. Базовые элементы языка Verilog
1.3.1. Ключевые слова
1.3.2. Идентификаторы
1.3.3. Белые знаки
1.3.4. Комментарии
1.4. Сигналы, сети, драйверы
1.4.1. Логические значения
1.4.2. Логическая мощность (сила) сигналов
1.5. Числа
1.5.1. Представление целых чисел
1.5.2. Представление действительных чисел
1.6. Параллелизм языка Verilog
Глава 2. Модули
2.1. Определение модулей
2.2. Элементы модулей
2.3. Объявления портов
2.4. Экземпляры модулей
2.5. Параметры
2.6. Неявная передача значений параметров
2.7. Массивы экземпляров модулей
2.8. Иерархия модулей и иерархия имен
2.9. Области иерархии и области действия имен
Глава 3. Примитивы и библиотечные модули
3.1. Где можно найти готовое решение
3.2. Примитивы языка Verilog
3.3. Примитивы, определяемые пользователем.
Глава 4. Типы данных
4.1. Два класса типов данных
4.2. Сетевые типы данных
4.3. Значение сигнала сети
4.4. Типы данных переменные
4.5. Другие типы данных
4.5.1. Параметры
4.5.2. Локальные параметры
4.5.3. Параметры блока спецификации
4.5.4. Переменные генерации
4.5.5. Тип данных событие
4.5.6. Строки
4.6. Выбор битов и битовых полей
4.7. Выбор элементов массива и битовых полей элементов массива
4.8. Объявление памяти
Глава 5. Операции
5.1. Операции языка Verilog
5.2. Побитовые операции
5.3. Операции редукции
5.4. Логические операции
5.5. Операции отношения
5.6. Операции идентичности
5.7. Арифметические операции
5.8. Разносторонние операции
5.9. Выполнение операций
5.10. Приоритет операций
5.11. Размеры битовых выражений
Глава 6. Оператор непрерывного назначения assign
6.1. Присваивание значений в языке Verilog
6.2. Форматы оператора непрерывного назначения
6.3. Использование оператора непрерывного назначения
Глава 7. Процедурные операторы и блоки
7.1. Процедурные операторы initial и always, процедурные блок
7.2. Операторные скобки begin-and и fork-join
7.3. Именованные процедурные блоки
Глава 8. Управление процедурным временем
8.1. Оператор задержки #
8.2. Оператор чувствительности @
8.3. Оператор ожидания wait
8.4. Список чувствительности
8.5. Список чувствительности в комбинационных схемах
8.6. Список чувствительности в последовательностных схемах
Глава 9. Операторы процедурного назначения
9.1. Общие положения
9.2. Оператор блокирующего назначения «=»
9.2.1. Формат
9.2.2. Управление временем
9.2.3. Внутренние задержки
9.2.4. Особенности синтеза
9.3. Оператор неблокирующего назначения
9.3.1. Формат
9.3.2. Управление временем
9.3.3. Внутренние задержки
9.3.4. Особенности синтеза
9.4. Управление временем в процедурных операторах назначения во время моделирования
9.5. Процедурные операторы assign и deassign
9.6. Процедурные операторы force и release
Глава 10. Операторы процедурного программирования
Глава 11. Атрибуты
11.1. Атрибуты языка Verilog
11.2. Атрибут fulLcase
11.3. Атрибут paralleLcase
Глава 12. Блок генерации
12.1. Блоки генерации языка Verilog
12.2. Формат блока генерации
12.3. Операторы генерации
12.3.1. Группа элементов генерации
12.3.2. Оператор if-else
12.3.3. Оператор case
12.3.4. Оператор fог
Глава 13. Задачи и функции
13.1. Задачи и функции языка Verilog
13.2. Автоматические и статические задачи и функции
13.3. Задачи
13.4. Функции
13.5. Константные функции
Глава 14. Системные задачи и функции
14.1. Системные задачи и функции языка Verilog
14.2. Системные задачи для отображения текста
14.3. Системные задачи и функции для работы с файлами
14.3.1. Открытие и закрытие файлов
14.3.2. Вывод информации в файл
14.3.3. Другие функции работы с файлами
14.4. Другие системные задачи и функции
14.4.1. Управление процессом симуляции
14.4.2. Управление временем симуляции
14.4.3. Преобразование знаковых и беззнаковых величин
14.4.4. Запись и чтение в переменные и из строки символов
14.4.5. Загрузка содержимого памяти
14.4.6. Преобразование переменных типа геа1 в 64-битовый вектор
14.4.7. Функции для работы с командной строкой
Глава 15. Директивы компилятора
15.1. Директивы компилятора языка Verilog
15.2. Возврат к умалчиваемым значениям директив компилятора
15.3. Определение значения единицы времени
Глава 16. Блоки спецификаций
16.1. Блоки спецификаций языка Verilog
16.2. Формат блоков спецификаций
16.3. Обнаружение путей импульсов (сбоев)
16.4. Проверки временных ограничений
Глава 17. Конфигурация проекта
17.1. Конфигурации
17.2. Конфигурационные блоки
17.3. Файлы карты библиотеки
17.4. Примеры конфигурации проекта
17.4.1. Исходное описание проекта
17.4.2. Использование конфигурации, заданной в файле карты библиотек
17.4.3. Использование оператора default
17.4.4. Использование оператора cell
17.4.5. Использование оператора instance
17.4.6. Использование иерархической конфигурации
Глава 18. Синтезируемые конструкции языка Verilog
www.htbook.ru
Verilog, Verilog HDL (англ. Verilog Hardware Description Language) — это язык описания аппаратуры, используемый для описания и моделирования электронных систем. Verilog HDL, не следует путать с VHDL (конкурирующий язык), наиболее часто используется в проектировании, верификации и реализации (например, в виде СБИС) аналоговых, цифровых и смешанных электронных систем на различных уровнях абстракции.
Разработчики Verilog сделали его синтаксис очень похожим на синтаксис языка C, что упрощает его освоение. Verilog имеет препроцессор, очень похожий на препроцессор языка C, и основные управляющие конструкции «if», «while» также подобны одноимённым конструкциям языка C. Соглашения по форматированию вывода также очень похожи (см. printf).
Следует отметить, что описание аппаратуры, написанное на языке Verilog (как и на других HDL-языках) принято называть программами, но в отличие от общепринятого понятия программы как последовательности инструкций, здесь программа задает структуру системы. Так же для языка Verilog не применим термин «выполнение программы».
Существует подмножество инструкций языка Verilog, называемое синтезируемым. Модули, которые написаны на этом подмножестве, называют RTL (англ. register transfer level — Уровень регистровых передач). Они могут быть физически реализованы с использованием САПР синтеза. Данные САПР по определенным алгоритмам преобразуют абстрактный исходный код на Verilog в netlist — логически эквивалентное описание, состоящее из элементарных логических примитивов (например, AND, OR, NOT, триггеры), которые доступны в выбранной технологии производства СБИС или программирования БМК и ПЛИС. Дальнейшая обработка netlist в конечном итоге порождает фотошаблоны для литографии или прошивку для FPGA.
Verilog был создан Phil Moorby и Prabhu Goel зимой 1983—1984 годов в фирме Automated Integrated Design Systems (с 1985 года Gateway Design Automation) как язык моделирования аппаратуры. В 1990 году Gateway Design Automation была куплена Cadence Design Systems. Компания Cadence имеет права на логические симуляторы Gateway’s Verilog и Verilog-XL simulator.
Во время увеличивающейся популярности языка VHDL, Cadence приняла решение добиться стандартизации языка. Cadence передала Verilog в общественное достояние. Verilog был послан в IEEE и принят как стандарт IEEE 1364—1995 (часто называемый Verilog-95).
Дополнения к языку Verilog-95 были приняты как IEEE 1364—2001 (или Verilog-2001).
Verilog-2001 является значительно обновленным по сравнению с Verilog-95. Во-первых, он добавил поддержку знаковых переменных (в формате дополнительного кода). Прежде авторам кода приходилось реализовывать знаковые операции с использованием большого количества битовых логических операций. Та же функциональность на Verilog-2001 описывается встроенными операторами языка:
Verilog-2001 является самым часто используемым диалектом языка и поддерживается в большинстве коммерческих САПР для электроники (см. EDA).
Verilog 2005 (стандарт IEEE 1364—2005) добавил небольшие исправления, уточнения спецификаций и несколько новых синтаксических конструкций, например, ключевое слово uwire.
Отдельная от стандарта часть, Verilog-AMS, позволяет моделировать аналоговые и аналого-цифровые устройства.
Основная статья: SystemVerilog
SystemVerilog является надмножеством Verilog-2005, с многими новыми возможностями для верификации и моделирования разработок.
Программа Hello, world! (не является синтезируемой)
module main; initial begin $display("Hello world!"); $finish; end endmodule
Два простых последовательно соединённых триггера:
module toplevel(clock,reset); input clock; input reset; reg flop1; reg flop2; always @ (posedge reset or posedge clock) if (reset) begin flop1 <= 0; flop2 <= 1; end else begin flop1 <= flop2; flop2 <= flop1; end endmodule
IEEE Std 1364—2001 — стандарт на Verilog 2001
Тип | Символа | Выполняемая операция |
---|---|---|
Побитовые | ~ | Инверсия |
& | Побитовое AND | |
| | Побитовое OR | |
^ | Побитовое XOR | |
~^ или ^~ | Побитовое XNOR | |
Логические | ! | NOT |
&& | AND | |
|| | OR | |
Редукция | & | Редуцированное AND |
~& | Редуцированное NAND | |
| | Редуцированное OR | |
~| | Редуцированное NOR | |
^ | Редуцированное XOR | |
~^ или ^~ | Редуцированное XNOR | |
Арифметические | + | Сложение |
— | Вычитание | |
— | 2’s complement | |
* | Умножение | |
/ | Деление | |
** | Экспонента (*Verilog-2001) | |
Отношение | > | Больше |
< | Меньше | |
>= | Больше либо равно | |
<= | Меньше либо равно | |
== | Логическое равенство | |
!= | Логическое неравно | |
=== | 4-state логическое равенство | |
!== | 4-state логическое неравно | |
Сдвиг | >> | Логический сдвиг вправо |
<< | Логический сдвиг влево | |
>>> | Арифметический сдвиг вправо (*Verilog-2001) | |
<<< | Арифметический сдвиг влево (*Verilog-2001) | |
Сцепление | { , } | Сцепление |
Копирование | {n{m}} | Копирует m значение n раз |
Условие | ? : | Условие |
На языке Verilog созданы описания открытых микропроцессоров OpenSPARC T1, T2, S1 Core и OpenRISC. Их исходный код доступен под лицензиями LGPL и GPL.
biograf.academic.ru
Языки VHDL и Verilog (Verilog HDL) относятся, в отличие от языка Argus, к языкам описания аппаратуры. Поэтому их нельзя напрямую сравнивать с Argus — они предназначены не для написания программ для FPGA и др. СБИС, а для проектирования логики самих этих устройств. Эти языки предназначены для моделирования электронных схем на уровнях вентильном, регистровых передач, корпусов микросхем. Поэтому эти языки можно назвать языками сквозного функционально-логического проектирования.
VHDL (Very high speed integrated circuits Hardware Description Language) был разработан в 1983 г. по заказу Пентагона с целью формального описания логических схем для всех этапов разработки электронных систем. Первый стандарт был утверждён в 1987 г., последний из известных — в 2002 г.
Verilog HDL был разработан фирмой Gateway Design Automaton как внутренний язык симуляции. Cadence приобрела Gateway в 1989 г. и открыла Verilog для общественного использования. В 1995 г. был определен стандарт языка — Verilog LRM (Language Reference Manual), IEEE1364-1995, а последний из известных — в 2001 г.
Первоначально VHDL предназначался для моделирования (что и объясняет его большую универсальность), но позднее из него было выделено синтезируемое подмножество. Написание алгоритмической модели на синтезируемом подмножестве гарантирует автоматический синтез по этой модели алгоритмической схемы. Аналогичная поддержка существует и для Verilog.
В более простом языке Verilog поддерживаются только самые простые типы данных — целые (32-бит со знаком), действительные (с плавающей запятой), а также специфические типы «время» и «событие». В VHDL шире набор базовых типов, и, кроме этого, проектировщик может создавать свои типы данных, а в Verilog этого делать нельзя. Надо отметить, что программируются-то в этих языках как данные не элементы памяти, а сигналы. В Verilog, например, они бывают только цепными и регистровыми (последние могут запоминаться где-то).
В VHDL синтаксис позволяет описывать модель в разных стилях (структурное, потоковое, поведенческое описания), а также встраивать в описание фрагменты языков программирования высокого уровня (Си, Паскаль). Этим и достигается его большая универсальность и применяемость не только для описания архитектур вычислительных систем. Например, моделирование разных физических систем у него имеет поддержку в виде типов с физическими размерностями.
Verilog также поддерживает разные описания модели системы, но интерфейса с обычными языками программирования у него нет.
Несмотря на похожие названия, Verilog HDL и VHDL — различные языки. Verilog — достаточно простой язык, сходный с языком программирования Си — как по синтаксису, так и по «идеологии». Малое количество служебных слов и простота основных конструкций упрощают изучение и позволяют использовать Verilog в целях обучения. Но в то же время это эффективный и специализированный язык. VHDL обладает большей универсальностью и может быть использован не только для описания моделей цифровых электронных схем, но и для других моделей. Однако из-за своих расширенных возможностей VHDL проигрывает в эффективности и простоте, то есть на описание одной и той же конструкции в Verilog потребуется в 3√4 раза меньше символов (ASCII), чем в VHDL.
Оба языка поддерживаются в качестве стандартов большим количеством программных продуктов, в том числе и open source, в области САПР. Имеются и компиляторы, и симуляторы для обоих языков, в том числе, например, и с первого языка на второй. Именно эти языки используются при проектировании (с помощью современных средств САПР ведущими производителями FPGA) не только самих СБИС, но и готовых модулей (ядер), мегафункций (megafunctions), предназначенных для решения достаточно сложных задач обработки сигналов.
© Лаборатория Параллельных информационных технологий НИВЦ МГУ
parallel.ru
Материал из Википедии — свободной энциклопедии
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 августа 2015; проверки требуют 17 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 августа 2015; проверки требуют 17 правок.Verilog, Verilog HDL (англ. Verilog Hardware Description Language) — это язык описания аппаратуры, используемый для описания и моделирования электронных систем. Verilog HDL, не следует путать с VHDL (конкурирующий язык), наиболее часто используется в проектировании, верификации и реализации (например, в виде СБИС) аналоговых, цифровых и смешанных электронных систем на различных уровнях абстракции.
Разработчики Verilog сделали его синтаксис очень похожим на синтаксис языка C, что упрощает его освоение. Verilog имеет препроцессор, очень похожий на препроцессор языка C, и основные управляющие конструкции «if», «while» также подобны одноимённым конструкциям языка C. Соглашения по форматированию вывода также очень похожи (см. printf).
Следует отметить, что описание аппаратуры, написанное на языке Verilog (как и на других HDL-языках) принято называть программами, но в отличие от общепринятого понятия программы как последовательности инструкций, здесь программа задает структуру системы. Также для языка Verilog не применим термин «выполнение программы».
Существует подмножество инструкций языка Verilog, называемое синтезируемым. Модули, которые написаны на этом подмножестве, называют RTL (англ. register transfer level — Уровень регистровых передач). Они могут быть физически реализованы с использованием САПР синтеза. Данные САПР по определенным алгоритмам преобразуют абстрактный исходный код на Verilog в netlist — логически эквивалентное описание, состоящее из элементарных логических примитивов (например, AND, OR, NOT, триггеры), которые доступны в выбранной технологии производства СБИС или программирования БМК и ПЛИС. Дальнейшая обработка netlist в конечном итоге порождает фотошаблоны для литографии или прошивку для FPGA.
Verilog был создан Phil Moorby и Prabhu Goel зимой 1983—1984 годов в фирме Automated Integrated Design Systems (с 1985 года Gateway Design Automation) как язык моделирования аппаратуры. В 1990 году Gateway Design Automation была куплена Cadence Design Systems. Компания Cadence имеет права на логические симуляторы Gateway’s Verilog и Verilog-XL simulator.
Во время увел
encyclopaedia.bid
язык Verilog — Язык описания аппаратуры, разработанный Филом Морби (Phil Morby) в конце 1980 х годов. Позволяет описывать электронное устройство как на уровне компонент, плат, так и на уровне системы. После того, как компания Cadence сделала его общедоступным,… … Справочник технического переводчика
Verilog — Класс языка: Язык описания аппаратуры Появился в: 1983 1984 Автор(ы): Phil Moorby, Prabhu Goel Расширение файлов: .v Verilog, Verilog HDL (англ. Verilog Hardwar … Википедия
Язык описания аппаратуры — (англ. hardware description language) тип компьютерных языков для формального описания электрических цепей, особенно цифровой логики. Он описывает структуру и функционирование цепи. Основные представители Наиболее часто используются языки… … Википедия
Язык проектирования — Язык проектирования это средство автоматизации проектирования систем. Нередко для упрощения понимания предметной области языки проектирования называют языками программирования, но это всего лишь упрощение связанное со способом написания… … Википедия
Verilog-AMS — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии. Verilog AMS или Verilog Analog Mixed Signal Simulation (Verilog Аналогово Смешанное Моделирование… … Википедия
Компьютерный язык — Понятие компьютерный язык (калька с англ. computer language), как правило, относится к языкам, ассоциируемым с компьютерной техникой. Чаще всего, этот термин соответствует понятию языка программирования, однако это соответствие не является… … Википедия
Minimig — 120×120 мм (форм фактор Nano ITX)[1] Minimig (сокращение от Mini Amiga) открытое аппаратное обе … Википедия
Преобразование Шиндлера — Преобразование Шиндлера(Schindler Transformation) эффективный алгоритм упорядочивания элементов с большой длиной ключа, использованием обычной поразрядной сортировки. Спустя год после опубликования алгоритма BWT, Михаэлем Шиндлером было… … Википедия
SystemC — Тип библиотека (программирование) Разработчик Open SystemC Initiative Написана на С++ Операционная система Кроссплатформенный Последняя версия 2.3 Сайт … Википедия
AHDL — AHDL проприетарный язык описания аппаратуры от Altera Corporation предназначенный для программированя выпускаемых ей ПЛИС. Язык имеет Ада подобный синтаксис и схож с VHDL или Verilog. Он поддерживается компиляторами Quartus и Max+ от Altera … Википедия
SPARC — Микропроцессор UltraSPARC II компании Sun Microsystems SPARC (Scalable Processor ARChitecture масштабируемая архитектура процессора) архитектура RISC ми … Википедия
translate.academic.ru