C# Class BitField.BitField

ビットフィールドクラス。 Verilog っぽい操作が可能。 64ビットが限界(仕様です)。
Show file Open project: ufcpp/UfcppSample Class Usage Examples

Public Methods

Method Description
Assign ( BitField a ) : void

値を割り当てる。

Assign ( int m, int l, BitField a ) : void

m〜l ビット目に値を割り当てる。

Assign ( ulong val ) : void

値を割り当てる。

Concat ( ) : BitField

2つのビットフィールドを結合する。 verilog の {x, y, z} に相当。 いくつでもつなげられる。

Create ( bool b ) : BitField

1 びっとのビットフィールドを作成。

Create ( int m, int l ) : BitField

MSB が m、LSB が l のビットフィールドを作成。 verilog の wire [m:l] z; に相当。

Create ( int m, int l, ulong val ) : BitField

MSB が m、LSB が l のビットフィールドを作成。 verilog の wire [m:l] z; に相当。 val で値を初期化する。

ToString ( ) : string

文字列化。 0 と 1 の羅列。

operator ( ) : BitField

各ビットに対して AND 演算。

operator ( ) : bool
this ( int i ) : BitField

i ビット目の値を読み書き。

this ( int m, int l ) : BitField

m〜l ビット目の値を読み書き。

Private Methods

Method Description
GetValue ( ) : ulong

格納されている値を ulong 化して返す。

GetValue ( int m, int l ) : ulong

m〜l ビット目に格納されている値を ulong 化して返す。 verilog の z[m:l] に相当。

Sub ( int i ) : BitField

i ビット目のみを切り出す。 verilog の z[i] に相当。 z.Sub(i) を書き換えると z そのものも書き換えられる。

Sub ( int m, int l ) : BitField

m〜l ビット目のみを切り出す。 verilog の z[m:l] に相当。 z.Sub(m, l) を書き換えると z そのものも書き換えられる。

Method Details

Assign() public abstract method

値を割り当てる。
/// this.Width != a.Width のとき発生。 ///
public abstract Assign ( BitField a ) : void
a BitField 割り当てたい値の入ったビットフィールド。
return void

Assign() public abstract method

m〜l ビット目に値を割り当てる。
/// this.Sub(m, l).Width != a.Width のとき発生。 ///
public abstract Assign ( int m, int l, BitField a ) : void
m int MSB
l int LSB
a BitField 割り当てたい値の入ったビットフィールド
return void

Assign() public method

値を割り当てる。
public Assign ( ulong val ) : void
val ulong 割り当てたい値(ulong)
return void

Concat() static public method

2つのビットフィールドを結合する。 verilog の {x, y, z} に相当。 いくつでもつなげられる。
static public Concat ( ) : BitField
return BitField

Create() public static method

1 びっとのビットフィールドを作成。
public static Create ( bool b ) : BitField
b bool ビットの真理値
return BitField

Create() public static method

MSB が m、LSB が l のビットフィールドを作成。 verilog の wire [m:l] z; に相当。
/// m < l のとき発生。 ///
public static Create ( int m, int l ) : BitField
m int MSB
l int LSB
return BitField

Create() public static method

MSB が m、LSB が l のビットフィールドを作成。 verilog の wire [m:l] z; に相当。 val で値を初期化する。
/// m < l のとき発生。 ///
public static Create ( int m, int l, ulong val ) : BitField
m int MSB
l int LSB
val ulong 初期値
return BitField

ToString() public method

文字列化。 0 と 1 の羅列。
public ToString ( ) : string
return string

operator() static public method

各ビットに対して AND 演算。
/// a.Width != b.Width のとき発生。 ///
static public operator ( ) : BitField
return BitField

operator() static public method

static public operator ( ) : bool
return bool

this() public method

i ビット目の値を読み書き。
/// i が範囲外のとき発生。 ///
public this ( int i ) : BitField
i int
return BitField

this() public method

m〜l ビット目の値を読み書き。
/// m, l が範囲外のときと m < l のとき発生。 ///
public this ( int m, int l ) : BitField
m int MSB
l int LSB
return BitField