Integer и Real
Часть раздела Основы путешествия по Verilog на Coddy. Урок 8 из 90.
Помимо wire и reg, в Verilog есть другие типы данных для чисел, предназначенные для разных целей.
Целое число
integer — это переменная общего назначения для подсчётов и вычислений.
- Размер по умолчанию — 32 бита
- Со знаком (может хранить отрицательные числа)
- Используется в основном в тестовых стендах и циклах
Объявление целого числа:
integer i; // 32-битная переменная со знаком
integer count; // Может хранить отрицательные числаИспользование целого числа:
integer i;
initial begin
i = 0; // Начать с 0
i = i + 1; // Увеличить на 1
i = -5; // Может хранить отрицательные значения
$display("i = %d", i); // Выводит: i = -5
endВещественные числа
real используется для чисел с плавающей точкой (чисел с десятичной дробной частью).
- Хранит дробные значения
- Используется в тестовых стендах для вычислений
- Не может быть синтезирован в аппаратную часть
Объявление вещественной переменной:
real pi; // Переменная с плавающей точкой
real voltage;Использование вещественных чисел:
real pi;
initial begin
pi = 3.14159; // Десятичное значение
pi = 22.0 / 7.0; // Результат деления
$display("pi = %f", pi); // Выводит: pi = 3.142857
endГде их использовать
В тестовых стендах: Целые числа и вещественные числа часто используют для счётчиков циклов, вычислений и проверки ожидаемых значений. Благодаря им тестовый код проще писать и понимать.
В аппаратуре: тип real не синтезируется, то есть его нельзя преобразовать в реальную схему. Тип integer можно синтезировать, и его часто используют в качестве счётчика цикла, но для сигналов аппаратуры, которая будет размещена на FPGA или микросхеме, используйте reg и wire.
Задание
Дополните код, чтобы тестовый стенд работал.
Что нужно сделать:
- Объявите целочисленную переменную i (счётчик цикла)
- Объявите вещественную переменную value (для вычислений)
Попробуйте сами
module test;
// Объявите целочисленную переменную с именем i
// Объявите вещественную переменную с именем value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$finish;
end
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog