1.case语句的default项必须写出,能够防止产生锁存器电路。
利用case语句描述组合电路时,必须提供所有的选择结果情况,否则HDL综合器将根据描述,自动生成锁存(latch)电路。锁存电路相对于组合电路来说,会带来额外的时钟延迟,并引入异步时序,不适合常规电路设计。此外,锁存电路在可测试性设计中,需要额外的逻辑实现。因此,描述电路时一定不要编写不完全分支的电路语句,以免生成锁存。
2.对于reg类型,不能准确定义其为寄存器,而有可能为锁存器或者组合电路中的临时连线。
3.可综合的always语句只有有两种写法。
(1)电平驱动:当个敏感事件列表中的信号发生变化,就执行内部的语句块。
(2)边沿驱动:当敏感信号发生跳变时,就执行内部语句块。
对于没有提供敏感事件列表的always语句,则是无条件执行,通常用于测试验证代码,属于不可综合。
4.在逻辑电路中,各个硬件都是并行执行的。站在电路角度讲,所有的D触发器都是并行执行的,而驱动源就是时钟。因此,在HDL描述中,每一个带时钟的always语句块都是并发执行的,没有先后顺序。
但在always语句块内部,任何一个语句块(以begin开始,end结束)都是串行执行的,只是存在赋值立即生效还是事后生效的差异,即阻塞赋值和非阻塞赋值的区别。
5.控制结构可以分为三种:顺序结构,分支选择结构,循环结构。这三种都可以在always语句内部实现。
(1)顺序结构:标准的顺序执行,在always语句块内部已经天然实现
(2)分支选择结构:if-else语句和case语句
若if语句的判断条件值不为1,而是0,x,zÿ