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的更多相关文章

  1. Rocket - regmapper - RegMapper

    https://mp.weixin.qq.com/s/aXxgzWwh6unuztjgyVX0iQ 简单介绍RegMapper的实现. 1. 简单介绍 RegMapper使用指定的输入接口,为一组寄存 ...

  2. Rocket - regmapper - RegField

    https://mp.weixin.qq.com/s/7WKB1QxcVzqm2Q7bWcKHzA 简单介绍RegField的实现. 1. 简单介绍 定义寄存器域相关的参数类型. 2. RegFiel ...

  3. 64位开源处理器Rocket该人士介绍

    最近大概读一点UCB发布时间Rocket处理器的源代码,的每个文件的源代码的功能有一定的一般理解,Mark一点点. Rocket是一家64bit标量处理器,5第一阶段管道,用途risc-v指令集.综合 ...

  4. Slack 开源替代品 Rocket.Chat(聊天,文件上传等等)

    Rocket.Chat 是特性最丰富的 Slack 开源替代品之一. 主要功能:群组聊天,直接通信,私聊群,桌面通知,媒体嵌入,链接预览,文件上传,语音/视频 聊天,截图等等. Rocket.Chat ...

  5. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  6. 参加完Rocket MQ Meetup深圳站,回顾和想法

    最近一段时间才开始关注云栖社区的公众号,在两周前看到要在深圳科兴科学园办一场Rocket MQ的Meetup.因为从来没有参加过这种线下活动,而且对Rocket MQ比较感兴趣,所以就立即报名参加. ...

  7. gitlab勾住rocket chat

    出于协作的要求, 需要在把gitlab的push event勾到rocket chat上面, 通知协作的其他人. BUT rocket chat提供的脚本没有具体的文件diff, so, 只好修改一下 ...

  8. Mac 下安装运行Rocket.chat

    最近花了一周的时间,复习了HTML.CSS.原生JS,并学习了Node.js.CoffeeScript.js.MongoDB,入了下门. 因为准备在Rocket.chat 上做二次开发,所以先下载和安 ...

  9. Rocket.Chat 开源IM系统部署

    Rocket.Chat 官方给出的文档也个人觉得太麻烦了,并且对ubuntu的支持程度远高于CentOS,自己就折腾写了个安装的笔记,如果是在公司内部或者是部门内部还是很有用处的,比较看中的功能有和g ...

随机推荐

  1. 【mybatis】IF判断的坑

    http://cheng-xinwei.iteye.com/blog/2008200 最近在项目使用mybatis中碰到个问题 <if test="type=='y'"> ...

  2. mysql-kettle-superset电商可视化数据分析

    1.项目概述 需求 对电商业务中的用户.商品.订单的数据进行分析,观察运营的情况 架构 业务数据库:Mysql:存储最原始的数据 ETL:Kettle 数据仓库:Mysql:存储需要进行分析处理的数据 ...

  3. strut2 自定义文件上传错误信息

    在文件上传过程中我们可以指定拦截器对文件类型.后缀名.大小进行设定,action中的配置: <interceptor-ref name="fileUpload"> &l ...

  4. spring test---测试SpringMvc初识

    现在越来越多人使用SpringMvc来开发系统,在开发中可定需要对后台url地址请求测试,并且返回预期的结果! Spring提供的测试类MockMvc来进行url地址请求测试,使用方方式: packa ...

  5. VS2019 使用

    下载 官网下载:链接 安装 1.点击下载程序,会显示这个界面 2.点击“继续”,等待安装程序安装完成 4.安装程序下载安装验证完毕,将会提示进入这个界面 5.为了方便起见,这里仅展示安装C++功能,在 ...

  6. loadrunner Error -27985问题

    错误提示:Error -27985: There is no context for HTML-based functions. A previous function may not have us ...

  7. Java注解的定义和使用

    注解也叫元数据,一种代码级别的说明.是jdk1.5后产生的一个特性,与类.接口.枚举同一个档次,他可以在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明.注释: <!--m ...

  8. json 格式要求

    json 格式中, 字符串类型需要使用双引号,不能为单引号

  9. 点击劫持ClickJacking

    原文:https://beenle-xiaojie.github.io/2019/01/07/ClickJacking/ 引言 当我们的页面嵌入到一个iframe中时,安全测试提出一个于我而言很新鲜的 ...

  10. 用window.print()打印如何去掉页眉和页脚

    用window.print()打印如何去掉页眉和页脚 2007-07-12 11:44:52|  分类: javascript 知识|举报|字号 订阅     <script language= ...