soc的clk和reset/rst/RDC及afifo复位

本节不去讨论同步复位与异步复位以及异步复位的reset_release,这些问题可参考:

芯片设计进阶之路——Reset深入理解——cy413026

本文主要回答一下几个问题。

0.0 clk不能同时达到所有同步寄存器

需要确定后端是不可能让所有的同步寄存器同时获得时钟的?

如果确定了,那么如果先解复位,再开时钟就可能,同一个clk domain和reset domain的寄存器有的有时钟,有的没有时钟,可能会出现有的正确采样了有的没有正确采样,所以需要等到时钟稳定并传输到所有寄存器clk端?

和后端的同事交流了一下,在做clk tree的时候会对同一个clock做balance。clock balance的目的就是要让同一个clk上升沿几乎同时到达所有该clk下的FF。它们之间的差距就是clk skew,这个skew是很小的【远小于一个时钟周期】,也就是说不会出现距离clk common path近的FF先收到clk,远的FF会晚一个时钟周期以上收到clk。

后端同事说clk会先走到该clk下寄存器的中心区域,尽量把clk的common path做长,然后在散开。但是这样就一定能够保证从common path分开之后近端和远端的clk skew很小吗?会不会出现近端的FF在clk path上加的buff比远端的buff多?这个问题留待后续讨论。

0.为什么异步复位多见低电平

        实际上异步复位用低电平是一个历史问题,非复位状态时,为高电平,早期使用TTL的电路时,保持高电平比低电平节省功耗。现在都是CMOS电路不存在这个区别了。

        但是随着工艺的提升,工作电压的降低,考虑到噪声的影响,大家又偏向于低电平复位。

1.片外的reset信号特别是按键reset怎么防止错误抖动的影响?

   常见的处理方法包括两种:

  • 使用斯密特触发器做IO输入,斯密特触发器有一定的防抖动功能
  • 使用de-bounce电路

    de-bounce电路原理就是检测到IO输入的信号翻转之后 在多次间隔一定时间检测信号值稳定才会输出这个变化

2.常见soc设计为何把reset_release放在子系统来做?

        应该从两个方面来考虑,一个是逻辑设计和软件使用方面;另一个方面从reset网络的物理实现上考虑

    对于逻辑设计和软件来讲有几个方面:

  • release的时钟太多了,在系统级release就需要把所有的clk拉过去,有些clk甚至是子系统内部的时钟
  • 在reset同步的时候 一般会加上软件复位,系统级不方便加这么多软复位,软件也难控制,需要软件知道所有子系统甚至子IP的软件复位时序

    对于物理实现来说:

  • 把所有系统clk集中放在一个模块 就会有问题,时钟间相互干扰,timing都有问题
  • soc这么大的系统来说复位放在一个地方走线到各个复位寄存器也有问题【但本人并不能说明物理实现上的详细影响】

3.异步复位到底要不要时钟和时钟稳定有啥关系

        异步复位本身和时钟没有

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值