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

05_조건문과 반복문_2_case

verilogHDL

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

1. case

Verilog HDL에서 case 문은 다중 조건을 처리하기 위해 사용되는 조건문입니다. case 문은 조건에 따라 여러 가지 경우(case)를 처리하고, 해당하는 경우에 특정 동작을 수행합니다.

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

  2. 경우 목록: case 문은 여러 개의 경우(case)를 가질 수 있습니다. 각각의 경우는 case 키워드와 일치하는 값을 가집니다. case 키워드 다음에는 경우의 값이 옵니다. 경우 값은 상수 또는 변수일 수 있습니다.

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

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

2. 예제 코드

module CaseExample;
    reg [1:0] sel;
    reg [7:0] data;
    
    always @* begin
        case (sel)
            2'b00: data = 8'b00000000;
            2'b01: data = 8'b11110000;
            2'b10: data = 8'b00111100;
            2'b11: data = 8'b00001111;
            default: data = 8'b00000000;
        endcase
    end
    
    initial begin
        sel = 2'b10;
        #10;
        
        sel = 2'b01;
        #10;
        
        sel = 2'b11;
        #10;
        
        $finish;
    end
endmodule

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

always 블록에서는 case 문을 사용하여 sel의 값을 기반으로 data 값을 설정합니다. case 키워드 다음에는 sel의 값을 비교하는 경우와 해당하는 동작 블록이 옵니다. default는 선택 식의 값과 일치하는 경우가 없을 때 기본 동작을 정의합니다.

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

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

댓글 쓰기

0 댓글