0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于打拍优化时序你真的全面了解吗?

FPGA之家 来源:CSDN技术社区 作者:数字芯片实验室 2021-04-27 14:15 次阅读

如果你参加过IC校招面试,自然会被问到“setup/hold的概念,以及setup/hold违例怎么办?”

这时候,你肯定会立马在脑海中从打拍或者插buffer两个答案中选一个。但是在实际项目中,往往没有这么简单。举一个实际的场景:

2d1e480e-a67f-11eb-aece-12bb97331649.png

AXI master和AXI slave这一簇信号出现setup时序违例怎么办?

1、从AXI master 到AXI slave 出现setup违例;

2、从AXI slave 到AXI master出现setup违例;

3、两者都出现setup时序违例。

所以AXI master和AXI slave之间的打拍会存在4中模式:

Forward Registered :对valid和payload路打拍

Backward Registered :对ready路打拍

Fully Registered :同时对valid/payload路和ready路打拍

Pass Through Mode:Bypass,均不打拍

这个问题没那么容易或者说不能够直接打拍,是因为这一簇信号遵循valid-ready协议,需要打拍的信号间存在时序的耦合

所以问题就简化成如何在遵循valid -ready协议的master和slave 之间完成“打拍”,或者说在打拍的同时处理valid-ready协议。

Forward Registered

2d2f1292-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_dst 《= 1’d0; else if (valid_src == 1‘d1) valid_dst 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_dst 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_dst 《= ’d0; else if (valid_src == 1‘d1 && ready_src == 1’d1) payload_dst 《= #`DLY payload_src;end ready_src = (~valid_dst) | ready_dst

2e3ed10e-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Forward Registered 打拍代码的几个输出端口

valid_dst:在master发请求(拉高valid_src)时拉高valid_dst,直到当前master没有valid请求并且slave可以接收请求(拉高ready_dst)时拉低valid_dst,表示一次传输完成。

payload_dst:在master发请求(拉高valid_src),并且前面没有请求、请求已经被接收或者正在被接收时将payload_src打拍赋给payload_dst。

其实master本身也会遵循valid-ready协议,payload_src和valid_src做同样处理就行,即也可以在(valid_src == 1‘d1 && ready_src == 1’d0)时进行赋值,因为此时payload_src输入应该约束保持原始数据。

ready_src:register slice或者slave可以接收数据时拉高ready_src.

Backward Registered

2e49a4b2-a67f-11eb-aece-12bb97331649.png

always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) valid_tmp0 《= 1’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) valid_tmp0 《= #`DLY 1’d1; else if (ready_dst == 1‘d1) valid_tmp0 《= #`DLY 1’d0;end always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) payload_tmp0 《= ’d0; else if (valid_src == 1‘d1 && ready_dst == 1’d0 &&valid_tmp0 == 1‘d0) payload_tmp0 《= #`DLY payload_src;end assign payload_dst = (valid_tmp0 == 1’d1) ?payload_tmp0 : payload_src; always @(posedge clk or negedge rst_n)begin if (rst_n == 1‘d0) ready_src 《= 1’d0; else ready_src 《= #`DLY ready_dst;end

Backward Registered 打拍相比较Forward Registered 会复杂点,因为存在slave没有ready时master发来请求,需要暂存payload的场景。

2e73e8d0-a67f-11eb-aece-12bb97331649.png

现在来分析下上述Backward Registered打拍代码的几个输出端口:

ready_src:对ready通路直接进行打拍。

valid_dst:当slave没有ready,master发来请求时拉高标志位valid_tmp0,表示下一次slave准备好之后应该从register slice内暂存的payload拿数据

payload_dst:当slave没有ready,master发来请求时暂存payload到payload_tmp。最终的payload_dst根据标志位valid_tmp0从payload_tmp和payload_src之间选择

Fully Registered

类似于,简单理解就是个乒乓BUFFER,使用非空信号做valid_dst;payload的非满信号做ready_src

Pass Through Mode

直接相连

通过上述分析,可以使用register slice mode参数化的库,在后端要求AXI BUS打拍时直接调用,而无需重复造轮子。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • IC
    IC
    +关注

    关注

    36

    文章

    5882

    浏览量

    175120
  • 时序
    +关注

    关注

    5

    文章

    384

    浏览量

    37255
  • Setup
    +关注

    关注

    0

    文章

    30

    浏览量

    11961
  • MASTER
    +关注

    关注

    0

    文章

    103

    浏览量

    11253

