我是靠谱客的博主 高贵小虾米,最近开发中收集的这篇文章主要介绍verilog异步复位jk触发器_Verilog代码中使用异步置位和复位时,需留意的很隐蔽的小错误...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作者:圆宵,来源:FPGA那点事儿

最近在做一个设计用Vivado去综合时,碰到了一个很意外的Critical Error。由此牵扯出Verilog代码中使用异步置位和复位时,需留意的一个很隐蔽的小错误。

警告摘要如下:

[Netlist29-358] Reg ‘Counter[7]‘ of type ‘FDCPE’ cannot be timed accurately. Hardwarebehavior may be unpredicatable.

Resolution:Recode your design, so that you do not depend on both asynchronous set andreset for your desired functionality.

所对应得代码大概如下:

单从这处代码本身来看,看不出任何问题,由于是第一次碰到这种严重警告,所以一时没有头绪。不过从警告的提示来看,应该跟异步复位有关,难道是异步复位的初始赋值有问题?

顺着这个思路在代码中搜索,发现INIT_VAL的赋值不是一个常量,而是会动态切换的,如下:

看到此处终于恍然大悟,FPGA中寄存器的异步复位或者置位,都只能赋常量值,不能赋变量值。

因此消除这个严重警告的办法也很简单,把异步复位替换成同步复位即可。如下:

经过上述简单修改后,严重警告消失了。

最后

以上就是高贵小虾米为你收集整理的verilog异步复位jk触发器_Verilog代码中使用异步置位和复位时,需留意的很隐蔽的小错误...的全部内容,希望文章能够帮你解决verilog异步复位jk触发器_Verilog代码中使用异步置位和复位时,需留意的很隐蔽的小错误...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(51)

评论列表共有 0 条评论

立即
投稿
返回
顶部