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

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

3天内不再提示

控制类寄存器2种实现方式

倩倩 来源:CSDN 作者:CSDN 2022-09-05 14:54 次阅读

控制类寄存器2种实现方式

在数据处理过程中,需要一些可配置的寄存器,用于控制数据处理过程中的行为,如果各类处理信号的使能信号,还有功能模块的特定控制信号。

例如:在ETH处理过程中,有数据流使能控制,最大包长度控制信号。

例如:在PCIE中,存在bus master enable信号,max payload size等控制信号。

那么这类可配置的控制类寄存器是如何在数据处理过程中起作用的呢?有哪些实现方式呢?

下图所示,data_in为输入数据,data_out是处理后的数据,处理过程中data_proc_a/b/c需要用到控制寄存器对处理进行处理,client_id表示data的id号,模块采用时分复用的方式处理不同id的data。

60356820-2cd0-11ed-ba43-dac502259ad0.png

实现方式1: 寄存器信号线输出

通过寄存器信号线的方式输出给需要的模块,如图方式1,cfg module把所有的控制信号都暴露出来,送给需要的模块data_proc_a/b/c,data有效时,根据client_id选择需要的控制信号。

优点:

-此类设计简单,容易理解与实现。

-此设计限制小,可以用于各类情况下的设计

缺点:

-控制信号线较多,高频设计不利于布局布线

-不利于规模扩展,例如client_id数量从8增加到16,需要修改大量的代码。

实现方式2: 逻辑通过类ram接口主动获取

此设计中,控制寄存器以ram(或者类似)的方式实现,数据处理模块data_proc_a主动读取控制信号,当有效数据来临时,以client_id作为rdaddr读取,一次读取处理流程中所需的控制信号(rdata),进行数据处理,并且将控制信号(rdata)进行pipe与data对齐,提供给后期模块data_proc_b/c

优点:

-规模扩展方便,例如client_id数量从8增加到16,仅限cfg_ram的规模修改,data_proc_a/b/c仅仅需要修改client_id位宽参数

-控制信号线较少,有利于时序优化和布局布线

缺点:

-此设计适用于数据的pipeline处理,并且ram读出存在一定的读延时,存在一定限制。

一种主动的流控实现方式

1、流控机制

在数据发送过程中,发送者向接收者发送数据,通常需要接收者通知发送者自身是否可以接收数据,当接收者即将无法接收数据时(如FIFO快满时),发送者需要停止发送数据,这就是流控机制。

605c172c-2cd0-11ed-ba43-dac502259ad0.png

2、流控机制过程

初始化流程:

(1)复位释放后,初始化,module b 通过信号fc_update_signal 通知module a 自身fifo深度是多少

(2)Tx_fc_ctrl 收到初始化信息后,得知module b存在有效fifo 缓存,通知ren_ctrl允许产生读使能ren

(3)ren_ctrl产生读使能ren

(4)ren输出给tx_fc_ctrl,module b的有效fifo深度减一

(5)tx_fc_ctrl计算module b是否存在有效数据,有则允许ren_ctrl产生读使能

(6)ren_ctrl产生读使能ren,并通知到tx_fc_ctrl,module b的有效fifo深度减一

(7)tx_fc_ctrl计算module b是否存在有效数据,有则允许ren_ctrl产生读使能,没有则不允许ren_ctrl产生读使能

(a)Module b模块fifo已存在有效数据,从fifo读取一个数据,此时已释放出一个fifo深度

(b)Fc_update更新fc_update_signal,通知tx_fc_ctrl模块module b已释放一个fifo空间,tx_fc_ctrl记录的有效深度加1

(c)此时tx_fc_ctrl允许ren_ctrl产生读使能

3、特点说明

此种流控机制需要发送端和接收端配合管理有效缓存空间。相对比单一bit的flow ctrl信号来说,稍微复杂一些,但是有个显著的优点,相对于被动流控机制(见IC设计高级006:流控反压机制导致的路径延时),能够有效减少module b中的Data fifo的深度。

如图,data pipeline的深度是不确定的,可能是20~100个周期,而流控信号只有4个pipe,在考虑其他方面的延时有3拍,

不考虑性能的情况下:保证不溢出,module b的fifo深度最小需要:

本文流控机制:深度为1 ; 被动流控机制:深度为1+100+4+3

满足最大性能的情况下,保证下游不断流:module b的fifo深度需要:

本文流控机制:100+4+3+1 ; 被动流控机制:2*(100+4+3+1)

审核编辑 :李倩

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

    关注

    30

    文章

    5037

    浏览量

    117764
  • 控制信号
    +关注

    关注

    0

    文章

    118

    浏览量

    11837

