8-900-374-94-44
[email protected]
Slide Image
Меню

Уроки verilog: Введение в Verilog, Первый урок.

Learn Verilog — лучшие учебники Verilog

Top Tutorials

|

|

8 Upvotes

6 Upvotes

2 Upvotes

Introduction to FPGA Design for Embedded Systems (coursera.pxf.io)

+1 Upvotes

FPGA Prototyping by Verilog Examples: Xilinx Spartan-3 Version (amazon.com)

Добро пожаловать обратно

Вы ознакомились с этими уроками в прошлый раз. Пожалуйста, опишите те, которые вы нашли полезными.

Вы также можете быть заинтересованы в:

Frequently Asked Questions(FAQs)

What is Verilog?

Verilog is a hardware description language that allows you to describe the digital system, electronic circuits, memory, or a microprocessor. Verilog can be used for time analysis, test analysis, and logic synthesis. You can design and verify digital circuits at a register-transfer level of abstraction. These description languages differ from the software programming language as they are used to model the hardware. Verilog works well if you have the hardware specifications handy. It has a simple C like structure and requires digital logic knowledge.

What are VHDL and Verilog?

VHDL and Verilog are both languages for hardware description. These languages allow you to write programs for electronic chips or digital systems that do not share the computer’s basic architecture. VHDL is a little older and based on Ada and Pascal and inherits both characteristics. If VHDL scripts are not strongly typed, then it is difficult to get them compiled. Since VHDL is a strongly typed language, it does not allow variables from different classes. 

But on the other hand, Verilog is based on the C programming language and uses weakly typed language. Verilog is case sensitive.

Difference Between VHDL, Verilog, and SystemVerilog

VHDL and Verilog are general-purpose digital system language while the SystemVerilog specifies the Verilog’s enhanced version. Each of them has their unique usage and characteristics. VHDL has Ada and pascal syntax and concept while programming, Verilog has C programming language model and concept. 

VHDL is strongly typed while Verilog has simple syntax, so extra coding will be required for VHDL to convert one data type to others. VHDL has better error debugging methods and better portability between different tools. 

SystemVerilog is different, which allows the developers to verify more complex designs. It is considered to be the combination of both VHDL and Verilog that uses C and C++ language. 

Should I learn Verilog or VHDL?

There is some difference when it comes to coding and the understanding of the code. On the one hand, VHDL is more verbose, thus making use of more lines of code than Verilog that has C-like syntax and is much easier to code. VHDL has better code flow, while Verilog is more compact and more suitable for hardware modeling. It’s up to you what type of language suits for your coding style.

Which software is used for Verilog?

Some of the simulators that are used for the Verilog are-

  • Synopsys
  • Mentor
  • Cadence
  • Aldec
  • ASIC
  • FPGA tools
  • IBM driver Vivado suite
  • questaSim

Who Uses Verilog?

This language plays an important role in the Electronics engineer’s career. You will get job opportunities like a design engineer, verification engineer, RTL designer, etc. 

Связанность между схемой и платой в Altium

Егор Чириков 18.09.2014 Уроки Altium 0

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

Несмотря на то что программа AltiumDesigner оснащена автоматическими и полуавтоматическими инструментами размещения компонентов на плате, любой опытный конструктор знает, что ни одна программа не способна разместить компоненты на плате лучше человека. Учитывая низкую эффективность автоматического размещения, в статье будут рассмотрены только ручные и полуавтоматические средства размещения, к которым относят инструменты группы Tools > ComponentPlacement. Большую роль здесь играют т.н. «комнаты» (Rooms) – области платы, за которыми закреплены некоторые группы компонентов. При передаче информации из схемы в плату программа Altium Designer автоматически формирует комнаты на плате, если это не отключено в настройках. Комнаты формируются согласно листам схемы (см.Рис.1), и наиболее целесообразно применять комнаты в тех случаях, когда имеются повторяющиеся фрагменты схемы, так как произведя трассировку в одной «комнате» ее можно продублировать в остальных. Более подробно о «комнатах» и их свойствах будет рассмотрено в другой статье.

Рис.1. Образец сложных схем

Многолистовой проект формируется как иерархическая структура логических блоков, где каждый блок может быть либо листом схемы, либо файлом в формате HDL (VHDL или Verilog). В заголовке этой структуры находится единственный главный лист схемы, более часто рассматриваемый как верхний лист проекта.

