Регистровые типы данных
Соответствуют объектам, которые могут хранить значение. К таким типам относятся 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