可编程逻辑的微小延时,看过不少帖子实现方法有几种,看过就忘记了,今天在一个论坛里又看到有人讨论,我就实际做了一下,今天使用第一种方法,使用时序约束的方法。
代码如下:
module delay_10ns(oe_i,dir_i,oe_o,dir_o);
input oe_i,dir_i;
output oe_o,dir_o;
//inout
assign oe_o = ~ oe_i;
assign dir_o = ~ dir_i;
endmodule
oe是使能信号,dir是方向信号,方向信号必须在使能信号到达前有效,假设保持时间为10ns。
时序约束如下:
set_instance_assignment -name TPD_REQUIREMENT "10 ns" -from dir_i -to dir_o
set_instance_assignment -name MINIMUM_TPD_REQUIREMENT "20 ns" -from oe_i -to oe_o
编译后通过Chip Planner观察可发现oe_i到oe_o的布线绕了一大圈,以达到时序约束。但有一点没弄清楚,必须得设置dir信号的TPD_REQUIREMENT约束,oe的MINIMUM_TPD_REQUIRMENT才管用。
以上的约束可以在Assignment Editor设置,完整的工程见附件:
https://static.assets-stash.eet-china.com/album/old-resources/2009/11/9/cfb0e20b-642c-4f9a-9b80-67e5b66fd1d8.rar
文章评论(0条评论)
登录后参与讨论