Menu
Coddy logo textTech

If Statement

Coddy Verilog 여정의 기초 섹션에 포함된 레슨. 90개 중 52번째.

if 문은 조건이 참일 때만 코드를 실행하는 의사 결정 블록입니다. if 문은 조건을 확인합니다.

condition이 true (1)이면 내부의 코드가 executes. condition이 false (0)이면 코드를 건너뜁니다.

구문:

if (condition) begin
  // condition이 true일 때 코드가 실행됩니다
end

간단한 예제

if (reset) begin
  count = 0;
end

이 예제에서는 다음과 같습니다:

  • beginend는 코드 블록의 시작을 표시하는 데 사용됩니다
  • reset이 1(참)이면, beginend 내부의 코드가 executes → count가 0이 됩니다
  • reset이 0(거짓)이면, 내부의 코드를 건너뜁니다 → 아무 일도 일어나지 않습니다

beginend는 다른 프로그래밍 언어의 중괄호 { }와 같은 역할을 합니다. 이들은 명령문을 함께 묶어 Verilog가 어떤 코드가 if 조건에 속하는지 알 수 있도록 합니다. 여기에는 명령문이 하나뿐이지만, 일관성을 위해 beginend를 사용하는 것은 여전히 좋은 습관입니다.

Always 블록의 If 문

always @(posedge clk) begin
  if (reset)
    count <= 0;
end

참고: 단일 문장의 경우 beginend는 선택 사항입니다. 예를 들어, 위의 always 블록에는 문장이 하나뿐이므로 if 뒤에 begin/end가 필요하지 않습니다.

조건은 어떤 표현식이든 될 수 있습니다

if (a > b) begin
  max = a;
end

if (a && b) begin
  out = 1;
end

if (data == 8'hFF) begin
  match = 1;
end

중요한 규칙

규칙설명
Condition은 어떤 표현식이든 될 수 있음0이 아닌 (그리고 알려진) 값은 true로, 0은 false로 처리됨
여러 statement에는 begin / end가 필요함다른 언어의 { }와 같음
begin/end가 없으면 하나의 statement만 뒤따름바로 다음 줄만 해당됨
challenge icon

챌린지

수행할 작업:

  1. 누락된 if statement를 Add하여 이것이 작동하도록 하세요.
  • enable1일 때, outa & b와 같아야 합니다.
  • enable0일 때, out0으로 유지되어야 합니다(변경되지 않음).

시작 코드에서는 out = 0을 초기화하고 두 경우를 모두 테스트합니다.

직접 해보기

module if_challenge;
  reg a, b, enable;
  reg out = 0;
  
  initial begin
    a = 1;
    b = 1;
    
    // 테스트 케이스 1: enable = 1
    enable = 1;
    // TODO: if 문 추가 (out = a & b)
    $display("enable=1: out = %d (should be 1)", out);
    
    // 테스트 케이스 2: enable = 0
    enable = 0;
    out = 0; 
    // TODO: out은 0으로 유지되어야 함
    $display("enable=0: out = %d (should be 0)", out);
    
    $finish;
  end
endmodule
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Verilog 컴파일러