在FPGA的编程语言里,这是你最容易犯的错误

更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们

我知道,我对与电子有关的所有事情都很着迷,但不论从哪个角度看,今天的现场可编程门阵列(FPGA),都显得“鹤立鸡群”,真是非常棒的器件。如果在这个智能时代,在这个领域,想拥有一技之长的你还没有关注FPGA,那么世界将抛弃你,时代将抛弃你。本公众号作者ALIFPGA,多年FPGA开发经验,所有文章皆为多年学习和工作经验之总结。

 

逻辑写多了,有时候一些基本的错误忘了避免了。 

在FPGA的编程语言里,这是你最容易犯的错误
昨天设计逻辑的时候就不小心触雷了,有个信号有激励没响应,后来看了时序报告,有这么一句话。

 

在FPGA的编程语言里,这是你最容易犯的错误

 

这是什么呢?锁存器啊!

 

最容易产生的是在always(*)语句中,最后一定是所有分支条件都要描述并赋值。

 

状态机中,同样如此,不但需要有default的状态,每个状态的都要有所有的分支都要赋值。

 

如果设计很大,不容易查的话,可以打开综合报告,搜索“LATCH”关键词,查看是否有锁存器的产生,有就赶紧更改设计。

 

而时序逻辑综合结果必然是触发器,因此不用检查时序逻辑的分支条件。所以还是那句话,能用时序逻辑,就尽量别用组合逻辑。

 

当然如果是老鸟,这句话可忽略。

 

阻塞和非阻塞,这件事情百分之九十九点九九是笔误,没见过开发者没事非要冒险试一下“=”跟“<=”的区别。

 

很多人说这两个没啥区别,这两个符号啊,没出事就好,出事了查起来就烦了。

 

所以记好了,组合逻辑里面用=,时序逻辑里面用<=,肯定不会错。

 

硬件描述语言的坑还是很少的, 搞来搞去就是组合逻辑、时序逻辑,一些generat加for循环就算复杂的了,因此这块能说的不多。

 

编程语言不是语言本身,而是每句逻辑之后的电路,新手入门学习的初学者一定要注意。


本文转载http://www.eefocus.com/fpga/410113,如涉及侵权,请私信小编删除。

============华 丽 的 分 割 线============


想加入我们FPGA学习交流群吗?可以长按或扫描以下二维码,审核通过后我们邀请您加入

这些微信群旨在打造一个提供给FPGA工程开发人员及兴趣爱好者(统称“FPGAer”)进行技术交流、答疑解惑和学习的平台。而且我们也将会通过网络举办FPGA技术讲座,分享相关研究文献 


在FPGA的编程语言里,这是你最容易犯的错误


了解更多FPGA知识可以长按或扫描以下二维码关注FPGAer俱乐部


在FPGA的编程语言里,这是你最容易犯的错误