一. Bit
类结构如下:
 
主要属性:
  1. value: bit的值,只支持0,1, 分别为 Bit.BIT_0 和 Bit.BIT_1;
 
主要方法:
  1. 构造方法
Bit(): 创建一个Bit,值为默认值0;
Bit(int value): 创建一个Bit,值为参数value;
Bit(boolean): 创建一个Bit,boolean参数为true,则比特值为1,反之为0;
 
  1. 获取值的方法
boolVal(): 比特值为1,则返回true,为0则返回false;
intVal():返回int型(32位)0或1;
longVal(): 返回long型(64位)0或1;
 
  1. 赋值方法
set(): 置1;
clr(): 清0;
被Bits使用的赋值方法:assign;
被Reg使用的赋值方法:set;
 
  1. 逻辑操作方法
and(): 与;
or(): 或;
not(): 非;
xor(): 异或;
 
  1. 判断方法
equals(int value): 判断是否月value相等;
equals(Object): 判断是否与某个Bit相同或值相等;
 
二. BitVec
 
辅助类,方便处理一组Bit;
Bits和Reg继承自BitVec;
 
类结构如下:
 
主要属性:
  1. Bit[]: 比特数组,0为lsb,length - 1为msb;
  1. nBits: 比特位数;
 
主要方法:
  1. 构造方法
BitVec(Bit[]): 直接基于提供的比特数组,创建比特向量;
BitVec(int nBits): 创建一个nBits位的比特向量,所有比特为默认值;
BitVec(int nBits, int value): 创建一个nBits位(最多32位)的比特向量,使用int值(最多32位)的每一位分别赋值;
BitVec(int nBits, long value): 创建一个nBits位(最多64位)的比特向量,使用long值(最多64位)的每一位分别赋值;
 
  1. 获取值的方法
boolVal(): 所有比特值都为0,则返回false,否则返回true;
intVal():返回int型(32位)值,从lsb到msb每一个比特的值,分别赋值给int值的每一位;
intVal(int msb, int lsb):返回从lsb到msb这一部分比特位组成的int值;
longVal(): 返回long型(64位)值,从lsb到msb每一个比特的值,分别赋值给long值的每一位;
longVal(int msb, int lsb): 返回从lsb到msb这一部分比特组成的long值;
 
  1. 获取某一个比特
bit(int index): 获取第index个比特(从0开始);
 
  1. 获取全部比特:bits()
  1. 获取部分比特
bits(int msb, int lsb):[msb, lsb], 获取从lsb(包含)到msb(包含)的比特;如果msb < lsb,则获取的比特逆序;
如:一组比特abcd, bits(1,0)返回cd,bits(0,1)返回dc.
 
  1. 赋值方法
这里主要提供set方法。
 
  1. 判断方法
eq: 等于
ne: 不等于
lt: 小于
le: 小于等于
gt: 大于
ge: 大于等于
需要注意的是,这些判断方法,返回的不是布尔型true/false,而是一个Bit。
这样做一则方便判断的结果参与后续的处理,一则更贴近判断的物理意义(返回值通过一根线的高低电平标识)。
 
  1. match():把把比特数组的值分别与字符串如"0b10xx"逐位比较,忽略字符串标识为x的位,看值是否匹配;
  1. 连接方法:vecConcat()
举例:a.vecConcat(b, c)之后,返回的bit[]的值为abc,如果b=0bxyz,则bit[]值为0baxyzc
  1. 逻辑运算:与或非、异或
  1. 数学运算:加法
 
三. Bits
 
意为一组线,处理一组线的各种操作。使用BitVec提供的方法,但是返回的类型为Bits类型,而非比特数组;
Bits赋值使用assign方法,不能使用set方法。
 
 
主要方法:
  1. 构造方法
与BitVec对应;
 
  1. 获取部分比特
类似于BitVec的bits()方法组,但是返回的不是比特数组,而是Bits类的对象;
 
  1. 赋值方法
assign():意义上相当于Verilog中对线的continuous assignment.
 
  1. 连接方法
concat():同BitVec的连接方法,返回Bits类的对象;
 
  1. 逻辑操作
同BitVec的逻辑操作,返回Bits类的对象;
 
  1. 数学运算
只实现了加法,同BitVec的运算方法,返回Bits对象;
 
静态辅助方法:
  1. inst():是Bits的创建更紧凑,省略new的使用;
  1. Bits.of(Bit):返回只包含一根线的Bits对象,一般是为了方便与其他Bits进行操作,如连接;
  1. Bits.of(Bit[]):返回包含比特数组的Bits对象;
  1. Bits.from(Reg):返回有Reg包含的一组比特构成的Bits,意义上的理解为:返回的是寄存器的输出线;
 
 
四. Reg
 
意为寄存器,处理寄存器的各种操作。使用BitVec提供的方法,但是返回的类型为Reg类型,而非比特数组;
寄存器赋值使用set方法,不能使用assign方法。
 
可以看到基本与Bits的方法相同,只是返回的为Reg对象。这里不做赘述。
 
增加了一个赋值方法:
  1. set(Bits): 把Bits包含的比特数组的值分别赋给reg包含的比特数组,意为:Bits中的线为Reg对象的输入线;
 