Сама по себе структура листа формируется с использованием специальных символов, называемых символом листа схемы. Каждый из исходных документов, которые определяют проект, представляются на верхнем листе с помощью символа листа. Имя каждого символа листа ссылается на подчиненный файл схемы (или файл HDL), который он представляет Графически. С другой стороны, подчиненная схема может также содержать дальнейшие символы листов, которые ссылаются на более низкоуровневые листы схем или файлы IIDL. Таким образом, можно сформировать структурную иерархию исходных документов, которая может быть простой или сложной, в зависимости от необходимости задания.

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

В качестве электронного устройства, в рамках данной статьи, используется конструкция пульта дистанционного управления (ПДУ) для цифровой фотокамеры. Схема располагается на одном листе и поэтому при передаче данных их редактора схем в редактор плат будет сформирована одна «комната».

Рис.2. Формирование «Комнаты»

Прежде чем передавать информацию из редактора схем в редактор печатных плат, необходимо создать заготовку печатной платы. Для решения этой задачи Используем команду File>New>PCB (см.Рис.3)

Рис.3. Создание новой платы

 И прежде чем продолжить работу необходимо сразу сохранить проект, для чего необходимо нажать на него ПКМ и из контекстного меню выбрать SaveAs… Сохраняем в туже папку где проект под именем «PCB_ProjectTEST»

Рис.4. Сохранение проекта платы

Стоит отметить что если плата создается с помощью PCB Board Wizard

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

Для передачи схемной информации проекта в плату, необходимо выполнить  следующие действия:

  1. Перейдите в редактор схем, выбрав сверху вкладку открытой схемы или щелкнув два раза на имени схемы PCB_ProjectTEST.SchDoc в панели Projects.
  2. Щелкните правой кнопкой мыши по любому компоненту на листе схемы. В контекстном меню выполните команду Find Similar Objects.
  3. В появившемся окне убедитесь, что в поле 
    Object Kind
     установлен оператор Same, а внизу окна включены все опции, кроме Create Expression.

Рис.5. Find Similar Objects

  1. Нажмите OK. Откроется окно SCH Inspector.
    В списке свойств выбранных компонентов, в разделе Object Specific установите напротив строки Use Library Name оператор True.
  2. Подтвердите изменения нажатием клавиши ENTER и закройте окно.

Рис.6. Установка в строке Use Library Name оператор True

Теперь мы можем передавать схему в редактор печатных плат:

1. Откройте схему PCB_ProjectTEST.SchDoc.

2. Выполните Design>Update PCB Document (PCB_ProjectTEST.SchDoc.). Проект компилируется и появляется диалог Engineering Change Order.

Рис.7. Диалоговоеокно Engineering Change Order

3. Нажмите Validate Changes. Если все изменения допустимы, в столбце Status>Check появляется галочка.

Рис.8. Подтверждение изменений

Если изменения недопустимы, закройте диалог, проверьте панель Message и устраните имеющиеся ошибки.

4. Нажмите Execute Changes для передачи изменений в плату. По завершении данной операции, в столбце Status появляется галочка в разделе Done.

5. Нажмите Close и проектируемая плата откроется с компонентами, готовыми для размещения.

Рис. 9. Плата с компонентами

Используйте горячие клавиши V, D (View Document), если в текущем обзоре не видны все компоненты имеющиеся на схеме.

С помощью кнопки Report Dangles можно создать отчет ЕСО для распечатки.

About Егор Чириков

View all posts by Егор Чириков →

Редактирование однострочного текста в nanoCAD

Урок 15. Проверка данных в Mathcad

Синтаксис Verilog

Лексические соглашения в Verilog аналогичны C в том смысле, что он содержит поток токенов. Лексическая лексема может состоять из одного или нескольких символов, а лексемы могут быть комментариями, ключевыми словами, числами, строками или пробелами. Все строки должны заканчиваться точкой с запятой ; .

Verilog чувствителен к регистру , поэтому var_a и var_A разные.

Комментарии

В Verilog есть два способа писать комментарии.

  1. Однострочный комментарий начинается с // и указывает компилятору Verilog рассматривать все после этой точки до конца строки как комментарий.
  2. Многострочный комментарий начинается с /* и заканчивается */ и не может быть вложенным.

