首页 技术 正文
技术 2022年11月11日
0 收藏 415 点赞 3,683 浏览 1351 个字

https://mp.weixin.qq.com/s/7WKB1QxcVzqm2Q7bWcKHzA

简单介绍RegField的实现。

Rocket – regmapper – RegField

1. 简单介绍

定义寄存器域相关的参数类型。

2. RegFieldAccessType

访问类型:读、写、读写:

Rocket – regmapper – RegField

3. RegFieldWrType

写操作类型:

Rocket – regmapper – RegField

写一清零,写一置位,写一反转,

写零清零,写零置位,写零反转,

清除,置位,修改

4. RegFieldRdAction

读操作的作用:清零,置位,修改:

Rocket – regmapper – RegField

5. RegFieldDesc

1) class

寄存器域描述,定义寄存器域的各种属性:

Rocket – regmapper – RegField

a. name:名称;

b. desc:描述;

c. group:所在组;

d. groupDesc:组描述;

e. access:访问类型,默认为读写类型;

f. wrType:写类型;

g. rdAction:读的动作;

h. volatile:寄存器的值是否会自动变换;

i. reset:复位值;

j. enumberations:推测为寄存器域各个值代表意义的描述:

Rocket – regmapper – RegField

2) object

创建一个reserved的寄存器域:

Rocket – regmapper – RegField

6. RegFieldGroup

使用name和desc描述regs中的寄存器:

Rocket – regmapper – RegField

7. RegReadFn

1) class

读寄存器的函数:

Rocket – regmapper – RegField

包含两个参数:

a. combinational:是否为组合逻辑;

b. fn:参数为输入信号,返回值为输出信号的用于生成读取逻辑的函数:

Rocket – regmapper – RegField

2) object

用于生成读取逻辑的辅助方法。

a. 直接传入逻辑生成函数作为参数:

Rocket – regmapper – RegField

b. 使用RegisterReadIO作为参数:

Rocket – regmapper – RegField

RegisterReadIO在RegisterCrossing中定义:

Rocket – regmapper – RegField

c. 只输入oready用于生成读取逻辑:

Rocket – regmapper – RegField

d. 使用ReadValidIO读取:

Rocket – regmapper – RegField

e. 直接使用一个UInt作为读取逻辑的输出:

Rocket – regmapper – RegField

f. 把Unit转换为RegReadFn的隐式类型转换方法:

Rocket – regmapper – RegField

8. RegWriteFn

与RegReadFn同理,用于生成写入逻辑的辅助方法。

9. RegField

用于描述一个寄存器域。

1) case class

定义了寄存器域的比特位宽度,读函数、写函数,描述信息:

Rocket – regmapper – RegField

a. pipelined

读写函数中是否有非组合逻辑:

Rocket – regmapper – RegField

b. readOnly:

生成一个只读版本的拷贝:

Rocket – regmapper – RegField

c. toJson:

把寄存器域的各个属性转换为JSON格式的对象,以便输出:

Rocket – regmapper – RegField

PS. 可以看到这里需要外部提供字节偏移量和位偏移量信息(因为RegField只有位宽度信息,寄存器域可以复用,具体放在哪个位置可以是变化的)。

2) object

辅助方法,用于创建各种类型的寄存器域:

Rocket – regmapper – RegField

其中:

a. ()表示空函数;

b. r:生成只读寄存器;

c. w:生成只写寄存器;

d. w1ToClear:生成一个协议清零的读写寄存器:

Rocket – regmapper – RegField

e. rwReg:为BlackBox寄存器生成读写逻辑:

Rocket – regmapper – RegField

f. bytes:生成一个以字节为单位进行读写的逻辑:

Rocket – regmapper – RegField

其中:

a) fullBytes为全部为有效位的字节;

b) partialBytes为部分位有效位的字节(是否应该为partialByte,因为要么1个字节,要么0个字节,不是复数);

c) padBytes:补到numBytes宽度所需要添加的字节数;

g. 为寄存器reg生成一个以字节为单位进行读写的逻辑:

Rocket – regmapper – RegField

10. HasRegMap

该特征为子类引入一个中断向量表,一个生成寄存器访问逻辑的方法:

Rocket – regmapper – RegField

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,488
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,903
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,736
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,487
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,127
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,289