VL13 优先编码器电路

 

`timescale 1ns/1ns

module encoder_0(
   input      [8:0]         I_n   ,
   
   output reg [3:0]         Y_n  
);
always @(*)begin
    casex(I_n)
    9'b1_1111_1111 :Y_n=4'b1111;
    9'b0_xxxx_xxxx :Y_n=4'b0110;
    9'b1_0xxx_xxxx :Y_n=4'b0111;
    9'b1_10xx_xxxx :Y_n=4'b1000;
    9'b1_110x_xxxx :Y_n=4'b1001;
    9'b1_1110_xxxx :Y_n=4'b1010;
    9'b1_1111_0xxx :Y_n=4'b1011;
    9'b1_1111_10xx :Y_n=4'b1100;
    9'b1_1111_110x :Y_n=4'b1101;
    9'b1_1111_1110 :Y_n=4'b1110;
    default:Y_n=4'b1111;
    endcase
end
endmodule

总结:

casez语句用来处理不考虑高阻值z的比较过程,即状态z在case语句中不会被视为正常的z状态
 casex语句则将高阻值和不定值都视为不必关心的情况

在case语句中,敏感表达式中与各项值之间的比较是一种全等比较,每一位都相同才认为匹配。

在casez语句中,如果分支表达式某些位的值为高阻z,那么对这些位的比较就会忽略,不予考虑,而只关注其他位的比较结果。

在casex语句中,则把这种处理方式进一步扩展到对x的处理,即如果比较双方有一方的某些位的值是z或x,那么这些位的比较就不予考虑。

原文链接:https://blog.csdn.net/vivid117/article/details/102611051

关于casex和casez的理解和练习:

casez是将z作为通配符,即可以匹配作为0/1/x/z,当然也可以是占位符“?”

case将z和x都作为通配符, 即可以匹配作为0/1/x/z,当然也可以是占位符“?”

case/casex/casez的匹配都是从上到下的优先级来匹配的

 

 

posted @ 2024-08-15 10:15  段星儿  阅读(22)  评论(0)    收藏  举报