axi时序图_(AXI)握手协议(pvld/prdy或者valid-ready)中ready打拍技巧

内容提要

  • ready打拍的问题
  • 用FIFO的思路去解决
  • 用Buffer的思路去解决

问题提出:ready时序如何优化?

在valid/ready 握手协议中,valid 与 data的时序优化比较容易理解,(不熟悉valid/ready协议或者valid打拍方法的)大家可以参考上次推送(握手协议(pvld/prdy或者valid-ready或AXI)中Valid及data打拍技巧)。 但是有时候,关键路径是在ready信号上,如何对ready信号打拍呢?

首先将把目标设计想象成一个黑盒子,如图1所示,我们的目标是将READY_DOWN通过打拍的方法获得时序优化。

201fbe35b184ef36760d33cbe8fa8670.png

(图1)

尝试直接对ready打一拍

READY_UP <= READY_DOWN;
VALID_DOWN = valid_up;

(仅示例,非verilog代码。下同)

这样是行不通的。

一个简单的例子(case 1)就是你让READY_DOWN像一个时钟一个,间隔一个cycle起来一次,那么VALID_UP && READY_UP 与 VALID_DOWN && READY_DOWN无法同步,数据无法传输下去。

思路:将其分解成两个interfaces

将ready打拍的逻辑想象成一个黑盒子,去分析这个黑盒子的设计,分为up interface 和down interface将问题细化:

  • up interface 有VALID_UP, DATA_UP, READY_UP
  • down interface 有VALID_DOWN, DATA_DOWN, READY_DOWN 可以总结成下面的样子:
READY_UP <= READY_DOWN; //or READY_UP = function(READY_DOWN_next);
transfer_up = VALID_UP && READY_UP;
transfer_down = VALID_DOWN && READY_DOWN;

如果去解决刚才例子(case 1),那么这个黑盒子:

当READY_UP为高的时候,可以接受数据; 当READY_DOWN为高的时候, 如果我们有数据可发的话,我们可以向downstream发送数据;

是不是很像一个FIFO?

用FIFO去解决

将一个FIFO插在黑盒子这里,那么就会变成这样子:

eba8c4bff4d06418b4859b0cea7d9e5f.png

(图2)

VALID_UP/READ_YUP ==> FIFO ==> VALID_DOWN/READY_DOWN

也就是:

VALID_UP = fifo_push_valid;
READY_UP = fifo_push_ready;
VALID_DOWN = fifo_pop_valid;READY_DOWN = fifo_pop_ready;

现在问题变成了:如何设计这个FIFO呢?

  • 这个FIFO深度多少?
  • 怎么设计,能够保证READY_UP是READY_DOWN打过一拍的呢?

FIFO设计多深?

因为本身valid/ready协议是反压协议(也就是READY_UP为0的时候,不会写FIFO,而不会导致FIFO溢出)而且此处的读写时钟是同一个时钟,是一个同步FIFO,所以FIFO深度是1或者2就足够了。

深度是1还是2要看极端情况下需要存储几笔数据。

简单分析可以知道,只有一种情况会去向FIFO中存储数据:

AXI协议解析(二) 前面说到AXI的五个通道是独立的,但通道间必须保持一定的约定关系: 写回复必须在一次写事务的最后一个写数据之后 读数据必须在接收到读地址信号之后 通道间握手必须满足一定的依赖关系 前两条好理解,重点看一下第三条。之前讲过,为了避免死锁,协议规定发送方的VALID不能依赖接收方的READY;反过来,接收方的READY可以等待,也可以不等待发送方的VALID。当发生一次读传输时,读地址通道中,主机(master)是发送方,而从机(slave)是接收方;在读数据通道中,主机是接收方,从机是发送方,这时的依赖关系是 阅读详情

相关推荐

数字集成电路设计-16-关于AXI协议

引言AXI协议有可能是我们平时电路设计时经常遇到的一个协议,也是一个不错的协议,本小节我们就来熟悉一下。乍一看,AXI协议的信号众多,眼花缭乱,容易发蒙。但其实其基本思想很简单。只要掌握以下几点:1,valid/ready协议axi协议是典型的基于valid/ready协议的总线协议valid/ready协议的优势就是master和slave的相对独立性比较好。对于一次传输,作为master的发