原文标题:IC设计知识点:控制类寄存器两种实现方式等

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    loop指令执行时,隐含的寄存器

    当执行loop指令时,隐含的寄存器是CX寄存器。CX寄存器是循环计数器寄存器,它存储了循环的迭代次数。 在汇编语言中,loop指令用于实现
    的头像 发表于 02-14 16:15 417次阅读

    CPU的6个主要寄存器

    CPU寄存器是中央处理器内的组成部分,是有限存贮容量的高速存贮部件。寄存器是CPU内部的元件,包括通用寄存器、专用寄存器控制
    的头像 发表于 02-03 15:15 1140次阅读

    移位寄存器的工作原理 移位寄存器左移和右移怎么算

    移位寄存器是一种用于在数字电路中实现数据移位操作的基本电路元件。它由多个触发器以及相关控制电路组成,具有存储、接受和移动数据的功能。移位寄存器可以分为两种类型:串行移位
    的头像 发表于 01-18 10:52 1668次阅读

    labview读取三菱plc寄存器内容

    如何使用LabVIEW读取三菱PLC的寄存器内容,并提供一些实例代码和注意事项。 首先,我们需要了解PLC寄存器的基本概念。PLC寄存器是一种用于存储数据的内部变量,被用于传输和保存信息。在三菱PLC中,常见的
    的头像 发表于 12-27 16:31 736次阅读

    gic的寄存器 gicv3的LPI中断

    (1)gicv2的寄存器 gicv2寄存器,都是使用memory-mapped的方式去访问的 • ◾GICD_: distributor的寄存器 • ◾GICH_: 虚拟interfa
    的头像 发表于 11-08 16:09 292次阅读

    芯片DFX:Coresight的寄存器一览

    coresight对于每个coresight组件,规定了一些寄存器,这些寄存器的偏移是固定的,这些寄存器,是必须存在的。但是有的,可以不实现寄存器
    的头像 发表于 11-02 11:45 606次阅读
    芯片DFX:Coresight的<b class='flag-5'>寄存器</b>一览

    CPSR寄存器和APSR寄存器的组成

    程序状态寄存器的作用就是反映处理器的状态信息。在程序运行期间我们可以通过查看程序状态寄存器的状态位来进行程序的分支跳转处理,或者我们可以设置程序状态寄存器的模式位来改变处理器的运行模式,或者我们可以设置程序状态
    的头像 发表于 10-20 11:38 1817次阅读
    CPSR<b class='flag-5'>寄存器</b>和APSR<b class='flag-5'>寄存器</b>的组成

    控制寄存器的两种实现方式

    在数据处理过程中,需要一些可配置的寄存器,用于控制数据处理过程中的行为,如果各类处理信号的使能信号,还有功能模块的特定控制信号。
    的头像 发表于 10-17 10:36 311次阅读
    <b class='flag-5'>控制</b>类<b class='flag-5'>寄存器</b>的两种<b class='flag-5'>实现</b><b class='flag-5'>方式</b>

    怎样通过改变寄存器中的内容实现对CPU的控制呢?

    寄存器是CPU中程序员可以用指令读写的部件,通过改变寄存器中的内容实现对CPU的控制
    的头像 发表于 09-20 15:49 782次阅读
    怎样通过改变<b class='flag-5'>寄存器</b>中的内容<b class='flag-5'>实现</b>对CPU的<b class='flag-5'>控制</b>呢?

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类。
    的头像 发表于 07-21 16:59 2982次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    寄存器是什么 掌握使用寄存器做设计需要注意的事项

    既然RTL是以寄存器行为为基础,那么就必须先了解寄存器是什么,并且掌握使用寄存器做设计需要注意的事项。
    的头像 发表于 07-13 15:38 884次阅读
    <b class='flag-5'>寄存器</b>是什么 掌握使用<b class='flag-5'>寄存器</b>做设计需要注意的事项

    RAL寄存器模型操作指南

    寄存器模型操作,指的是通过寄存器模型对RTL中寄存器进行读写访问,或者同步寄存器模型与RTL中寄存器的值。
    的头像 发表于 07-12 09:37 707次阅读
    RAL<b class='flag-5'>寄存器</b>模型操作指南

    MIPI SoundWire:通过批量寄存器访问实现更高的带宽

    MIPI SoundWire 提供了一种可选机制,用于以比强制命令机制更高的带宽传输寄存器操作。批量寄存器访问(BRA)协议是一种特殊的数据传输格式,以实现更高的带宽。虽然普通命令只能以每帧一个命令的速率驱动,但批量
    的头像 发表于 05-26 16:05 788次阅读

    基于移位寄存器TDM的实现方式

    设计中两片FPGA分割边界的数据Sig1、Sig2、Sig3、Sig4……等一大波的信号被并行地加载到传输时钟的上升沿上的移位寄存器中,并用相同的时钟移出。
    发表于 05-26 14:08 122次阅读
    基于移位<b class='flag-5'>寄存器</b>TDM的<b class='flag-5'>实现</b><b class='flag-5'>方式</b>

    基于移位寄存器的TDM的实现方式

    设计中两片FPGA分割边界的数据Sig1、Sig2、Sig3、Sig4……等一大波的信号被并行地加载到传输时钟的上升沿上的移位寄存器中,并用相同的时钟移出。
    发表于 05-23 15:42 209次阅读
    基于移位<b class='flag-5'>寄存器</b>的TDM的<b class='flag-5'>实现</b><b class='flag-5'>方式</b>