[VerilogHDL] 05_조건문과 반복문_casex

05_조건문과 반복문_2_casex

verilogHDL

[VerilogHDL] 05_조건문과 반복문_casex

1. casex

Verilog HDL에서 casex 문은 다중 조건을 처리하는 조건문 중 하나 입니다. casex 문은 선택 식(expression)을 사용하여 여러 가지 경우(case)를 처리하고, 해당하는 경우에 특정 동작을 수행합니다.

  1. 선택 식: casex 문은 선택 식(expression)을 사용하여 조건을 평가합니다. 선택 식은 casex 키워드 다음에 오며, 일반적으로 변수나 신호를 가리킵니다. 선택 식의 값에 따라 여러 개의 경우(case)를 검사하고 처리합니다.

  2. 경우 목록: casex 문은 여러 개의 경우(case)를 가질 수 있습니다. 각각의 경우는 casex 키워드와 일치하는 값을 가집니다. 경우 값은 'x’나 ‘z’ 비트 값으로 구성됩니다. 해당 비트에 대해 일치 여부를 확인하지 않는다는 의미입니다.

  3. 동작 블록: 각 경우(case)에는 해당 경우가 일치할 때 실행될 동작 블록이 포함됩니다.

  4. 기본(case default): case 문은 선택 식의 값과 일치하는 경우를 찾지 못했을 때 선택할 수 있는 기본(case default)을 가질 수 있습니다. 기본은 선택 식의 값과 일치하는 경우가 없을 때 실행되는 동작 블록을 정의합니다. 기본은 선택적으로 사용할 수 있으며, 생략할 수도 있습니다.(반드시 추가하는 것을 추천)

2. 예제 코드

module CasexExample;
    reg [3:0] sel;
    reg [7:0] data;
    
    always @* begin
        casex (sel)
            4'b000x: data = 8'b00000000;
            4'b0xx1: data = 8'b11110000;
            4'b1x10: data = 8'b00111100;
            4'bxx11: data = 8'b00001111;
            default: data = 8'b00000000;
        endcase
    end
    
    initial begin
        sel = 4'b1x10;
        #10;
        
        sel = 4'b0xx1;
        #10;
        
        sel = 4'bxx11;
        #10;
        
        $finish;
    end
endmodule

위의 예제 코드에서는 CasexExample 모듈을 선언하고, seldata라는 reg 변수를 정의합니다.

always 블록에서는 casex 문을 사용하여 sel의 값을 기반으로 data 값을 설정합니다. casex 키워드 다음에는 경우의 값과 'x’를 사용하여 비교하는 경우에 해당하는 동작 블록이 옵니다.

initial 블록에서는 sel 값을 변경하고 일정 시간이 경과한 후에 $finish를 호출하여 시뮬레이션을 종료합니다.

이를 통해 casex 문을 사용하여 선택 식의 값에 따라 다양한 경우를 처리하고, 각 경우에 따른 동작을 수행할 수 있습니다.

댓글 쓰기

0 댓글