原文标题:打拍优化时序不像听起来那么简单

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    了解TI基于PCB布线规则的DDR时序规范

    电子发烧友网站提供《了解TI基于PCB布线规则的DDR时序规范.pdf》资料免费下载
    发表于 10-15 11:47 1次下载
    <b class='flag-5'>了解</b>TI基于PCB布线规则的DDR<b class='flag-5'>时序</b>规范

    关于工厂人员定位,这几点了解吗?

    工厂人员定位可以实现人员实时定位、电子围栏报警、历史轨迹查询、事故追溯等功能,那除了这些,工厂人员定位系统,还有哪些亮点功能,了解过吗?下面详述关于云酷科技工厂人员定位的特色功能。智能门禁联防
    的头像 发表于 09-18 10:16 233次阅读

    认识贴片电阻吗,对他了解多少?

    认识贴片电阻吗,对他了解多少?
    的头像 发表于 08-27 15:49 346次阅读
    <b class='flag-5'>你</b>认识贴片电阻吗,<b class='flag-5'>你</b>对他<b class='flag-5'>了解</b>多少?

    优化 FPGA HLS 设计

    优化时序 下一步是使用名为InTime 的设计探索工具(https://www.plunify.com/en/free-evaluation/)。(同样,可以自己编写脚本来尝试
    发表于 08-16 19:56

    OpenHarmony之开机优化

    一丶环境信息 源码版本:OpenHarmony-4.1-Release 板子型号:dayu200(RK3568) 二丶Bootchart工具 在开机优化时,我们需要借助Bootchart工具,当前
    发表于 07-01 16:39

    真的了解驻波比吗?到底什么是电压驻波比?

    真的了解驻波比吗?到底什么是电压驻波比?在很长一段时间内,小编对驻波比的了解仅限于这样一个概念:它是一个用于描述波反射大小的物理量,取值范围[1, ∞],值越小,就表示反射越小,值越
    的头像 发表于 05-29 14:27 3404次阅读
    <b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>驻波比吗?到底什么是电压驻波比?

    fpga时序仿真和功能仿真的区别

    FPGA时序仿真和功能仿真在芯片设计和验证过程中各自扮演着不可或缺的角色,它们之间存在明显的区别。
    的头像 发表于 03-15 15:28 1930次阅读

    快速全面了解大模型长文本能力

    关于LLM的长文本能力,目前业界通常都是怎么做的?有哪些技术点或者方向?今天我们就来总结一波,供大家快速全面了解
    发表于 02-22 14:04 809次阅读
    快速<b class='flag-5'>全面</b><b class='flag-5'>了解</b>大模型长文本能力

    关于JTAG口,了解多少?

    设想是JTAG口坏了,于是乎,本人换了usb-blaster,可一点反应也没有。难道真的是JTAG口坏了?于是,本人就去查阅相关资料去搞清楚问题的本质在哪里,下面就是本人的一些收获,分享出来,仅供各位
    发表于 01-19 21:19

    RFID和NFC之间的那些事儿,真的了解吗?

    RFID和NFC之间的那些事儿,真的了解吗?
    的头像 发表于 12-15 09:38 1221次阅读
    RFID和NFC之间的那些事儿,<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>了解</b>吗?

    电源时序控制的正确方法,掌握了吗?

    电源时序控制的正确方法,掌握了吗?
    的头像 发表于 12-15 09:27 1290次阅读
    电源<b class='flag-5'>时序</b>控制的正确方法,<b class='flag-5'>你</b>掌握了吗?

    求助,关于AD2S1210的上电初始化时序问题

    Hi,你好,想请问下关于AD2S1210的上电初始化时序问题, 1、硬件复位引脚RESET引脚如果在VDD达到规定电压之前没有存在低电平的时间,会出现什么问题? 2、硬件复位引脚RESET引脚在
    发表于 12-06 06:55

    时序优化之发送端打拍策略解析

    打拍是进行时需优化最常用和最简单的方式之一,不过握手型协议的打拍和通常的使能型协议是不同的。
    的头像 发表于 12-04 10:23 685次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>优化</b>之发送端<b class='flag-5'>打拍</b>策略解析

    时序优化之接收端打拍策略探讨

    这篇文章是探讨对接收端进行时序优化(即ready打拍,或称backward打拍)的方式。
    的头像 发表于 12-04 10:20 582次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>优化</b>之接收端<b class='flag-5'>打拍</b>策略探讨

    了解PWM“死区”吗?

    了解PWM“死区”吗?
    的头像 发表于 11-24 16:47 948次阅读
    <b class='flag-5'>你</b><b class='flag-5'>了解</b>PWM“死区”吗?