您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制SystemC-任意长度比特和逻辑向量 正文
SystemC-任意长度比特和逻辑向量

SystemC-任意长度比特和逻辑向量

点击数:7706 次   录入时间:03-04 11:57:49   整理:http://www.55dianzi.com   电脑-单片机-自动控制

      为支持任意宽度的比特操作,SystEMC定义了支持任意宽度的比特向量类型sc_bv<W>,其中W为比特向量的宽度。比特向量适用于只需要2值逻辑向量而不需要算术运算的场合。sc_bv面向比特操作优化,但不支持算术运算,它的仿真速度高于SystEMC整数类型sc_uint、sc_int、sc_bigint、sc_biguint。

      sc_bv支持的操作见下表:

      表2-7 sc_bv支持的操作类型

操作类型

操作符 说明 位操作 ~ 按位取反。b=~a是将a的各个位取反后赋给b & 按位与。c=a&b是将a与b按位与的结果赋给c | 按位或。c=a|b是将a与b按位或的结果赋给c ^ 按位异或。c=a^b是将a与b按位异或的结果赋给c >> 右移位 << 左移位 关系运算 = = 逻辑等于 != 逻辑不等于 赋值操作 &= a&=b等效于a=a&b |= a|=b等效于a=a|b ^= a^=b等效于a=a^b 串连 (,) (a,b)将a和b串连起来构成更大的数 范围选择 range(left,right) a.range(x,y)选择了a的右数第y+1到第x+1位。Y可以是0 位选择 [x] a[x]选择了a的右数第x+1位 位减操作 and_reduce()或者 a.and_reduce()返回的是a的所有位相与后得到的bool型数 nand_reduce() a.nand_reduce()返回的是a的所有位相与后取反得到的bool型数 or_reduce() a.or_reduce()返回的是a的所有位相或后得到的bool型数 nor_reduce() a.nor_reduce()返回的是a的所有位相或后取反得到的bool型数 xor_reduce() a.xor_reduce()返回的是a的所有位相异或后得到的bool型数 xnor_reduce() a.xor_reduce()返回的是a的所有位相异或后取非得到的bool型数


      比特向量的赋值需要使用’0’和’1’构成的字符串进行赋值。举例如下: 

  1. sc_bv<6> val;  
  2. val = "110011";  
  3. 下面给出一些比特向量使用的例子:  
  4. sc_bv<8> a,b;  
  5. sc_bv<16> c;  
  6. ……  
  7. sc_bit bit_d;  
  8. a=”11110100”;         //对a赋值  
  9. bool temp=a.xor_reduce();//将a的各个位异或后赋值给temp  
  10. b=~a;                 //将a的各个位取反后赋值给b  
  11. c=(a,b);               //将a和b串连后赋值给c  
  12. bit_d=c[15];           //取c的最高位 

      如果希望将sc_bv类型的数据显示在屏幕上,可以使用to_string()函数,如下面的例子。

      sc_bv<16> a;
      cout << "a = " << a.to_string()<<endl;

      虽然sc_bv不支持算术运算,但是它可以方便的与sc_uint、sc_uint、sc_bigint、sc_biguint进行类型转换,如下面的例子:

      sc_bv<4> bv_a;
      …..
      bv_a=”0000”;
      sc_uint temp=a;
      a++;
      bv_a=a;
      ……

      值得注意的是sc_bv与int直接不能进行相互转换,如下面的代码:

      sc_bv<4> bv_a;
      …..
      bv_a=”0000”;

      int temp=a;//错误。没有定义的重载操作

      为支持宽度大于1的三态总线建模,SystemC定义了sc_lv<W>,它与sc_bv<W>的区别是它是sc_logIC类型的向量,因此它支持’0’、’1’、’X’、’Z’ 四值逻辑。sc_lv支持的运算与sc_bv一样,也支持to_string()函数,支持与sc_uint、sc_uint、sc_bigint、sc_biguint之间的相互转换。




本文关键字:比特  电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制