https://mp.weixin.qq.com/s/0ob-Fq-ZOoj-_S7pTJu6rQ

 
介绍TLArbiter的实现,主要关注如何实现burst的多个beat的输出。
 
 
1. beatsIn/sourcesIn
 
对输入参数进行简单处理。输入参数为:
 
sources为不定参数:
二元组第一个元素为所需时钟周期即心跳(beat)的个数,第二个元素为输入的DecoupledIO。
 
2. beatsLeft
 
剩余的beat数:
 
3. idle
 
如果剩余的beat数为0,则Arbiter空闲(idle):
 
4. latch
 
是否可以把beat数目的初始值存入beatsLeft中:
 
使用方式:
 
5. valids/readys
 
a. 获取sources的valid信号;
b. 根据policy生成ready信号,以决定哪一个source可以输出;
 
6. winner
 
标志着每一个source是否可以输出:
 
winner为真需要满足两个条件:
a. valid为真:需要输出;
b. ready为真:允许输出;
 
7. initBeats
 
计算beatsLeft的初始值:
a. 根据是否是winner输出每一个source的beats值;
b. 取出仲裁胜出者需要的beats值;
c. 根据latch的值,选择把初始值存入beatsLeft,还是在输出时减一;
d. 只有在输出时beatsLeft才减一:beatsLeft - sink.fire();
 
8. state
 
记录sources的状态:
 
如果idle为真,则把仲裁结果winner在下一个时钟周期存入state中;否则state保持不变。
 
9. allowed
 
是否允许source输出:
 
如果idle为真,则是否允许输出由仲裁结果readys决定;否则当前burst的beats还没有传输完毕,是否允许由state决定,即只允许当前正在传输的source进行输出。
 
10. sink.valid
 
 
如果idle为真,则由valids决定;否则由正在进行传输的source的valid决定。
 
11. sink.bits
 
似乎有点问题,muxState可能为全0,而Mux1H要求muxState中有且只有一个1。这里不深入讨论。
 

Rocket - tilelink - TLArbiter的更多相关文章

  1. Rocket - tilelink - RegisterRouter

    https://mp.weixin.qq.com/s/DaJhf7hEoWsEi_AjwSrOfA   简单介绍RegisterRouter的实现.   ​​   1. 基本介绍   实现挂在Tile ...

  2. Rocket - tilelink - toBools

    https://mp.weixin.qq.com/s/UGMH8EoaVcFkkQW-l4HLWg   分析toBools在Intellij中显示为红色的问题.   ​​   1. 问题   在TLA ...

  3. Rocket - tilelink - Nodes

    https://mp.weixin.qq.com/s/KJ8pVH76rdxPOZ1vE3QlKA   简单介绍tilelink对Diplomacy Nodes的实现.   ​​   1. TLImp ...

  4. Rocket - tilelink - AsyncCrossing

    https://mp.weixin.qq.com/s/v8plWCBD8vZkxykjJe4TCg   介绍AsyncCrossing的实现,主要介绍如何实现diplomacy Node和LazyMo ...

  5. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  6. Rocket - tilelink - Parameters

    https://mp.weixin.qq.com/s/1I6DcONr0Mg7xiX8F1C7SQ   简单介绍TileLink相关的参数实现(具体问题暂时不展开,后续用到时再做分析).   ​​   ...

  7. Rocket - tilelink - Bundles

    https://mp.weixin.qq.com/s/jrqBg2AIpQogBrpwNXjmwg   简单介绍Bundles文件中对TileLink规范(1.7.1)的定义. 参考链接:https: ...

  8. Rocket - tilelink - TLBusWrapper.to

    https://mp.weixin.qq.com/s/jSnhBzU5_ayQCg5fWAcx-g 简单介绍TLBusWrapper.to()的实现.主要介绍确定this{...}对应代码的过程. 1 ...

  9. Rocket - tilelink - BusWrapper

    https://mp.weixin.qq.com/s/03BvgTNQtD75Guco6gUGQg   简单介绍BusWrapper的实现.   1. HasTLBusParams   定义SoC的挂 ...

随机推荐

  1. STM32 CubeIDE快速创建工程(图文详解)

    使用STM32CubeIDE快速创建STM32的HAL库工程. 文章目录 1 STM32CubeIDE Home 2 生成工程 3 程序下载 1 STM32CubeIDE Home 进入到官网的下载界 ...

  2. Android 8.1 关机充电动画(一)模式选择

    system:Android 8.1 platform:RK3326/PX30 uboot kernel Android 8.1 关机充电动画(一)模式选择 Android 8.1 关机充电动画(二) ...

  3. 模板引擎 Thymeleaf 动态渲染 HTML

    1.添加依赖 <!-- Thymeleaf 模板引擎 --> <dependency> <groupId>org.thymeleaf</groupId> ...

  4. 武装你的WEBAPI-OData入门

    本文属于OData系列 目录(可能会有后续修改) 武装你的WEBAPI-OData入门 武装你的WEBAPI-OData便捷查询 武装你的WEBAPI-OData分页查询 武装你的WEBAPI-ODa ...

  5. Codeforces Round #635C Linova and Kingdom 思维

    Linova and Kingdom 题意 现在有一颗n个节点的树,每个节点是一个城市,现在要选出k个城市作为工业城市,其他城市作为旅游城市,现在每个工业城市要派出一名特使前往根节点,每个特使的幸福度 ...

  6. [hdu4888]最大流,判断最大流唯一性

    题意:给一个n*m的矩形,往每个格子填0-k的数字,使得对第i行和为row[i],第i列和为col[i],问是否存在方案,方案是否唯一,如果方案唯一则输出具体方案. 思路:首先根据问题提取对象,行.列 ...

  7. 配置类为什么要添加@Configuration注解呢?

    配置类为什么要添加@Configuration注解呢? 本系列文章: 读源码,我们可以从第一行读起 你知道Spring是怎么解析配置类的吗? 推荐阅读: Spring官网阅读 | 总结篇 Spring ...

  8. Centos ps命令

    输出格式(ps -aux) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND VSZ:占用的虚拟内存大小() RSS: COMMAND: 执 ...

  9. mysql数据库如何修改密码及权限分配

    如何修改Mysql密码 Mysql用户密码采用md5加密函数加密(单向加密) SELECT PASSWORD('root'); -- *81F5E21E35407D884A6CD4A731AEBFB6 ...

  10. Netty 中的粘包和拆包

    Netty 底层是基于 TCP 协议来处理网络数据传输.我们知道 TCP 协议是面向字节流的协议,数据像流水一样在网络中传输那何来 "包" 的概念呢? TCP是四层协议不负责数据逻 ...