微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > Verilog HDL基础之:条件语句

Verilog HDL基础之:条件语句

时间:06-05 来源:互联网 点击:

x 的真值表:

表3.10 case语句真值表

case

0

1

x

z

0

1

0

0

0

1

0

1

0

0

x

0

0

1

0

z

0

0

0

1

casez

0

1

x

z

0

1

0

0

1

1

0

1

0

1

x

0

0

1

1

z

1

1

1

1

casex

0

1

x

z

0

1

0

1

1

1

0

1

1

1

x

1

1

1

1

z

1

1

1

1

下面给出两个例子来分别说明casez语句和casex语句。

例3:casez语句。

reg[7:0] ir;

casez(ir)

8 b1???????: instruction1(ir); //只判断ir的最高位

8 b01??????: instruction2(ir); //只判断ir的高2位

8 b00010???: instruction3(ir); //只判断ir的高5位

8 b000001??: instruction4(ir); //只判断ir的高6位

endcase

例4:casex语句。

reg[7:0] r, mask;

mask = 8bx0x0x0x0;

casex(r^mask) //判断r^mask的结果

8 b001100xx: stat1; //不考虑低2位

8 b1100xx00: stat2; //不考虑第3、4位

8 b00xx0011: stat3; //不考虑第5、6位

8 bxx001100: stat4; //不考虑高2位

Endcase

其他条件语句

上面提到的if语句和case语句都只能应用于always语句内部。如果需要在always语句之外应用条件语句,可以采样这样的语法结构:

assign data = (sel)? a : b;

上面的语句的含义相当于:

if (sel = 1)

data = a;

else

data = b;

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top