棋子 · 1月11日

IC设计:ram的应用-一种常见的解耦设计

在模块划分时,我们通常会考虑解耦合,即尽量减少模块间的交互,让模块间的接口尽量简单。

在包处理过程中,因为数据处理的需求,需要读取某些信息(配置信息,状态信息),如图中读取block_b中的ram,根据读返回的结果后对数据包进行处理。为了解耦合,我们可以采用一个fifo(pkt_fifo)存储与ram请求(ram_req)无关的信息(数据包以及数据包的相关描述信息),等待response返回后,再从pkt_fifo读取相应的数据包信息对,从而对数据包进行处理。

如果不采用pkt_fifo存储包信息,那么会怎么设计呢?如非解耦设计图所示,不需要额外的fifo,将包信息(pkt_data)与访问请求(ram_req)一同传递给block_b模块,再由block_b将包信息(pkt_data)和访问响应(ram_response)一同送到block_a模块。

案例中的解耦合设计还有一个优点:节约资源和功耗。如果从发起ram_req到返回ram_reponse的流水比较长,例如需要几十甚至上百个时钟周期,在非解耦设计中,就需要使用寄存器对pkt_data进行打拍,而解耦设计中采用fifo存储pkt_data,虽然从存储bit角度计算两种设计需要的bit位几乎相同,但是fifo(用ram实现)面积更小,功耗更低。

image.png

作者: IC小鸽
文章来源:IC的世界

推荐阅读

更多IC设计干货请关注IC设计专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。
推荐阅读
关注数
20187
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息