关于syetemC的数据类型

一 值保持器----------端口:
从端口上来看,端口分为三类:

 (1)   sc_in< type>  (2)  sc_out<type>  (3) sc_inout <type>
                                     ps:    内部连线的类型  sc_signal

二 基本的数据类型:
(1) systemC 自我扩展的类型:

 位类型        sc_bit  :      此种类型数据的值只能是1或者0,支持c语言中的位操作
  位向量       sc _bv<n>:
    定义为任意宽度的位向量,在生成相应类型的变量时若需要赋值,则有两种方式:
            (1)使用括号初始化   sc_bv<8> vector('1') ;   即使得结果为全‘1’的位向量
            (2)使用字面量初始化  :
                                        sc_bv<8> vector = '11111111';
            处理sc_bv类型的数据可由c语言中的位操作,也可以使用特殊的方法
            1.  使用拼接操作符   ( var1 , var2 )将多个变量链接在一起
            2.  使用函数方法: range()   and_reduced()   ..._reduced()
            由此来的得到拼接的操作,此处的...表示的是一般的逻辑操作,
            即and,or,xor,nor,nand,xnor
    逻辑类型 sc_logic:  逻辑类型共有四种值
                                0   ,    1    ,   x     ,     z
                                SC_LOGIC_0                   0
                                SC_LOGIC_1                   1
                                SC_LOGIC_X                   x
                                SC_LOGIC_Z                   z
                除了使用上面的预定义值进行赋值外,也可以使用类型转换进行赋值
                static_cast<sc_logic>'z'                        sc_logic('z')
                使用函数to_bool可转化此为bool型逻辑值
    逻辑向量类型       sc_lv<n>   :       
                值的赋值也可以使用上述的相同方式进行赋值
                            但要注意一点,若字面量的第二位为x,那么需要在最高位加上0
                            以免使得字面量被解释为16进制的数。
                            使用函数to_int可使此类型转化为int类型值
    内建的整型数据:
                sc_int<n>     sc_uint<n>:   固定精度的类型,实现为64位执行
                            所得的结果根据目标进行截断,且同c++的int类型是完全兼容的
                sc_bigint<n>   sc_biguint<n>:   精度无限制的整型数据类型,可指定任意的位宽。

(2) 由c++继承过来的支持的数据类型:

                所有的整型类型,布尔类型,enum类型,struct类型,class类型

三 数据的显示输出方式-------使用to_string函数的形式

                    输出方式选择的函数参数:
                    SC_BIN:            打印二进制的编码
                    SC_BIN_US:      打印无符号数的二进制码
                    SC_BIN_SM:      打印数字的符号与幅值
                    SC_CSD:      规范有符号数字码
                    SC_OCT:      打印为8进制
                    SC_HEX:      打印为16进制
                    SC_DEC:      默认的打印十进制的代码

四 判断类型
用于对多驱动的信号与端口进行建模的数据类型:

                     sc_in_resolved         sc_in_rv
                     sc_out_resolved       sc_out_rv
                     sc_signal_resolved   sc_signal_rv

                    sc_signal<sc_lv<4> >mem_word ; //    不允许多驱动的操作
                    sc_signal_rv<4> cycle_counter ;      //    允许多个驱动的存在

五 关于用户自定义的类型:

    需要通过class(struct)进行定义,但需要重载这个类中的四个部分:
    赋值构造函数        ==操作符          <<操作符           sc_trace函数

猜你喜欢

转载自blog.51cto.com/13824643/2134269
今日推荐