• Rocket


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

     

    简单介绍TLDebugModuleOuterAsync的实现。

     

     

    1. dmi2tl

     

    dmi2tl是TLDebugModuleOuterAsync中的一个子模块,用于把dmi接口转换为tilelink接口。

     

    其结构图如下:

     

    2. dmiXbar

     

    dmiXbar是一个TLXbar模块,用于连接多个TileLink模块:

     

    3. dmOuter

     

    dmOuter也是一个子模块:

     

    4. intnode

     

    intnode是一个别名,dmOuter.intnode经过一个IntSyncCrossingSource生成的结构:

     

    结构示意如下:

     

    5. dmiInnerNode

     

    dmiInnerNode是dmiXbar.node经过TLAsyncCrossingSource之后生成的结构:

     

    结构示意如下:

     

    6. 内部子节点

     

    1) TLDebugModuleOuterAsync各个内部子节点如下:

     

     

    2) 对内部部分节点进行了连接:

     

    结构示意图如下:

     

    可以看到io.dmi经过dmi2tl转换为tilelink接口,连接到dmiXbar节点。

    a. 进而连接到dmOuter节点的dmiNode访问dmOuter中的寄存器;

    b. 也经过TLAsyncCrossingSource节点跨域与inner节点连接;

     

    7. lazy val module

     

    lazy val module实现了TLDebugModuleOuterAsync的内部逻辑。

     

    1) 这里声明了IO接口:

     

    2) 又进行了一定的接口连接:

     

     

    示意图如下(可以单独打开图片查看):

     

    8. 总结

     

    1) io.dmi

     

    io.dmi用于实现DMI访问。通过DMI接口读写DMI地址空间的寄存器对调试模块进行控制。

     

    在实现中,DMI地址空间被分为了outer和inner两个部分。outer部分对应的是dmiNode:TLRegisterNode;inner部分通过TLAsyncCrossingSource模块跨域进行访问。

     

    2) io.ctrl

     

    io.ctrl的定义如下:

    其方向无论是在TLDebugModuleOuter中还是在TLDebugModuleOuterSync中都没有进行转向(flip)。所以这里就是:

    a. debugUnavail从outerSync输出到outer

     

    debugUnavail用于从外部控制调试模块是否可用,在outerSync内部并没有被使用。

     

    b. ndreset从outer输出到outerSync

     

    ndreset的值来自于DMCONTROL寄存器的ndmcontrol位:

     

    其意义在于复位系统中除调试模块之外的其他部分:

     

    ndreset最终用于控制系统其他模块复位:

     

    c. dmactive从outer输出到outerSync;

     

    dmactive的值来自于DMCONTROL寄存器的dmactive位:

     

    用于复位调试模块:

     

    3) io.innerCtrl

     

    io.innerCtrl定义如下:

     

    根据注释,用于从outer传递控制信息到inner。因为其定义中没有方向信息,所以整个结构全部信号值传递的方向是一致的:都是从outer到inner。

     

  • 相关阅读:
    crontab与系统时间不一致
    MySQL构造测试数据
    【SQL优化】SQL优化工具
    mysql case when then 使用
    update没带where,寻找问题的思路
    线程池
    线程理论
    数据共享
    进程池
    管道
  • 原文地址:https://www.cnblogs.com/wjcdx/p/12639751.html
Copyright © 2020-2023  润新知