Однако однострочные комментарии могут быть вложены в многострочный комментарий.

  
// Это однострочный комментарий
целое число а; // Создает переменную типа int с именем a и обрабатывает все, что находится справа от //, как комментарий
/*
Это
многострочный или
заблокировать комментарий
*/
/* Это /*
недопустимый вложенный
заблокировать комментарий */
*/
/* Однако,
// это нормально
*/
// Это тоже нормально
///////////// Все еще в порядке

  
 

Пробел

Пробел — это термин, используемый для представления символов пробелов, табуляции, новой строки и перевода страницы, и обычно Verilog игнорирует его, за исключением случаев, когда он разделяет токены. На самом деле, это помогает делать отступы в коде, чтобы его было легче читать.

 модуль дут; // «модуль» — это ключевое слово,
                         // 'dut' - это идентификатор
  reg [8*6:1] name = "Привет!"; // 2 пробела в начале игнорируются
 

Однако пробелы (пробелы) и табуляции (от клавиши TAB) не игнорируются в строках. В приведенном ниже примере строка переменная с именем addr получает значение «Земля» из-за сохранения пробелов в строках.

// В начале этой строки нет пробела, // но в строке есть пробел рег [8*6:1] адрес = "Земля"; конечный модуль

Операторы

Существует три типа операторов: унарные , бинарные и троичные или условные .

  • Унарные операторы должны располагаться слева от своего операнда
  • Бинарные операторы должны стоять между своими операндами
  • Условные операторы имеют два отдельных оператора, разделяющих три операнда
  
х = ~у; // ~ — унарный оператор, а y — операнд
х = у | г; // | — бинарный оператор, где y и z — его операнды
х = (у > 5) ? ш : г; // ?: тернарный оператор, а выражение (y>5), w и z его операнды

  
 

Если выражение (y > 5) истинно, то переменная x получит значение w , иначе значение z .

Числовой формат

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

Однако числа также могут быть представлены в виде , двоичного , , восьмеричного и , шестнадцатеричного . По умолчанию симуляторы Verilog обрабатывают числа как десятичные дроби. Чтобы представить их в другой системе счисления , необходимо соблюдать определенные правила.

 16 // Десятичное число 16
0x10 // Число 16 в шестнадцатеричном формате
10000 // Число 16 в двоичном формате
20 // восьмеричное число 16
 

Размер

Числа размера представлены, как показано ниже, где размер записывается только в десятичном формате, чтобы указать количество битов в числе.

  
[размер]'[базовый_формат][число]

  
 
  • base_format может быть десятичным (‘d или ‘D), шестнадцатеричным (‘h или ‘H) и восьмеричным (‘o или ‘O) и ​​указывает, какое основание представляет часть числа .
  • число задается последовательными цифрами от 0, 1, 2 … 9для десятичного базового формата и 0, 1, 2 .
    . 9, A, B, C, D, E, F для шестнадцатеричного.
 3'b010; // размер равен 3, базовый формат — двоичный ('b), а число — 010 (указывает значение 2 в двоичном формате)
3'd2; // размер равен 3, базовый формат — десятичный ('d), а число — 2 (указано в десятичном формате)
8'х70; // размер равен 8, базовый формат — шестнадцатеричный ('h), а число — 0x70 (в шестнадцатеричном формате) для представления десятичного числа 112
9'h2FA; // размер равен 9, базовый формат — шестнадцатеричный ('h), а число — 0x1FA (в шестнадцатеричном формате) для представления десятичного числа 506
4'hA = 4'd10 = 4'b1010 = 4'o12 // Десятичное число 10 может быть представлено в любом из четырех форматов.
8'd234 = 8'D234 // Допустимо использование нижнего или верхнего регистра для базового формата
32'hFACE_47B2; // Подчеркивание (_) может использоваться для разделения 16-битных чисел для удобства чтения
 

Прописные буквы допустимы для указания числа, если базовый формат — шестнадцатеричный.

 16'кафе; // строчные буквы
16'КАФЕ; // заглавные буквы
32'х2D40_КАФЕ; // подчеркивание может использоваться как разделитель между 4 буквами. 
 

Unsized

Числа без спецификации base_format являются десятичными числами по по умолчанию . Числа без спецификации размера имеют количество битов по умолчанию в зависимости от типа симулятора и машины.

  
целое число а = 5423; // базовый формат не указан, a получает десятичное значение 5423
целое число а = 'h2AD7; // размер не указан, так как a представляет собой целочисленное (32 бита) значение, хранящееся в a = 32'h0000_1AD7

  
 