Rill的专栏 1万+

AXI接口设计注意事项

    AXI接口设计注意事项 1、AXI2MEM转换接口设计 AXI2MEM转换接口需要将来自PCIE的AXI信号(时钟为250MHz或者500MHz)转换成100MHz时钟的MEM接口。MEM接口用于SOC总线主端口,用于读写芯片内部模块或者配置寄存器。 2、要点1:能者多劳,快时钟域做复杂处理,满时钟域做简单处理。 快时钟域周期短,为了提高速率,尽量将复杂处理放在快时钟域完成...

IC小鸽的博客 2129

握手协议pvld/prdy或者valid-readyAXI)中ready打拍技巧

AXI握手协议中,如果READY信号有时序问题,怎么修复?

大东山谷——集成电路设计、原创散文 3550

AXIREADYVALID之间握手关系

AXIREADYVALID之间握手需要满足的先后关系。

Kizuna_AI的博客 7762

AXI】解读AXI协议双向握手机制的原理

AMBA3与AMBA4协议AXI双向握手机制的详细解读

weixin_43698385的博客 1万+

ic基础|时序篇:握手协议validready的时序优化

大家好,我是数字小熊饼干,一个练习时长两年半的ic打工人。我在两年前通过自学跨行社招加入了IC行业。当我们遇到时序违例时,通常采用的方式为插入寄存器(打拍或者是后端插入buffer,这对使能信号或数据信号是有用的,但是对于那些需要满足握手协议的信号来说(例如:AXI协议中的多组握手信号xxready和xxvalid)单纯的打拍是行不通的,因为需要满足valid-ready协议,如果仅仅使用打拍很容易丢失数据。

demayiya的博客 3378

AXI Register slice的个人理解

最近接到一个任务,写一个axi register slice。然后就去找了一下代码,github上有开源的axi register slice代码,链接如下,如有需要可自取。因为之前在本站找过axi register slice的博客,发现没有博客写的特别通俗,就是那种像我这样的傻瓜也能很快看懂的博客,要么就是有图没代码,要么就有代码没图,让我这样的人怎么办啊。所以我自己写一篇吧,以后忘了的话,再回来看看。那么axi register slice到底是要实现什么功能呢?

weixin_45618734的博客 1万+

axi 协议validready 的坑

WSTRB是AXI协议中实现精细粒度字节控制的关键机制,它:支持部分写入操作实现非对齐地址访问在突发传输中提供灵活的字节使能控制是区分AXI与简单总线协议的重要特性窄宽传输是AXI协议支持灵活数据访问的重要特性:- ✅ **提供访问粒度灵活性**,支持不同位宽设备- ⚠️ **可能降低性能**,需要合理优化- 🔧 **通过WSTRB精确控制**,确保数据完整性- 🚀 **优化策略**:数据打包、智能主设备设计。

Ruanyz_china的专栏 1726

关于AXI总线VALIDREADY信号间的关系

http://bbs.eetop.cn/viewthread.php?tid=354830

cy413026的博客 2750

AXI(2)完结

发送方的VALID信号和接收方的READY信号并不需要同时置位,可以发送方先准备好,也可以接收方先准备好。从源设备发出的数据或控制信息保持稳定,直到目标设备驱动 READY 信号为高,表示目标设备接收数据或控制信息。双向握手的机制意味着主机和从机之间传输数据时,都可以控制传输的速率,只有当VALIDREADY同时为高电平时,传输才会发生。例如,首地址0X00,突发长度为8,那么一次就可以往地址0x00-0x07中一共写入8个数据。在一个增量突发中,每个传输的地址都是在前一个传输地址的基础上递增的。

weixin_65994910的博客 1253

今天来聊一个简单的握手打拍技巧

握手协议是数字逻辑设计中最最常见的一种设计了,今天就来聊一聊valid-ready握手时,valid和data的打拍技巧

笨蛋大乌龟的博客 2358

AXI笔记

一、握手机制 VALID/READY 握手机制 AXI 总线共有 5 个独立的通道,分别为写地址、写数据、写回应、读地址、读数据通道。5 条通道相互独立,有一些细小的差别,但共同使用一套握手机制:VALID/READY 机制,来实现信息的传递。作为一种双向流控机制,VALID/READY 机制可以使发送接收双方都有能力控制传输速率。 在握手机制中,通信双方分别扮演发送方(Source)和接收方(Destination),两者的操作(技能)并不相同。 发送方置高 VALID 信号表示发送方已经将数据,地址..

XY_Chang的博客 3197

AXI协议学习笔记

AXI协议总结 全局信号:ACLK, ARESETN. 其中ARESETN必须同步释放。 基本握手信号:VALID/READY。 发送方(source)将VALID置位表示数据有效,接收方(dest)将READY置位表示数据可以被接收。当VALID/READY都为高时,数据有效。 图A3-2~图A3-4显示了几种常见的时序。 但是并不推荐默认将READY置0,因为会浪费一个CLK。(判断VALID并拉高READY耗费一个CLK,source判断READY为高又要一个CLK, 这种情.

Learning & sharing 2208

VALID/READY 握手机制

对于接收方编程来说,检测到 VALID 信号置起,如果系统正忙,完全可以让发送方等待,发送方在完成传输之前都不会置低 VALID 信号,不需要考虑发送方撤销传输的可能。,分别为写地址,写数据,写回应,读地址,读数据通道。机制,指的是发送方通过 VALID 信号置起控制发送速度的同时,接收方也可以通过 READY 信号的置起与否控制接收速度,反压发送方的发送速度。接收方按照协议可以依赖发送方,但如果此时发送方也依赖接收方,就会造成死锁的情况,所以协议在这里规定了 VALID 信号的主动性。

luoganttcc的博客 1712

data单复数一样吗_(AXI)握手协议pvld/prdy或者valid-ready)中Valid及data打拍技巧

内容提要valid 与data 的时序修复时的打拍如何无气泡?预告:ready修复问题描述AXI 协议使用的是valid-ready握手的方式去传输数据。关于valid ready 握手,有几个要点:数据data使用valid作为有效性指示。当valid为1是,data数据才有效。validready信号同时为高时,数据传输真正发生。valid在没有ready到来的情况下,不能自己变为0。也就是...

weixin_33980357的博客 651

【芯片前端】保持代码手感——握手协议valid打拍时序优化

valid-ready双向握手机制下,对valid和data进行打拍实现对下游接口valid信号时序优化。无论下游ready是否有效,数据均会在寄存器中寄存一拍。要求数据输出不能丢弃或乱序,且下游的valid和data为寄存器输出。 接口如下: module forward_pipe #( parameter WIDTH = 8) ( input clk, input rst_n, input [WIDTH -1:0]data_in, input data_in_val.

moon9999的博客 2656

为什么打两拍可以消除亚稳态的影响?

为什么打两拍可以消除亚稳态的影响? 首先,我们需要了解什么是亚稳态,看下图 简单来说,就是当时钟信号上升沿到来的时候正好采样的数据也在发生变化,但是对于采样的时钟信号,如果想要采样得到一个稳定值,在clk的上升沿的前一段时间有一个建立时间TSU和在clk的上升沿的后一段时间有一个保持时间Th,如果在这两个时间段内采样的信号D发生跳变的话,输出的信号Q就会出现0,1之间跳变的不稳定、不确定状态,从而对采样结果产生干扰,这就是亚稳态。 在建立时间TSU期间,若D不能保持稳定状态,则寄存器则无法

weixin_61098515的博客 3530

Verilog时序优化之Skip_Buffer(validready寄存器打拍

Verilog 时序优化 Skip_Buffer validready寄存器打拍握手

qq_34839501的博客 1278
上一篇: 大数据管家abm 计算机任务监控_大数据的资源管理模块YARN
下一篇: echarts data中name的位置_详细介绍如何计算两条折线的交点并使用Echarts展示以及图表优化...
高黑
博客等级 码龄9年 33粉丝 88原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值