https://mp.weixin.qq.com/s/jkBP6ZjEbgm-SVDpLUMjlA

简单介绍Custom的实现。

1. DebugCustomParams

包含两个参数:

a. addrs: 地址;

b. width: 数据宽度;

2. DebugCustomNull

定义向上游传递的空参数:

3. DebugCustomBundle

定义DebugCustom节点连接所需要的Bundle:

从一个节点的角度看,其定义如下:

其中:

a. 相连节点发送输入地址(addr),以及地址是否合法的标志(valid);

b. DebugCustomBundle所属节点输出是否准备好接收地址的信号(ready);

c. DebugCustomBundle所属节点输出地址对应的数据(data);

4. DebugCustomImp

DebugCustom节点实现:

DUEB参数分别为:DebugCustomParams, DebugCustomNull, DebugCustomParams, DebugCustomBundle。

5. DebugCustomSink

定义下游节点,根据注释,下游节点是调试模块:

6. DebugCustomSource

定义上游节点,根据注释,上游节点是数据源:

7. DebugCustomNexusNode

定义用于连接多个数据源的联系节点:

8. DebugCustomXbar

实现联系节点的LazyModule:

1) diplomacy node

LazyModule DebugCustomXbar中的节点是一个DebugCustomNexusNode:

A. sourceFn:用于把上游参数向下游传递的函数:

a. 若没有上游节点,则返回一个特殊的参数:地址为空,数据宽度为0;

b. 否则,返回去重后的地址,以及最大数据宽度;

B. sinkFn:用于把下游参数向上传递的函数:

这里不需要向上传递任何参数;因为调试模块需要被调试模块的信息,而被调试模块则不需要知道调试模块的信息。

C. 连接图:

2) lazy module

lazy module用于根据输入边和输出边实现Xbar的功能:

A. 输出边只有一个,即一个Xbar上可以连接多个被调试模块,但只连接一个调试模块:

B. 取出上下游连接边:

C. 把sources的地址逐个与sink.addr相比较,并根据前一个比较的结果,输出比对结果:

D. 根据addr选择的source,把地址和地址是否合法的信号输出到对应的source中:

E. 根据选择结果,以及source是否ready来向下游输出ready信号;只有选择的source输出的ready信号为真,才会向sink.ready输出真;

F. 根据选择结果,向调试模块返回数据:

这里应该有点问题:

在Mux(i.ready, i.data, 0.U)中只判断i.ready是不够的,需要判断d & i.ready。因为i.ready是source输出,而多个source的ready可以同时为真,此时返回的result就是多个source的data或在一起,是错误的。

最新文章

  1. 探索UDP套接字编程
  2. SASS用法指南-转
  3. 更改Apache默认网站根目录
  4. Linux下如何查看自己的服务器有没有无线网卡
  5. 《FreeSWITCH: VoIP实战》:SIP 模块 - mod_sofia
  6. Linux系统环境变量的四个配置文件的关系
  7. Android Notification通知详细解释
  8. (简单) POJ 1062 昂贵的聘礼,Dijkstra。
  9. PE文件详解(三)
  10. 我发起了一个 ILBC 的 子项目 ILBC Studio
  11. iframe与主框架跨域相互访问方法
  12. Nodejs全局安装和本地安装的区别
  13. 树莓派上使用mdk3对无线热点进行DoS攻击
  14. Space Ant
  15. 使用p3p跨域设置Cookie
  16. VMware文章总结
  17. UVA-1579 Matryoshka (区间DP)
  18. jQuery之noConflict() 方法
  19. [ 转载 ] Mysql 数据库常用命令
  20. 彻底搞懂JavaScript中的继承

热门文章

  1. 补一下昨天的博客 J - Sabotage 网络流
  2. Kubernetes笔记(三):Gitlab+Jenkins Pipeline+Docker+k8s+Helm自动化部署实践(干货分享!)
  3. Java语言简介、基础组成、封装、继承、多态、抽象类、内部类、接口
  4. [csu/coj 1080]划分树求区间前k大数和
  5. Coursera课程笔记----C++程序设计----Week3
  6. Python --函数学习2
  7. 页面中js接收tp5 assign方式传过来的数组对象
  8. java -类加载器与反射
  9. java ->IO流_字符流
  10. java ->大的数据运算(BigInteger)