Rocket - regmapper - RegField
https://mp.weixin.qq.com/s/7WKB1QxcVzqm2Q7bWcKHzA
简单介绍RegField的实现。
1. 简单介绍
定义寄存器域相关的参数类型。
2. RegFieldAccessType
访问类型:读、写、读写:
3. RegFieldWrType
写操作类型:
写一清零,写一置位,写一反转,
写零清零,写零置位,写零反转,
清除,置位,修改
4. RegFieldRdAction
读操作的作用:清零,置位,修改:
5. RegFieldDesc
1) class
寄存器域描述,定义寄存器域的各种属性:
a. name:名称;
b. desc:描述;
c. group:所在组;
d. groupDesc:组描述;
e. access:访问类型,默认为读写类型;
f. wrType:写类型;
g. rdAction:读的动作;
h. volatile:寄存器的值是否会自动变换;
i. reset:复位值;
j. enumberations:推测为寄存器域各个值代表意义的描述:
2) object
创建一个reserved的寄存器域:
6. RegFieldGroup
使用name和desc描述regs中的寄存器:
7. RegReadFn
1) class
读寄存器的函数:
包含两个参数:
a. combinational:是否为组合逻辑;
b. fn:参数为输入信号,返回值为输出信号的用于生成读取逻辑的函数:
2) object
用于生成读取逻辑的辅助方法。
a. 直接传入逻辑生成函数作为参数:
b. 使用RegisterReadIO作为参数:
RegisterReadIO在RegisterCrossing中定义:
c. 只输入oready用于生成读取逻辑:
d. 使用ReadValidIO读取:
e. 直接使用一个UInt作为读取逻辑的输出:
f. 把Unit转换为RegReadFn的隐式类型转换方法:
8. RegWriteFn
与RegReadFn同理,用于生成写入逻辑的辅助方法。
9. RegField
用于描述一个寄存器域。
1) case class
定义了寄存器域的比特位宽度,读函数、写函数,描述信息:
a. pipelined
读写函数中是否有非组合逻辑:
b. readOnly:
生成一个只读版本的拷贝:
c. toJson:
把寄存器域的各个属性转换为JSON格式的对象,以便输出:
PS. 可以看到这里需要外部提供字节偏移量和位偏移量信息(因为RegField只有位宽度信息,寄存器域可以复用,具体放在哪个位置可以是变化的)。
2) object
辅助方法,用于创建各种类型的寄存器域:
其中:
a. ()表示空函数;
b. r:生成只读寄存器;
c. w:生成只写寄存器;
d. w1ToClear:生成一个协议清零的读写寄存器:
e. rwReg:为BlackBox寄存器生成读写逻辑:
f. bytes:生成一个以字节为单位进行读写的逻辑:
其中:
a) fullBytes为全部为有效位的字节;
b) partialBytes为部分位有效位的字节(是否应该为partialByte,因为要么1个字节,要么0个字节,不是复数);
c) padBytes:补到numBytes宽度所需要添加的字节数;
g. 为寄存器reg生成一个以字节为单位进行读写的逻辑:
10. HasRegMap
该特征为子类引入一个中断向量表,一个生成寄存器访问逻辑的方法:
Rocket - regmapper - RegField的更多相关文章
- Rocket - regmapper - RegMapper
https://mp.weixin.qq.com/s/aXxgzWwh6unuztjgyVX0iQ 简单介绍RegMapper的实现. 1. 简单介绍 RegMapper使用指定的输入接口,为一组寄存 ...
- Rocket - regmapper - RegisterCrossing
https://mp.weixin.qq.com/s/82iLT-fmDg9Comp2p9bxKg 简单介绍RegisterCrossing的实现. 1. BusyRegisterCrossing 简 ...
- 64位开源处理器Rocket该人士介绍
最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合 ...
- Slack 开源替代品 Rocket.Chat(聊天,文件上传等等)
Rocket.Chat 是特性最丰富的 Slack 开源替代品之一. 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等. Rocket.Chat ...
- web.py 学习(-)Rocket web框架
Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...
- 参加完Rocket MQ Meetup深圳站,回顾和想法
最近一段时间才开始关注云栖社区的公众号,在两周前看到要在深圳科兴科学园办一场Rocket MQ的Meetup.因为从来没有参加过这种线下活动,而且对Rocket MQ比较感兴趣,所以就立即报名参加. ...
- gitlab勾住rocket chat
出于协作的要求, 需要在把gitlab的push event勾到rocket chat上面, 通知协作的其他人. BUT rocket chat提供的脚本没有具体的文件diff, so, 只好修改一下 ...
- Mac 下安装运行Rocket.chat
最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...
- Rocket.Chat 开源IM系统部署
Rocket.Chat 官方给出的文档也个人觉得太麻烦了,并且对ubuntu的支持程度远高于CentOS,自己就折腾写了个安装的笔记,如果是在公司内部或者是部门内部还是很有用处的,比较看中的功能有和g ...
随机推荐
- oracle常用数学函数
数学函数 ABS:(返回绝对值) --返回绝对值 select abs(-1.11) from dual; CEIL:(向上取整) --向上取整 select ceil(3.1415) from du ...
- Python3中正则的贪婪匹配模式
什么是贪婪模式 正则在进行匹配时,从开始位置查找最远的结束位置,这种模式称之为贪婪模式. 在进行HTML标签类似内容获取时,贪婪模式会导致整个内容的返回,需要使用非贪婪模式. 固定的书写规则 : .* ...
- 前后端bug定位
否一致一个商品状态为status,待上架status=0,上架中status=1,下架status=2 前端bug:如:一个商品上架成功后,数据库显示的状态status=1,这时候可能是前端对应值的定 ...
- elasticsearch kibana的安装部署与简单使用(一)
1.先说说es 我早两年使用过es5.x的版本,记得当时部署还是很麻烦,因为es是java写的,要先在机器上部署java环境jvm之类的一堆东西,然后才能安装es 但是现在我使用的是目前最新的7.6版 ...
- java ->会话技术Cookie&Session
会话技术Cookie&Session 会话技术简介 存储客户端的状态 由一个问题引出今天的内容,例如网站的购物系统,用户将购买的商品信息存储到哪里?因为Http协议是无状态的,也就是说每个客户 ...
- 黑马程序员_毕向东_Java基础视频教程——赋值(随笔)
赋值 class Test{ public static void main(String[] args) { int i = 3; // += -= *= /= %= 它们凑一块成为一个运算符 x ...
- 使用gitlab ci构建IOS包并发送通知消息到企业微信
在之前的文章中,我们介绍了使用gitlab ci构建Android包的方法.今天我们介绍使用gitlab ci如何构建IOS包,并且在打包成功或者失败时,如何将消息通知到企业微信. 如果对gitlab ...
- jQuery的面试题
1.$的原理 答案: 1)$("选择器")是先查找DOM元素,再将DOM元素放入jQuery对象中 其中自带优化: 如果选择器是#id,则自动调用getElementById 如果 ...
- scrapy五大核心组件
scrapy五大核心组件 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. ...
- Django之ORM中事务和锁
ORM事务: 事务: 数据库事务(简称:事务)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成. 事务的特点: 并非任意的对数据库的操作序列都是数据库事务.数据库事务拥有以下四 ...