Rocket - regmapper - RegisterCrossing
https://mp.weixin.qq.com/s/82iLT-fmDg9Comp2p9bxKg
简单介绍RegisterCrossing的实现。
1. BusyRegisterCrossing
简单的控制状态机,用于控制是否可以发起请求,即是否已经存在正在处理的请求:
1) io
控制接口如下图:
a. master_request_valid/master_request_ready
表示上游是否发起请求(valid),下游是否准备好接收(ready)。
b. master_response_valid/master_response_ready
表示是否有响应信息(valid),上游是否准备好接收(ready)响应消息。
c. crossing_request_valid/crossing_request_ready
表示要发送给跨时钟结构的请求(valid),以及经过跨时钟结构传递过来的下游是否准备好接收的信号(ready)。
2) busy
表示是否有请求正在处理,此时不可以接收新的请求:
3) bypass
相当于loopback,如果bypass为真,则不把请求向跨时钟结构传递,而是直接向上游返回响应消息:
2. RegisterCrossingAssertion
这个断言通过的条件为:
a. io.master_bypass:即上游要求绕过跨时钟结构,直接回复响应消息,则不需要关注下游的状态;
b. !up:下游没有up,那么也不会使用跨时钟结构;
c. !io.slave_reset:下游不在复位状态,那么可以正常使用跨时钟结构;
3. RegisterWriteIO
写寄存器的接口:
a. request:写请求的valid/ready控制接口;
b. gen:要写的数据;
c. response:写请求的响应消息的valid/ready控制接口;
d. Bool():响应消息;
4. RegisterWriteCrossingIO
增加了时钟和复位信号的跨时钟写寄存器接口:
a. master是指跨时钟结构上游,slave是指跨时钟结构下游;
b. master_clock/master_reset:主时钟和复位信号;
c. master_bypass:是否绕过跨时钟结构;
d. master_port:写接口,包括valid/ready控制及数据;
e. slave_clock/slave_reset:从时钟和复位信号;
f. slave_register:跨越时钟过来的写的数据;
g. slave_valid:slave_register中的内容是否合法;
5. RegisterWriteCrossing
跨时钟域写寄存器模块:
分为三个主要部分:
a. io:输入输出接口;
b. control:控制模块;
c. crossing:跨时钟模块;
1) 连接时钟和复位信号
2) 连接control模块
3) crossing上游连接
4) crossing下游连接
5) assert
6. RegisterReadIO
读寄存器接口:
a. request:请求控制接口;
b. response:响应消息控制及数据接口;
7. RegisterReadCrossingIO
加入时钟和复位信号的跨时钟读寄存器接口:
8. RegisterReadCrossing
跨时钟域读寄存器模块:
9. AsyncRWSlaveRegField
用于生成异步读写的逻辑和寄存器域:
1) 参数
2) 异步复位寄存器
3) 跨时钟写模块
4) 跨时钟数据写入寄存器
5) 跨时钟读模块
6) 从寄存器跨时钟读取
7) 返回参数
a. async_slave_reg.io.q:寄存器中存储的数据;
b. RegField(width, rd_crossing.io.master_port, wr_crossing.io.master_port, desc):使用跨时钟读写模块的寄存器域;
Rocket - regmapper - RegisterCrossing的更多相关文章
- Rocket - regmapper - RegMapper
https://mp.weixin.qq.com/s/aXxgzWwh6unuztjgyVX0iQ 简单介绍RegMapper的实现. 1. 简单介绍 RegMapper使用指定的输入接口,为一组寄存 ...
- Rocket - regmapper - RegField
https://mp.weixin.qq.com/s/7WKB1QxcVzqm2Q7bWcKHzA 简单介绍RegField的实现. 1. 简单介绍 定义寄存器域相关的参数类型. 2. RegFiel ...
- 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 ...
随机推荐
- 区间dp C - Two Rabbits
C - Two Rabbits 这个题目的意思是,n块石头围一圈.一只兔子顺时针,一只兔子逆时针(限制在一圈的范围内). 这个题目我觉得还比较难,不太好想,不过后来lj大佬给了我一点点提示,因为是需要 ...
- k近邻法(二)
上一篇文章讲了k近邻法,以及使用kd树构造数据结构,使得提高最近邻点搜索效率,但是这在数据点N 远大于 2^n 时可以有效的降低算法复杂度,n为数据点的维度,否则,由于需要向上回溯比较距离,使得实际效 ...
- HMM-前向后向算法与实现
目录 基本要素 HMM三大问题 概率计算问题 前向算法 后向算法 前向-后向算法 基本要素 状态 \(N\)个 状态序列 \(S = s_1,s_2,...\) 观测序列 \(O=O_1,O_2,.. ...
- es6中 var 和 let的区别
区别1:var没有块级作用域,只有 函数级作用域 和 全局作用域:let有块级作用域 function fn() { { var a = 10; } console.log(a) //输出10 } f ...
- [NBUT 1224 Happiness Hotel 佩尔方程最小正整数解]连分数法解Pell方程
题意:求方程x2-Dy2=1的最小正整数解 思路:用连分数法解佩尔方程,关键是找出√d的连分数表示的循环节.具体过程参见:http://m.blog.csdn.net/blog/wh2124335/8 ...
- python --整理数据结构(列表)
该整理来源于:https://www.runoob.com/python3/python3-data-structure.html 列表 python中列表是可变的,这是它区别于字符串和元组的最重要的 ...
- 「雕爷学编程」Arduino动手做(19)—震动报警模块
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器和模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里 ...
- OGG FOR BigData(Hive) GoldenGate 性能测试
版本信息: Oracle GoldenGate Command Interpreter Version 12.2.0.1.160419 OGGCORE_12.2.0.1.0OGGBP_PLATFORM ...
- Java基础之值传递
一.传递类型 我们从c语言开始学习程序设计语言时就知道,参数的传递类型一般有两种:值传递和引用传递.那么什么是值传递什么是引用传递呢? 值传递:指在调用方法时将实际参数的值拷贝一份传递给方法,这样方法 ...
- 3.2 Go整数类型
1. Go整数类型 Go语言的数值类型包含不同大小的整数型.浮点数和负数,每种数值类型都有大小范围以及正负符号. 官方文档解释数据类型 int类型中哪些支持负数 有符号(负号):int8 int16 ...