Отрицательный

Отрицательные числа указываются путем помещения знака минус - перед размером числа. Недопустимо наличие знака минус между base_format и числом .

 -6'd3; // 8-битное отрицательное число, хранящееся в виде дополнения до двух от 3
-6'sd9; // Для математики со знаком
8'd-4; // Недопустимо
 

Строки

Последовательность символов, заключенная в двойные кавычки " " , называется строкой. Его нельзя разбить на несколько строк, и каждый символ в строке занимает 1 байт для хранения.

 "Привет, мир!" // Строка из 12 символов -> требуется 12 байт
"x + z" // Строка из 5 символов
"Как вы
как себя чувствуешь сегодня ?" // Недопустимо разбивать строку на несколько строк
 

Идентификаторы

Идентификаторы — это имена переменных, на которые можно ссылаться позже. Они состоят из буквенно-цифровых символов [a-z][A-Z][0-9] , символов подчеркивания _ или знака доллара $ и чувствительны к регистру. Они не могут начинаться с цифры или знака доллара.

 целое число var_a; // Идентификатор содержит буквы и знак подчеркивания -> Действителен
целое число $var_a; // Идентификатор начинается с $ -> Invalid
целое число v$ar_a; // Идентификатор содержит алфавиты и $ -> Valid
целое число 2вар; // Идентификатор начинается с цифры -> Неверный
целое число var23_g; // Идентификатор содержит буквенно-цифровые символы и подчеркивание -> Действителен
целое число 23; // Идентификатор состоит только из цифр -> Неверный
 

Ключевые слова

Ключевые слова — это специальные идентификаторы, зарезервированные для определения языковых конструкций и написанные строчными буквами. Список важных ключевых слов приведен ниже.

Версии Verilog

За прошедшие годы Verilog претерпел несколько изменений, и в период с 1995 по 2001 год было внесено больше дополнений, как показано ниже.

Изучение Verilog — лучшие учебные пособия по Verilog

Вам также может быть интересно:

Часто задаваемые вопросы (FAQ)

Что такое Верилог?

Verilog — это язык описания оборудования, который позволяет вам описывать цифровую систему, электронные схемы, память или микропроцессор. Verilog можно использовать для временного анализа, тестового анализа и логического синтеза. Вы можете проектировать и проверять цифровые схемы на уровне абстракции регистр-передача. Эти языки описания отличаются от языка программирования программного обеспечения, поскольку они используются для моделирования оборудования. Verilog работает хорошо, если у вас под рукой есть технические характеристики оборудования. Он имеет простую C-подобную структуру и требует знания цифровой логики.

Что такое VHDL и Verilog?

VHDL и Verilog являются языками описания оборудования. Эти языки позволяют писать программы для электронных микросхем или цифровых систем, которые не используют базовую архитектуру компьютера. VHDL немного старше, основан на Ada и Pascal и наследует обе характеристики. Если сценарии VHDL не являются строго типизированными, их трудно скомпилировать. Поскольку VHDL является строго типизированным языком, он не позволяет использовать переменные из разных классов.

Но, с другой стороны, Verilog основан на языке программирования C и использует язык со слабой типизацией. Verilog чувствителен к регистру.

Разница между VHDL, Verilog и SystemVerilog

VHDL и Verilog являются языком цифровой системы общего назначения, тогда как SystemVerilog определяет расширенную версию Verilog. Каждый из них имеет свое уникальное использование и характеристики. VHDL имеет синтаксис и концепцию Ada и Pascal при программировании, Verilog имеет модель и концепцию языка программирования C.

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

SystemVerilog отличается, что позволяет разработчикам проверять более сложные проекты. Считается, что это комбинация VHDL и Verilog, использующая языки C и C++.

Должен ли я изучать Verilog или VHDL?

Есть некоторая разница в кодировании и понимании кода. С одной стороны, VHDL более многословен, поэтому использует больше строк кода, чем Verilog, который имеет синтаксис, подобный C, и его гораздо проще кодировать. VHDL обеспечивает лучший поток кода, а Verilog более компактен и больше подходит для аппаратного моделирования. Вам решать, какой тип языка подходит для вашего стиля кодирования.

Какое программное обеспечение используется для Verilog?

Некоторые из симуляторов, которые используются для Verilog-