网站重新上线,多谢朋友们的关心
Dec 14
问:一个FPGA设计项目需要用哪些评判标准来检验?
一曰功能正确;
二曰时序收敛;
三曰资源消耗少。
Tags: ,
Jun 27
写了篇文章,主要介绍系统同步和源同步的设计中怎样确定OFFSET IN和OFFSET OUT的值。

因为有图,不高兴发HTML了,DOC格式。

Tags: , ,
Jun 20
目的:测试XST的复制寄存器功能

平台:ISE 9.1.02

结果:没有实现自动复制寄存器。XST总是插入Buffer。看来要复制还得手动。

文件:VHDL,截图和结果报告。



后续:有知道怎样让XST自动复制寄存器的(对于指定net)请给我留言。
Tags: , ,
Apr 13

Smart Reset 不指定

RickySu , 18:28 , 技术经验 , 评论(0) , 引用(0) , 阅读(911) , Via 本站原创
当FPGA设计的Timing Performance要求越来越高,工作速度越来越快,设计越来越大(Reset fanout大)时,Reset信号也成为一个需要考虑的问题。那么到底应该使用同步复位还是异步复位?

Xilinx 推荐使用同步复位,但是只使用同步复位还是有些问题的,下面简单分析一下:
(本文主要是对参考资料1的一个笔记)

问题1、Setup Time
当同步复位信号到达寄存器的时间不满足寄存器的Setup Time怎么办?

在同步设计中,如果输入信号不满足建立时间,那么一般认为会出现亚稳态。不过对于reset,这个问题还是比较好解决的。因为我们通常reset的时间都不止一个周期,即使第一个周期的reset结果我们不能确定,第二个后,我们总能保证所有的寄存器都被reset了。


问题2、由于Fanout太大,导致在net上的传输时间过长,那么如果reset的传输时间大于Period时间怎么办?

如果从Pin传输到寄存器的reset信号延迟大于了Period时间,那么就有可能导致在某一个时刻,有些寄存器复位了,有些还没有。延迟时间的长短导致了不同寄存器的不同状态。reset到达的时间可能有三种状态:满足setup time要求;不满足setup time要求;到了下一个时钟Period的区间。

点击在新窗口中浏览此图片

在仅考虑复位时,解决方法还是和问题1的方法一样,将reset保持长一点的时间就能解决问题。
但是复位后还需要释放复位信号。释放信号到达寄存器的时间不一致将导致某些电路工作不正常。

问题3、什么样的电路工作会不正常?又该怎么解决?

有两种性质的电路

点击在新窗口中浏览此图片

点击在新窗口中浏览此图片

前一种Pipe line的,如果后面的寄存器暂时不能在第一个时钟周期内复位,问题还是不大的,只要第一个寄存器保证工作正常就可以了。

后一种电路,由于有一些反馈系统,第一个寄存器用到了最后一级寄存器的结果,那么他们都需要在一个时钟Period内释放复位。

要注意的是,对于异步复位,这个问题更为明显。因为在一个时钟周期内任何时间都能释放复位信号,这样就增加了负载寄存器工作在不同状态的可能性大大增加了。也可以说,没有什么方法可以保证所有寄存器工作在相同的状态。而同步释放复位则可以保证都是在前一个时钟上升沿后一定时间内变化,这样只要设计保证了reset信号的延迟小于Period时间,设计的功能正确就能被保证。

要解决这种方法,参考资料2中的文章称用一种“异步复位同步置位”的方法解决问题,这种解决方法其实就是下图了。

点击在新窗口中浏览此图片

前级使用异步复位,移位寄存器的初始值为1,那么当有一个异步复位脉冲时,可以保证输出N个周期的复位信号。
后级采用同步复位,将复位信号的时序要求降为最低(一个Period时间)。





参考资料:

Get Smart About Reset (Think Local, Not Global)

同步复位和异步复位的比较

Asynchronous & Synchronous Reset - Design Techniques - Part Deux[PDF]

Comments on the previous paper
Tags: ,
分页: 1/2 第一页 1 2 下页 最后页 [ 显示模式: 摘要 | 列表 ]