• IC设计高级017:控制类寄存器2种实现方式


    IC设计高级017:控制类寄存器2种实现方式

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

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

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

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

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

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

     

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

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

    优点:

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

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

    缺点:

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

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

    3、实现方式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读出存在一定的读延时,存在一定限制。

  • 相关阅读:
    Go-Python-Java-C-LeetCode高分解法-第五周合集
    算法通过村第十三关-术数|黄金笔记|数论问题
    不小心清空了回收站怎么恢复,回收站删除的东西可以恢复吗
    EPLAN_006#部件库快速导入、树结构、部件导航器、材料表导航器
    从零开始实现一个分布式RPC框架
    北斗导航 | GBAS发展与应用支持CAT II/III类精密进近
    【吴恩达笔记】机器学习基础
    面经汇总--校招--北京顺丰同城
    电脑网速慢怎么解决?推荐这3个方法
    畅购商城-第7章商品搜索
  • 原文地址:https://blog.csdn.net/icxiaoge/article/details/126321887