ためになるホームページ お問い合わせ




TOP > SystemC > ビットベクタ
ビットベクタ
SystemCの型にsc_bvというビットベクタ型がある。この型は、算術演算ができないが特殊な使い方ができる。
算術演算をする時は、一時的に対応したSystemCの型に一回代入して、その後に戻してあげればよい。
(書式) sc_bv<サイズ> オブジェクト名

使用方法
  • ビットの取りだしは、1bitと取りだす時は[]演算子を使い、複数のビットを取りだす時にはrangeメソッドをつかう。
  • 特殊なメソッドが用意されており、全ビットに対してand,or,xorをとるメソッドor_reduce,and_redue,xor_reduceがある。 これらのメソッドは、全てのビットをor,and,xorし、結果の1bitを返す。
  • 0と1の組み合わせの文字列をビットの並びとして代入する事ができる。

  • ビットベクタの例
    sc_bv<64> bv;
    sc_bv<8> data8;
    bv = 3;
    //rangeで取りだせない
    sc_uint<64> tmp =  bv;
    cout << tmp << endl;
    
    //rangeメソッドで取りだす
    if (bv.range(1, 0) == 3) cout << "bv = 3" << endl;
    
    data8 = bv.range(7,0);
    
    sc_bit lsb;
    //bitを取りだす
    lsb  = bv[0];
    //sc_bit result;
    sc_bv<4> data2;
    data2 = "1111";  //0,1の組み合わせの文字列を代入できる。
    sc_uint<4> result;
    result = data2.or_reduce();
    result = data2.and_reduce();
    result = data2.xor_reduce();
    
    





    Copyright 2007 ためになるホームページ All Rights Reserved.