EDN China > 其它文章 > 可编程器件 > 正文
?

如何使组合逻辑节点不被优化

作者:chactor: EDN China?? 2009年01月07日 ?? 收藏0

  EDN博客精华文章??作者:chactor

  在FPGA中一般采用同步时序设计,比如在延时设计中,一般都是设计成延时几个时钟周期,这样程序可移植性比较好,多次编译的结果也相同,不过有时候为了满足时序条件,比如建立时间,保持时间等不满足条件,需要适当做调整,调整的时间可能比一个时钟周期小,可能的一种方法是在节点处加入若干的BUF(LCELL),引入延迟。不过这样做也有一个缺点是每次布局布线后延迟的时间会有细微的变化。默认情况下,QuartusII会优化掉无用的LCELL,比如如下的程序:

程序

  该程序的本意是将a和b相与后经过t1,t2后再输出,不过QuartusII将t1,t2视为多余节点,在综合时优化了,产生如下结果:

综合时优化

  a,b到out的延时为11.632ns,逻辑单元使用数为1。

  为了保留用户有意加入的LCELL,以达到延时的目的,需要在程序中加入特定的指令以避免被优化,下面的程序基于Verilog-2001标准。关于在QuartusII中选择何种标准请参考我的另一篇文章【原创】Verilog-2001新增特性(实例分析)

程序

  这里加入了指令(* keep="1" *),以防止将组合逻辑节点t1,t2优化掉。综合后的RTL视图为:

综合后的RTL视图

点击看原图

  此时a,b到out的延时为12.188ns,逻辑单元使用数为2。

  可以看到,此时的t1,t2没有被综合掉,并且使a,b到out的传输时延有少许增加。


?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

组合逻辑? FPGA? Quartus?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