桃花源qm花论坛(品茶),凤楼阁论坛官网入口网址,一品楼品凤楼论坛最新动态,风楼阁全国信息2024登录入口

FPGA设计异步复位同步释放有讲究

发布时间:2017-01-23 责任编辑:susan

【导读】异步复位同步释放,首先要说一下同步复位与异步复位的区别。同步复位是指复位信号在时钟的上升沿或者下降沿才能起作用,而异步复位则是即时生效,与时钟无关。异步复位的好处是速度快。再来谈一下为什么FPGA设计中要用异步复位同步释放。

复位信号的释放是有讲究的:
 
我们知道,DFF的D端和clk端之间时序关系是有约束的,这种约束我们通过setup time和hold time来 check。即D端的data跳变的时刻要与clk端的时钟上升沿(或者下降沿)跳变要错开,如果这两个跳变撞到一起,我们无法保证DFF能够sample到正确的data,这时候不满足setup/hold time要求,就会发生亚稳态,我们sample到的data可能是不稳定的中间态的值,并不是我们原本想要的data。
 
 
与此类似,异步复位端与clk端之间也存在着类似的时序约束关系,为了准确稳定地sample到异步复位端的reset信号,我们要求reset信号在clk上升沿(或者下降沿)跳变的前后一段时间内保持稳定,不要跳变。clk跳变沿之前必须保持稳定的最短时间叫做recovery time,clk跳变沿之后需要保持稳定的最短时间叫做removal time。如果在此时间窗口内reset信号发生跳变,不确定reset到底有没有释放成功(类似setup+hold时间窗口内,data跳变,发生亚稳态,sample到的值是不稳定的中间态值)。
 
在IC设计过程中我们是会check recovery和removal time的,如果不满足,我们会通过布局布线的调整(后端的调整)让电路满足这个条件(实质就是让reset跳变沿和clk跳变沿错开);但是对于FPGA设计而言,我们一般不采用异步释放的方法,因为FPGA的布局布线可以调整的空间不大,相对于IC设计,FPGA后端的布局布线基本上是tool自己搞定,所以我们很难调整布局布线以满足这个条件,所以我们一般就会直接用异步复位同步释放的方法来让reset跳变沿和clk跳变沿错开。
 
最后再说一下同步数字电路的setup/hold timing check的实质。
 
同步数字电路的基本单元就是两级DFF,中间是一堆组合逻辑,data就是在clk一拍一拍的控制下,逐渐向后面传递,当然,在传递的过程中,通过组合逻辑实现数据的处理与转换;但是物理世界里面,组合逻辑一定是有毛刺的,比如说data通过一系列的处理之后准备通过DFF传递到下一个单元的时候,你怎么能保证第二级DFF采到的值是处理完毕稳定可靠的data,而不是还处于中间态的data??。ň俑隼樱偕栉颐钦饫锏膁ata是一个8bit的bus信号,处理之前是1111_0000,通过组合逻辑处理完之后我们期望变成1111_1111;我们知道后面4个bit由0变1是需要时间的,由于布局布线的缘故,这4bit不可能在同一个时刻齐刷刷的同时由0变1,肯定是有的bit先变1,有的bit后变1;也就是在由1111_0000变成1111_1111的过程中,可能会存在1111_1000/1111_1100/1111_1101/...等等这样的中间态数据,我们不能在data还处于中间态的时候就去sample它,否则得到的不是我们预期的值,会引起整个芯片的逻辑错误)。
 
我们实际上是通过setup/hold time来保证的,即:如果电路中所有DFF的setup/hold time都能够满足,表示data到达D端的时间比clk跳变沿时刻超过了setup时间(反之,如果data在setup+hold时间窗口内还在变化,一定会有setup/hold timing vio),这样,我们通过check 所有DFF的setup/hold timing来间接地保证所有DFF采到的值都是经过组合逻辑处理并且处理完毕之后稳定可靠的值。(更确切的说,通过hold timing check来保证sample到的值是经过组合逻辑处理之后的值而不是上一笔的data,通过setup time来保证sample到的是经过组合逻辑处理完毕之后并且稳定下来的值)。

特别推荐
技术文章更多>>
技术白皮书下载更多>>
热门搜索
发光二极管 防静电产品 防雷 防水连接器 仿真工具 放大器 分立器件 分频器 风力涡轮机 风能 风扇 风速风向仪 风扬高科 辅助驾驶系统 辅助设备 负荷开关 复用器 伽利略定位 干电池 干簧继电器 感应开关 高频电感 高通 高通滤波器 隔离变压器 隔离开关 个人保健 工业电子 工业控制 工业连接器
?

关闭

?

关闭