首页 > 其他 > 详细

Rocket - interrupts - Crossing

时间:2019-10-03 10:30:01      阅读:59      评论:0      收藏:0      [点我收藏+]

https://mp.weixin.qq.com/s/nSX4prXFb4K5GSUhPtOUCg

 

简单介绍Crossing的实现。

 

1. IntXing

 

这是一个LazyModule:

技术分享图片

1) 参数

 

a. sync:表示同步所需要的时钟周期数。

b. p:隐式参数,表示外部配置;

 

2) diplomacy node

 

用于与其他diplomacy node连接以及协商参数的节点,在这里是一个适配器节点:

技术分享图片

 

3) lazy module

 

lazy module用于实现IntXing的内部逻辑:

技术分享图片

 

A. 成对的输入边和输出边

 

技术分享图片

 

B. 实现Crossing逻辑

 

这里直接使用SynchronizerShiftReg接收in的输入,并输出到out:

技术分享图片

 

2. IntSyncCrossingSource

 

1) class

 

class IntSyncCrossingSource是一个LazyModule:

技术分享图片

A. 参数alreadyRegistered表示输入in是否已经过一个异步复位寄存器;

B. node为diplomacy节点;

C. lazy module实现IntSyncCrossingSource节点的逻辑;这里使用异步复位寄存器把输入in的数据输出到out;

 

2) object

 

伴生对象用于创建一个IntSyncCrossingSource,并返回其中的diplomacy node,以与其他节点连接:

技术分享图片

 

3. IntSyncCrossingSink

 

用于创建一个下游LazyModule:

技术分享图片

1) 参数sync:上游到下游的Crossing所需要的时钟周期数;

2) diplomacy node:IntSyncSinkNode类型的下游节点;

3) lazy module:使用同步移位寄存器(SynchronizerShiftReg)实现Crossing逻辑;

 

4. CrossingHelper

 

1) IntInwardCrossingHelper

 

为参数node,根据ClockCrossingType生成相应的Crossing连接。其中,参数node作为下游节点:

技术分享图片

 

2) IntOutwardCrossingHelper

 

为参数node,根据ClockCrossingType生成相应的Crossing连接。其中,参数node作为上游节点:

技术分享图片

 

5. 附录

 

 

Rocket - interrupts - Crossing

原文:https://www.cnblogs.com/wjcdx/p/11618991.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!