增加了一组方便方法:简化只有一个比特的寄存器与Bit之间的操作:
  1. set(Bit):将reg第一个比特的值,赋值为参数比特的值;
  1. and(Bit):将reg第一个比特,与参数Bit相与;
  1. or(Bit):将reg第一个比特,与参数Bit相或;
  1. xor(Bit):将reg第一个比特,与参数Bit相异或;
 
不同的静态辅助方法为:
  1. Reg.to(Bit): 返回比特组成的Reg对象,意为:参数Bit对应的线为返回的Reg对象的输出线;
  1. Reg.to(Bits):返回Bits的比特数组组成的Reg对象,意为:参数Bits中的线为返回的Reg对象的输出线,即返回的Reg对象的值输出到Bits中的线上;
 
五. Bitable
 
辅助接口,方便对Bit、Bits、Reg的统一处理。意义为:可比特化的类型。比如Bits和Reg都可以分为多个比特。
 

jchdl - RTL Data Types的更多相关文章

  1. C and SQL data types for ODBC and CLI

    C and SQL data types for ODBC and CLI   This topic lists the C and SQL data types for ODBC and CLI a ...

  2. allow zero datetime=true导致datetime转换失败:MySql.Data.Types.MySqlDateTime”的对象无法转换为类型“System.Nullable`1[System.DateTime]

    allow zero datetime=true导致datetime转换失败:MySql.Data.Types.MySqlDateTime”的对象无法转换为类型“System.Nullable`1[S ...

  3. "SQL Server does not handle comparison of NText, Text, Xml, or Image data types."

    "SQL Server does not handle comparison of NText, Text, Xml, or Image data types." sql2000 ...

  4. ExtJS笔记 Ext.data.Types

    This is a static class containing the system-supplied data types which may be given to a Field. Type ...

  5. Entity Framework Code First (七)空间数据类型 Spatial Data Types

    声明:本文针对 EF5+, Visual Studio 2012+ 空间数据类型(Spatial Data Types)是在 EF5 中引入的,空间数据类型表现有两种: Geography (地理学上 ...

  6. Core Java Volume I — 3.3. Data Types

    3.3. Data TypesJava is a strongly typed language(强类型语音). This means that every variable must have a ...

  7. Delphi Data Types

    http://docwiki.embarcadero.com/RADStudio/XE6/en/Delphi_Data_Types Integer Data Types Type Descriptio ...

  8. MongoDB - The mongo Shell, Data Types in the mongo Shell

    MongoDB BSON provides support for additional data types than JSON. Drivers provide native support fo ...

  9. SQL Server 2008 Data Types and Entity Framework 4

    Because I’ve had a lot of conversations about spatial data types lately, I thought I would create a ...

随机推荐

  1. java基础篇 之 接口

    组合接口时的名字冲突: 看下面这段代码: interface I1 { int f(); } interface I2 { void f(); } interface I3 { int f(int a ...

  2. spring学习笔记(六)自定义spring-boot-starter(2)

    上篇文章我们主要讲了spring自动装配的原理,我们知道了springboot在启动的时候会自动去读.factories文件,在factories文件中,autoConfiguration对应的就是我 ...

  3. 视频文件自动转rtsp流

    最近碰到一个项目需要用到 rtsp 视频流做测试, 由于真实环境的 摄像头 并不能满足需求,故尝试了一下用本地视频文件转换成rtsp视频流做测试,记录一下~ 采用方案: Docker + EasyDa ...

  4. grep 如何自动标注颜色

    首先 最后一行加入 保存 然后source ~/.bashrc 然后来试一下效果

  5. 201771030120-王嫄 实验一 软件工程准备 <课程学习目的思考>

    项目 内容 课程班级博客链接 https://edu.cnblogs.com/campus/xbsf/nwnu2020SE 这个作业要求链接 https://www.cnblogs.com/nwnu- ...

  6. .netcore 部署时遇到413 Request Entity Too Large 和 413Payload Too Large 的问题

    .netcore3.1 遇到一个webapi 上传大文件问题 首先,在kestrel模式调试模式下上传 会报错413, 需要在三个地方添加 1.startup中 这里设置的2g最大值 2.在progr ...

  7. 设计模式之GOF23模板模式

    模板模式template method 场景:具有具体流程,但具体某一步的业务不同 到银行办理业务:排队取号,办理业务,给员工打分 请客吃饭:等待,点单,吃饭,结账 模板方法模式介绍:模板方法是编程常 ...

  8. 08JAVA基础关键字(final、static)以及抽象类和接口

    一.关键字 1.final 修饰类 修饰变量 修饰成员方法 该类为最终类,不能被继承 该变量为常量 该成员方法不能被重写 2.static (1).生命周期 随着类的加载而加载 (2).特点 被本类所 ...

  9. Mysql 常用数据库操作

    一.数据库操作: 1.查看数据库: >SHOW DATABASES; 2.创建数据库: >CREATE DATABASE db_name; //db_name为数据库名 3.使用数据库: ...

  10. PHP函数禁用绕过

    在渗透测试过程中可能经常会遇到上传webshell后,由于php.ini配置禁用了一些如exec(),shell_exec(),system()等执行系统命令的函数,导致无法执行系统命令,就此问题给出 ...