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)

审核编辑 :李倩

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

    关注

    31

    文章

    5590

    浏览量

    129100
  • 控制信号
    +关注

    关注

    0

    文章

    200

    浏览量

    12613

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    什么是(UID)寄存器

    产品唯一身份标识(UID)寄存器(80bit) UID寄存器存储了芯片的唯一身份标识符,UID在芯片生产时写入,用户无法修改。UID 寄存器支持以单字节 / 半字 / 全字等方式读取,
    发表于 12-05 06:28

    嵌入式系统必懂的 20 个寄存器

    嵌入式开发看起来很复杂,但很多操作其实都离不开寄存器寄存器就是MCU内部的存储单元,它们控制着处理和外设的行为。熟悉这些寄存器,你就能更
    的头像 发表于 11-14 10:28 664次阅读
    嵌入式系统必懂的 20 个<b class='flag-5'>寄存器</b>

    蜂鸟内核中DMA的硬件实现——寄存器配置

    DMA,Direct Memory Access,直接内存访问,是一不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只需要向DMA控制器下达指令(配置DMA寄存器),传输数据
    发表于 10-24 08:46

    浮点寄存器的添加

    浮点寄存器和整数寄存器是计算机体系结构中的两不同类型的寄存器。 相较于整数寄存器,浮点寄存器
    发表于 10-24 08:22

    NVMe高速传输之摆脱XDMA设计32:寄存器功能验证与分析2

    寄存器最大值为 64’hFFFFFFFFFFFFFFFF,到达最大值后一个时钟周期后翻转回 0, 在随机时刻使用 force 将寄存器赋值临近最大值, 当寄存器达到最大值后, 翻转回到 0, 读取数值为 0, 仿真行为符合设计预
    的头像 发表于 10-14 17:06 475次阅读
    NVMe高速传输之摆脱XDMA设计32:<b class='flag-5'>寄存器</b>功能验证与分析<b class='flag-5'>2</b>

    ‌SN74HCT595 8位移位寄存器技术解析与应用指南

    Texas Instruments SN74HCT595/SN74HCT595-Q1 8位移位寄存器包含8位串进并出移位寄存器,向8位D存储寄存器馈送信号。存储
    的头像 发表于 09-19 14:31 608次阅读
    ‌SN74HCT595 8位移位<b class='flag-5'>寄存器</b>技术解析与应用指南

    SN74LV594A:2-5.5V带输出寄存器的8位移位寄存器技术解析

    Texas Instruments SN74LV594A/SN74LV594A-Q1 8位并行输出串行移位寄存器设计采用2V至5.5V V~CC~ 运行。SN74LV594A-Q1符合汽车应用
    的头像 发表于 09-02 09:42 610次阅读
    SN74LV594A:<b class='flag-5'>2</b>-5.5V带输出<b class='flag-5'>寄存器</b>的8位移位<b class='flag-5'>寄存器</b>技术解析

    Texas Instruments SN74ACT595/SN74ACT595-Q1 SIPO移位寄存器特性/应用/功能图

    Texas Instruments SN74ACT595/SN74ACT595-Q1 8位串行输入并行输出 (SIPO) 移位寄存器,向8位D存储寄存器馈送信号。存储寄存器具有并行输
    的头像 发表于 07-07 15:27 581次阅读
    Texas Instruments SN74ACT595/SN74ACT595-Q1 SIPO移位<b class='flag-5'>寄存器</b>特性/应用/功能图

    Texas Instruments SN74AC596/SN74AC596-Q1 SIPO移位寄存器特性/应用/框图

    Texas Instruments SN74AC596/SN74AC596-Q1 SIPO移位寄存器包含一个8位串行输入、并行输出(SIPO)移位寄存器,向8位D存储寄存器馈送信号。
    的头像 发表于 07-05 15:47 685次阅读
    Texas Instruments SN74AC596/SN74AC596-Q1 SIPO移位<b class='flag-5'>寄存器</b>特性/应用/框图

    使用寄存器点亮LED灯

    学习本章时,配合以上芯片手册中的“19. I/O Ports”章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。本章内容涉及到较多寄存器方面的深入内容,对于初学者而言这些内容丰富也较难理解,但非常有必要细读研究、夯实基础。
    的头像 发表于 05-28 17:37 1052次阅读
    使用<b class='flag-5'>寄存器</b>点亮LED灯

    第四章 什么是寄存器

    本篇文章我们讲解了寄存器的概念、地址映射和寄存器操作等内容,内容比较干,大家有个概念即可,不要求全部熟记掌握,有需要时可重复查阅观看。下一篇我们将开始进行实操内容,通过控制单片机的GPIO来点亮一颗LED,敬请期待!
    的头像 发表于 05-21 14:23 1152次阅读
    第四章 什么是<b class='flag-5'>寄存器</b>

    如何用C语言操作寄存器——瑞萨RA系列FSP库开发实战指南(10)

    由于寄存器的数量是非常之多的,如果每个寄存器都用像*((uint32_t*)(0x40080000+0x0020*1))这样的方式去访问的话,会显得很繁琐、很麻烦。为了更方便地访问寄存器
    的头像 发表于 04-22 15:30 1674次阅读
    如何用C语言操作<b class='flag-5'>寄存器</b>——瑞萨RA系列FSP库开发实战指南(10)

    使用ADS1258的时候调试了它的两工作方式寄存器的值会发生错乱,为什么?

    ,大概是一两个小时,里面寄存器的值会发生错乱。导致输出有误。原本我对00~08寄存器设置的值为38,21,65,00,FF,FF,00,00,FF. 一开始从串口读回寄存器的值是正确的,但是一段时间后
    发表于 02-10 08:21

    XILINX FPGA CLB单元之移位寄存器

    一、移位寄存器 SLICEM函数发生也可以配置为32位移位寄存器,而无需使用slice中可用的触发。以这种方式使用,每个LUT可以将串行
    的头像 发表于 01-16 17:45 1477次阅读
    XILINX FPGA CLB单元之移位<b class='flag-5'>寄存器</b>

    TPS80032寄存器手册

    电子发烧友网站提供《TPS80032寄存器手册.pdf》资料免费下载
    发表于 12-21 09:08 0次下载
    TPS80032<b class='flag-5'>寄存器</b>手册