原创 casez 与casex

2010-6-7 09:29 3364 4 4 分类: FPGA/CPLD

casez:出现在条件表达式和任意分支项表达式的值为z的位都被认为是无关位,不进行比较。


casex:出现在条件表达式和任意分支项表达式的值为z和x的位都被认为是无关位,不进行比较。


case的语句是有优先级的,条件分支项靠前的优先级高。


module case_sentence;
    reg [3:0] code;
    reg [3:0] data;
   
    initial
    begin
        #5 code = 4'b1111;
        #5 code = 4'b11xx;
        #5 code = 4'b0110;
        #5 code = 4'b0100;
        #5 code = 4'b0x01;
        #5 code = 4'b0000;
        #5 code = 4'b0110;
        #5 code = 4'b0011;
        #5 code = 4'bX0xx;
    end
   
    always @(code)
    begin
        casez(code)
            4'b1???: data = 4'b0111;
            4'b11??: data = 4'b0011;
            4'b?1??: data = 4'b1011;
            4'b?11?: data = 4'b1001;
            4'b???1: data = 4'b1110;
            default: data = 4'b1111;
        endcase
    end
    always @(data or code)
    $display("code = %b,data = %b",code,data);
endmodule


运行后输出的结果:


1# code = 1111,data = 0111
2# code = 11xx,data = 0111
3# code = 0110,data = 1011
4# code = 0100,data = 1011
5# code = 0x01,data = 1110
6# code = 0000,data = 1111
7# code = 0110,data = 1011
8# code = 0011,data = 1110
9# code = x0xx,data = 1111


通过结果,第三行中出现了条件分支项中第四项的情况,但输出的结果却是分支项第三项应该输出的结果,这就证明了,case语句是先判断code的第2位(从0开始),发现满足条件3,data的输出就为1011

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条