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

 

简单介绍Crossing的实现。

 

1. IntXing

 

这是一个LazyModule:

Rocket - interrupts - Crossing

1) 参数

 

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

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

 

2) diplomacy node

 

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

Rocket - interrupts - Crossing

 

3) lazy module

 

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

Rocket - interrupts - Crossing

 

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

 

Rocket - interrupts - Crossing

 

B. 实现Crossing逻辑

 

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

Rocket - interrupts - Crossing

 

2. IntSyncCrossingSource

 

1) class

 

class IntSyncCrossingSource是一个LazyModule:

Rocket - interrupts - Crossing

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

B. node为diplomacy节点;

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

 

2) object

 

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

Rocket - interrupts - Crossing

 

3. IntSyncCrossingSink

 

用于创建一个下游LazyModule:

Rocket - interrupts - Crossing

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

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

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

 

4. CrossingHelper

 

1) IntInwardCrossingHelper

 

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

Rocket - interrupts - Crossing

 

2) IntOutwardCrossingHelper

 

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

Rocket - interrupts - Crossing

 

5. 附录

 

 

相关文章:

  • 2021-06-20
  • 2022-02-06
  • 2021-07-27
  • 2022-12-23
  • 2021-11-30
  • 2021-12-16
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-15
  • 2021-05-19
  • 2021-06-09
相关资源
相似解决方案