
[VerilogHDL] 05_조건문과 반복문_casez
1. casez
Verilog HDL에서 casez 문은 다중 조건을 처리하는 조건문 중 하나 입니다. casez 문은 선택 식(expression)을 사용하여 여러 가지 경우(case)를 처리하고, 해당하는 경우에 특정 동작을 수행합니다. casez 문은 와일드카드를 사용하여 비교하는데, 와일드카드는 ‘x’, ‘z’, 또는 'x’와 'z’로 구성된 비트를 의미합니다.
-
선택 식:
casez문은 선택 식(expression)을 사용하여 조건을 평가합니다. 선택 식은casez키워드 다음에 오며, 일반적으로 변수나 신호를 가리킵니다. 선택 식의 값에 따라 여러 개의 경우(case)를 검사하고 처리합니다. -
경우 목록:
casez문은 여러 개의 경우(case)를 가질 수 있습니다. 각각의 경우는casez키워드와 일치하는 값을 가집니다. 경우 값은 ‘x’, ‘z’, 또는 'x’와 'z’로 구성된 비트 값으로 구성됩니다. 해당 비트에 대해 일치 여부를 확인하지 않는다는 의미입니다. -
동작 블록: 각 경우(case)에는 해당 경우가 일치할 때 실행될 동작 블록이 포함됩니다.
-
기본(case default):
case문은 선택 식의 값과 일치하는 경우를 찾지 못했을 때 선택할 수 있는 기본(case default)을 가질 수 있습니다. 기본은 선택 식의 값과 일치하는 경우가 없을 때 실행되는 동작 블록을 정의합니다. 기본은 선택적으로 사용할 수 있으며, 생략할 수도 있습니다.(반드시 추가하는 것을 추천)
2. 예제 코드
module CasezExample;
reg [3:0] sel;
reg [7:0] data;
always @* begin
casez (sel)
4'b000?: data = 8'b00000000;
4'b0??1: data = 8'b11110000;
4'b1?10: data = 8'b00111100;
4'b??11: data = 8'b00001111;
default: data = 8'b00000000;
endcase
end
initial begin
sel = 4'b1?10;
#10;
sel = 4'b0??1;
#10;
sel = 4'b??11;
#10;
$finish;
end
endmodule
위의 예제 코드에서는 CasezExample 모듈을 선언하고, sel과 data라는 reg 변수를 정의합니다.
always 블록에서는 casez 문을 사용하여 sel의 값을 기반으로 data 값을 설정합니다. casez 키워드 다음에는 경우의 값과 ‘x’, ‘z’, 또는 'x’와 'z’로 구성된 비트를 비교하여 해당하는 동작 블록이 옵니다.
initial 블록에서는 sel 값을 변경하고 일정 시간이 경과한 후에 $finish를 호출하여 시뮬레이션을 종료합니다.
이를 통해 casez 문을 사용하여 선택 식의 값에 따라 다양한 경우를 처리하고, 각 경우에 따른 동작을 수행할 수 있습니다.
0 댓글