关于syetemC的数据类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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函数
以上是关于关于syetemC的数据类型的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段