Introduction to SystemVerilog. Data type and numeric expression
SystemVerilogのデータタイプと数値表現
SystemVerilogのいくつかのデータタイプをテストしてみる。
データタイプ
データタイプ | ビット幅 | 内容 |
---|---|---|
bit | 1 | 2値の符号なし整数(ビット幅指定可) |
byte | 8 | 2値の符号付き整数 |
shortint | 16 | 2値の符号付き整数 |
int | 32 | 2値の符号付き整数 |
longint | 64 | 2値の符号付き整数 |
logic | 1 | 4値(0,1,x,z)の符号なし論理値(ビット幅指定可) |
数値表現の例
数値 | ビット幅 | 基数 | 2進数表現 |
---|---|---|---|
128 | 32 | 10 | 000...10000000 |
1'b1 | 1 | 10 | 1 |
8'hff | 8 | 16 | 11111111 |
8'o33 | 8 | 8 | 011011 |
8'bz | 8 | 2 | zzzzzzzz |
8'b1111_1101 | 8 | 2 | 11111101 |
'hf0 | 32 | 16 | 000...11110000 |
8'd15 | 8 | 10 | 1111 |
8'sh8 | 8(符号付き) | 16 | 11111000 |
'sh8 | 32(符号付き) | 16 | 111...11111000 |
データタイプのテスト(test_dtype.sv)
いくつかのデータタイプ(int、longint、logic)をテストする記述。各データタイプの仕様とその数値表現は上記の表を参照。
/* test_dtype.sv */ module test_dtype(); // int(32bit) int sig_int = 'hffff; // longint(64bit) longint sig_longi = 'hffff; // logic(16bit) logic[15:0] sig_logic = 16'b1111_1111_1111_1111; // logic(32bit) logic[31:0] sig_logic_l = 32'hffff_eeee; initial begin $display("##################################################"); $display("### Test type of int(32bit). ###"); $display("sig_int(Binary) = %b", sig_int); $display("sig_int(Hex) = %h", sig_int); $display("sig_int(Decimal) = %d", sig_int); $display("##################################################\n"); $display("##################################################"); $display("### Test type of longint(64bit). ###"); $display("sig_longi(Binary) = %b", sig_longi); $display("sig_longi(Hex) = %h", sig_longi); $display("sig_longi(Decimal) = %d", sig_longi); $display("##################################################\n"); $display("##################################################"); $display("### Test type of logic(16bit). ###"); $display("sig_logic(Binary) = %b", sig_logic); $display("sig_logic(Hex) = %h", sig_logic); $display("sig_logic(Decimal) = %d", sig_logic); $display("##################################################\n"); $display("##################################################"); $display("### Test type of logic(32bit). ###"); $display("sig_logic_l(Binary) = %b", sig_logic_l); $display("sig_logic_l(Hex) = %h", sig_logic_l); $display("sig_logic_l(Decimal) = %d", sig_logic_l); $display("##################################################\n"); end endmodule