if和case语句

1、  if...else语句综合出优先级电路,会产生较大的组合逻辑。

2、  在组合逻辑中,if语句如果条件分支不完整将综合出锁存器。

3、  case语句如果条件分支不完整,将生产锁存器。

4、  casez语句将忽略case分支项条件中出现的z值,在设计带优先级的电路时可以使用casez语句。

5、  casex语句将忽略case分支项条件中出现的x和z值,实现优先级仲裁器。

6、      在有些情况下,虽然case分支不完整,但是由于前级可以保证不会出现未覆盖的分支,此时可以通过综合指令“synthesis full_case”后,综合工具将其综合成不带锁存器的电路。

7、      casex语句,假如设计者事先知道所有的分支是互斥的,则可以通过加综合指令“synthesis full_case”,告诉综合工具将其综合成不带优先级的并行电路。

8、      一般来说,只要if...else语句中的条件是互斥的(因为互斥所有不存在优先级),综合工具的综合结果就是并行而且不带优先级的电路;但是如果条件不互斥,对应的电路则带优先级。

9、      一般推荐,如果需要产生优先级的电路用if...else;并行电路尽量使用case语句。

10、    通过赋默认值,可以避免产生锁存器,如:

module mux_latch
(
input [2:0]sel,
input [2:0] a,
output reg [2:0] y
);

always @ (sel,a)
begin
y
=3'b000;
casex(sel)
3'bxx1: y=a[0];
3'bx1x: y=a[1];
3'b1xx: y=a[2];
endcase
end

endmodule

 

posted on 2010-12-17 17:06  齐威王  阅读(3788)  评论(0编辑  收藏  举报

导航