Регистровые типы данных

Соответствуют объектам, которые могут хранить значение. К таким типам относятся reg, integer, time и real.

Синтаксис

reg signed           // Регистр со знаком (дополнение до 2) 
reg unsigned         // Регистр без знака 
reg [n-1:0]          // Регистр с разрядностью n 
reg [n-1:0] signed   // Регистр с разрядностью n со знаком 
reg [n-1:0] unsigned // Регистр с разрядностью n без знака 

Все переменные объявляются в начале модуля и могут быть использованы только внутри него. Объявления внутри блоков always и initial не допускаются.

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

Пример

Результат исполнения

module data_types_tb;
  reg a; reg [7:0] b, c;
  reg signed [7:0] d; 
  reg [11:0] e; integer i;
  time t; real r; realtime rt;

  initial begin
    a = 1; $display("1bit = %0d", a);    
    b = 8'hF2; $display("8bit_dec = %0d", b);    
    c = 8'b10110011; $display("8bit_bin = %0d",c);
    d = -8'sd5; $display("8bit (-5) = %0d", d);
    e = 12'd?; $display("Z-state = %0d", e);
    i = 32'hcafe_1234; 
    $display("integer = 0x%0h", i);
    t = 112345; $display("time = %t", t);
    t = 112345; $display("time = %0t", t);
    r = 3.8e10; $display("real = %g", r);
    rt = 1.0; $display("realtime = %f", rt);
  end
endmodule







1bit = 1
8bit_dec = 242
8bit_bin = 179
8bit (-5) = -5
Z-state = z

integer = 0xcafe1234
time =               112345
time = 112345
real = 3.8e+10
realtime = 1.000000

Last updated