Menu
Coddy logo textTech

Integer и Real

Часть раздела Основы путешествия по Verilog на Coddy — урок 8 из 90.

Помимо wire и reg, в Verilog есть другие типы данных для чисел различного назначения.

Integer

integer — это переменная общего назначения для подсчёта и вычислений.

  • Размер по умолчанию — 32 бита
  • Signed (может хранить отрицательные числа)
  • Используется в основном в тестбенчах и циклах for

Объявление integer:

integer i;        // 32-битная знаковая переменная
integer count;    // Может хранить отрицательные числа

Использование integer:

integer i;

initial begin
  i = 0;           // Начать с 0
  i = i + 1;       // Считать вверх
  i = -5;          // Может хранить отрицательные
  $display("i = %d", i);  // Выводит: i = -5
end

Real

real предназначен для чисел с плавающей точкой (чисел с десятичной точкой).

  • Хранит дробные значения
  • Используется в тестбенчах для вычислений
  • Не может быть синтезирован в аппаратное обеспечение

Объявление real:

real pi;           // Переменная с плавающей точкой
real voltage;

Использование real:

real pi;

initial begin
  pi = 3.14159;               // Десятичное значение
  pi = 22.0 / 7.0;            // Результат деления
  $display("pi = %f", pi);    // Выводит: pi = 3.142857
end

Где их использовать

В тестбенчах: Типы integer и real обычно используются для счетчиков циклов, вычислений и проверки ожидаемых значений. Они делают тестовый код проще для написания и понимания.

В аппаратном обеспечении: эти типы обычно не являются синтезируемыми — это означает, что их нельзя превратить в реальные схемы. Для аппаратуры, которая будет размещаться на FPGA или в микросхеме, используйте вместо этого reg и wire.

challenge icon

Задание

Дополните код, чтобы тестбенч работал.

Что нужно сделать:

  1. Объявите integer с именем i (для счетчика цикла)
  2. Объявите real с именем value (для вычислений)

Попробуйте сами

module test;
  
  // Объявить целое число с именем i

  
  // Объявить вещественное число с именем value

  
  initial begin
    i = 7;
    value = i * 0.5;
    $display("i = %0d, value = %f", i, value);
    
    $finish;
  end
  
endmodule
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы