Verilog HDL基础之:条件语句
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;
VerilogHDL 华清远见 相关文章:
- Verilog门电平模型化(06-06)
- VHDL:中文版Verilog HDL简明教程:第3章 Verilog语言要素(06-06)
- VHDL:中文版Verilog HDL简明教程:第2章 HDL指南(06-06)
- VHDL:中文版Verilog HDL简明教程:第1章 简介(06-06)
- VHDL:中文版Verilog HDL简明教程:第3章 Verilog语言要素(续)(06-06)
- 基于Verilog应用(06-06)