Логические типы данных (logic и bit)

Как и reg, logic хранит значения, находящиеся в одном из 4 состояний. Главным отличием его от регистра является то, что управлять значениями можно как в процедурных блоках, так и через непрерывное присваивание как у проводов. Для logic может быть только 1 исходный сигнал (для проводов их может быть несколько).

Пример

module logic_tb;
    logic[3:0] data;
    logic x;
    assign x = data[0]; 
    initial begin
        $display("data=0x%0h x=%0b", data, x);     
        data = 4'hB; $display("data=0x%0h x=%0b", data, x);
        #1; $display("data=0x%0h x=%0b", data, x);
    end                                
endmodule

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

data=0xx x=x
data=0xb x=x
data=0xb x=1

Значения типа bit могут находиться в одном из двух состояний: логический 0 или 1. При приведении logic (или reg) в bit значения z и x конвертируются в 0.

Пример

module bit_tb;
  bit var_a;       
  bit [3:0] var_b;    
  logic [3:0] x_val;     

  initial begin
    $display("var_a=%0b var_b=0x%0h", var_a, var_b);
    var_a = 1;  var_b = 4'hF;
    $display("var_a=%0b var_b=0x%0h", var_a, var_b);
    var_b = 16'h481a;
    $display("var_b=0x%0h", var_b);
    $display("var_b = %b", var_b);
  end
endmodule

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

var_a=0 var_b=0x0
var_a=1 var_b=0xf
var_b=0xa
var_b = 1010

Last updated