这等同于连续性赋值语句的条件运算符:
assign out = (condition) ? x : y;
然而if语句也增加了更多制造错误方式,只有当out总是被赋值时电路才是组合型的。~
https://hdlbits.01xz.net/wiki/Always_if
一个普遍的错误来源:如何避免制造锁存器
当我们设计一个电路时,
首先要考虑的应该是电路
:
我想要一个逻辑门
我想要一个三输入三输出的组合逻辑
我想要一个有一系列触发器的组合逻辑电路
case
(
case
_expression)
case
_item1 :
case
_item_statement1;
case
_item2 :
case
_item_statement2;
case
_item3 :
case
_item_statement3;
case
_item4 :
case
_item_statement4;
default :
case
一、有优先级的if
语句
if..else if.. else if … …else..
语句
中是有优先级的,第一个if具有最高优先级,最后一个else优先级最低。Quartus综合出的RTL图认为,最高优先级的电路靠近电路的输出,输入到输出的延时较短;最低优先级的电路远离输出端,输入到输出的延时较长。
module single_if_late(A, C, CTRL_is_late, Z);
input [6:1] A;
input [5:1] C;
case
语句
的功能是:在某个信号(本例中的sel)取不同的值时,给另一个信号(本例中的q)赋不同的值。在括弧内的表达式将被精确地评估一次,并按其编写顺序与备选方案列表进行比较,与给定表达式匹配的备选方案的
语句
将被执行。
Verilog
HDL针对电路的特性提供了
case
语句
的其它两种形式用来处理
case
语句
比较过程中的不必考虑的情况( don’t care condition )。如果所有的
case
项都不符合给定的表达式,则执行缺省项内的
语句
,缺省
语句
是可选的,在
case
语句
中只能有一条缺省
语句
。