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




TOP > SystemC > SystemCのデータ型
SystemCのデータ型
SystemCのデータ型には主に以下の種類がある。

タイプ 説明
sc_int<bit> variable bitサイズの正負の変数 sc_int<1> a;
sc_uint<bit> variable bitサイズの正の変数 sc_int<1> a;
sc_bigint<bit> variable bitサイズの正負の変数
※64bit以上の場合は、sc_intではなくsc_bigintを使用する
sc_bigint<80> a;
sc_biguint<bit> variable bitサイズの正の変数
※64bit以上の場合は、sc_intではなくsc_biguintを使用する
sc_biguint<80> a;

これらのデータ型はポートの定義、信号の定義にも使用できる。また、C++のデータ型もSystemCでは使用できる。(当然の事だが...)

データ型の例
bool val;            ///1bit幅の変数
sc_int<3> val;       ///<3bit幅の符合有りの変数
sc_uint<64> val;     ///<64bit幅の符合無しの変数
sc_bigint<80> val;   ///<80bit幅の符合有りの変数
sc_biguint<80> val;  ///<80bit幅の符合無しの変数
sc_in<sc_uint<3> >   ///<3ビット幅の入力ポート
sc_out<sc_int<10> >  ///<10ビット幅の出力ポート
sc_signal<bool> val; ///<1ビット幅の信号

ビット幅のある変数の演算
ビット幅の指定をした変数は、以下の例のようにC++の演算子・特殊な演算子やメソッドを使用して演算ができる。

SystemCの演算の例
sc_int<32> val1 = 10;
sc_int<32> val2 = 20;
sc_int<32> val;
bool val3 = val4 = true;

//ANDをとる
val = val1 & val2;

//シフト演算する
val = val1 << 1;

//四則演算を行う
val = val1 + val2;
  
//条件演算子で判定
if(val1 < val2)
{
  printf("hahaha\n");
}

//インクリメント・デクリメントする
val1++;
val2--;

//ある変数のnビットを取り出す
val = val1[1];

//連接で複数変数を連結する
val = (val3, val4);

//あるビット範囲を取り出す
val = val1.range(1, 0);






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