verilog:case、casez、casex区别

    • 在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。
    • 在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。
    • 在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。

 


注意:casez与casex是case的两种变体,在写testbench时用到,属于不可综合的语句。
Eg:
casez(sel)
        3'b001:y=a+b;
        3'b010:y=a-b;
        3'b011:y=a&b;
        3'b100:y=a^b;
        default:y=3'b000;


当sel=3'b01z时,由于最低位出现了z,那么在比较判别时不考虑最低位,只与源比较前两位,那么出现与010,011均匹配的情况,此时由于case语句是按顺序检查的,所以先认为与010匹配,所以输出y=a-b。 
 

你可能感兴趣的:(FPGA/Verilog)