您当前的位置:五五电子网电子知识电子学习基础知识电脑-单片机-自动控制SystemC-sc_bit和sc_logic 正文
SystemC-sc_bit和sc_logic

SystemC-sc_bit和sc_logic

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

      数字系统中最常见的四个逻辑为:

      ‘0’——逻辑低电平;
      ‘1’——逻辑高电平;
      ‘Z’——高阻态;
      ‘X’——不定值。

      在SystEMC中,这四个值用‘0’ 、‘1’ 、‘Z’、 ‘X’或者SC_LOGIC_0、SC_LOGIC_1、SC_LOGIC_Z和SC_LOGIC_X表示,其中虽然是在sc_logic.h中定义的,也可以用于对sc_bit类型进行赋值。

      sc_bit只有’1’(true)和’0’(false)两种值,这对于仿真那些只有’1’ 和’0’两种逻辑的场合足够用了。sc_logic比sc_bit多’X’和’Z’,实现起来必然更复杂一些,仿真速度也要慢一些。虽然多数情况下可以使用sc_logic代替sc_bit,但是推荐的做法是在能够使用sc_bit的时候尽量不要使用sc_logic。在进行布尔代数操作时sc_bit可与C++的bool类型混合使用。

      sc_bit支持的运算符如下表所示

      表2-5 sc_bit支持的运算符

位操作

与& 或 | 异或 ^ 取反 ~ 赋值操作 与赋值&=      或赋值|= 异或赋值^= 直接赋值= 逻辑操作 等于== 不等于!=

      下面的操作是合法的:

  1. sc_bit a;  
  2. sc_bit b;  
  3. ……  
  4. a=true;  
  5. b='1' 
  6. a^='1'//等效于a=a^’1’;  
  7. a=~b;  
  8. a^=b;//等效于a=a^b;  
  9. a=a|b;  
  10. bool equal=a==b;//等效于bool equal=(a==b); 


      而下面的操作是非法的:

  1. a~=b;//operator not defined  
  2. sc_logic数据类型比sc_bit多两个值’X’和’Z’,它所支持的运算与sc_bit一样。下面的例子是合法的:  
  3. sc_logic a,b;  
  4. bool c;  
  5. ……  
  6. c=true;  
  7. a=true;  
  8. a='X' 
  9. a=SC_LOGIC_1;  
  10. b='1' 
  11. b=c;  
  12. b^=c;  
  13. b='Z' 
  14. a^='1' 
  15. a=~b;  
  16. a^=b;  
  17. a=a|b;  
  18. bool equal=a==b;  


      同样a~=b也是非法的。




本文关键字:暂无联系方式电脑-单片机-自动控制电子学习 - 基础知识 - 电脑-单片机-自动控制