转载于:https://www.cnblogs.com/zhengguangtao/p/5941439.html
delay和latency都有延迟的意义,在FPGA中二者又有具体的区别。
latency出现在时序逻辑电路中,表示数据从输入到输出有效经过的时间,通常以时钟周期为单位。
delay出现在组合逻辑电路、布线中,表示数据从一端到另一端经过的时间,通常以绝对时间衡量。
引起delay的有线延迟、门延迟等,通常是不希望出现的。
latency和电路的逻辑设计有关,如果latency很大,通过提升工作的时钟频率,那么绝对的响应时间不会太长。
而delay很大,那么电路的工作频率会受限,从而影响电路的整体性能。
为了减小delay,提升电路的工作频率,主要有两个方法:加时序约束和减少组合逻辑。
通过综合器加适当的时序约束,可以减少时延,但这不是主要的方式,也不能将希望寄托在时序约束上。
减少组合逻辑是主要的方法,能够保证代码的可移植性。减少组合逻辑的主要途径是切割,即将大的组合逻辑切割成小的组合逻辑。
大的组合逻辑是指多个LUT级联,FPGA的组合逻辑实现是基于LUT的(通常是4输入),即电路所有可能输出的结果都存在LUT中,输出是根据输入查表获得的。
如果输入个数大于4,那么需要LUT级联,这样会引入延迟。减小延迟的方法就是想办法将级联消除,比如一个8输入的组合逻辑,可以将8输入拆成2个4输入,同时使用一个寄存器存储中间结果,这样虽然电路的latency增加了,但逻辑延迟减小了,电路的工作频率可以得到提升。
http://blog.sina.com.cn/s/blog_605fa0af0100dzkh.html
latency与delay是FPGA设计中常用到的两个概念,可惜国内很多资料将二者混淆,都翻译为延时,这是不确切的。latency意思是潜伏,比如,第四个时钟才用的数据,但该数据已在时钟1输出,为此,采用某种方法,如D触发器级联等,使该数据在1、2、3时钟器件淹没(输出端看不到),即为潜伏。 delay是指数据应在时钟1输出,但却在时钟2输出,这就是延时,延时有线延时,门级延时等,大多数情况下是不期望的。
latency是相对于某个时钟位置起始的1个或多个时钟周期后数据才有效;
delay是相对于时钟边沿的某个时间段后数据才有效;
latency一般翻译成“处理等待时间”