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。

最新文章

  1. C#使用Quartz.NET详细讲解
  2. 面试复习(C++)之快速排序
  3. IIS 服务器下载apk文件报404错
  4. PHP中设置时区方法小结
  5. Create Dynamic Modal Dialog Form in AdminLTE Bootstrap template
  6. 最短路径算法——Dijkstra,Bellman-Ford,Floyd-Warshall,Johnson
  7. 关于 "Context" 模式(基于COM思想IUnknown思想)
  8. 【ASP.NET Web API教程】1 ASP.NET Web API入门
  9. Asp.net 视频摘要
  10. eclipse-ee修改字体大小和配置Tomcat服务器
  11. ## Python中的Package和Jupyter中import包问题
  12. python特征提取——pyAudioAnalysis工具包
  13. CentOS 6.3 64位下MySQL5.1.54源码安装配置详解
  14. The connection to the server localhost:8080 was refused - did you specify the right host or port?
  15. teamviewer quicksupport 插件(下载)
  16. 【PHP函数】PHP 去掉字符串中的转义符号
  17. easyui获取选中行上一行的数据
  18. [转帖]SSH 的 三种代理功能.
  19. iOS 解压Assets.car文件
  20. .NET 常用ORM之Gentle.Net

热门文章

  1. 036_python的大文件下载以及进度条展示
  2. 物流配送中心管理系统(SSM+MYSQL)
  3. STM32 基于 CubeMX配置GPIO点亮LED灯(超级详细+图文并茂)
  4. search(12)- elastic4s-聚合=桶+度量
  5. 设计模式之GOF23备忘录模式
  6. Two Operations Gym - 102263M 优先队列水题
  7. 前端:参数传错了,spring-boot:那错误信息我给你显示的友好点儿
  8. git仓促拉去提交输入密码读取钥匙串
  9. java ->斗地主洗牌
  10. Winform GDI+绘图二:绘制旋转太极图