• jchdl


     
    一. 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都可以分为多个比特。
     
  • 相关阅读:
    Java中替换字符串中特定字符,replaceAll,replace,replaceFirst的区别
    牛客剑指offer 67题(持续更新~)
    从尾到头打印链表
    字符串变形
    缩写
    删除公共字符
    替换空格
    二维数组的查找
    acm博弈论基础总结
    acm模板总结
  • 原文地址:https://www.cnblogs.com/wjcdx/p/9626491.html
Copyright © 2020-2023  润新知