• Rocket


    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. 附录

     

     

  • 相关阅读:
    mysql忘记root密码解决办法
    laravel 获取所有表名
    跳转/传值(从页面到php文件)
    smarty foreach
    radio单选框
    dedecms实例化对象
    file_get_contents()
    if($a)
    bug解决思路
    git查看远程仓库地址
  • 原文地址:https://www.cnblogs.com/wjcdx/p/11618991.html
Copyright © 2020-2023  润新知