산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 제어문 마스터하기: IF-ELSE, Case, 반복문

조건문과 로직 흐름 제어 없이는 하드웨어 동작을 구현할 수 없습니다. Verilog는 이를 위한 제어 흐름 블록과 메커니즘을 제공합니다.

if-else-if

이 조건문은 특정 문장을 실행할지 여부를 결정하는 데 사용됩니다. C 언어의 if-else-if와 매우 유사합니다. 표현식이 참으로 평가되면 첫 번째 문장이 실행됩니다. 거짓이고 else 부분이 있으면 else 부분이 실행됩니다.

문법
// else 부분 없는 if 문
if (expression) [statement]

// else 부분 있는 if 문
if (expression) [statement] else [statement]

// 여러 문장인 경우 begin-end로 묶어야 함
if (expression) begin
  [multiple statements]
end else begin
  [multiple statements]
end

// if-else-if 문
if (expression) [statement]
else if (expression) [statement]
else [statement]

else 부분은 선택 사항이며, 중첩된 if 시퀀스에서 else가 생략되면 혼란을 일으킬 수 있습니다. 이를 방지하려면 else를 else가 없는 앞의 if와 연결하거나, 문장을 begin-end 블록으로 감싸는 것이 좋습니다. 마지막 else는 다른 조건들이 모두 만족되지 않은 경우(기본 케이스)를 처리합니다.

if-else-if에 대해 더 읽어보려면 여기를 클릭하세요

반복문은 블록 내의 단일 또는 다중 문장을 한 번 이상 실행하는 방법을 제공합니다. Verilog에는 네 가지 유형의 반복문이 있습니다.

forever 반복문

블록 내의 문장을 계속 실행합니다.

forever [statement]
forever begin
  [multiple statements]
end

예제

module my_design;
  initial begin
    forever begin
      $display ("이 메시지는 영원히 출력됨, 시뮬레이션이 멈출 수 있음 ...");
    end
  end
endmodule

시뮬레이션 로그

ncsim> run
This will be printed forever, simulation can hang ...
This will be printed forever, simulation can hang ...
...
This will be printed forever, simulation can hang ...
Result reached the maximum of 5000 lines. Killing process.

repeat 반복문

문장을 고정된 횟수만큼 실행합니다. 표현식이 X 또는 Z로 평가되면 0으로 처리되어 전혀 실행되지 않습니다.

repeat ([num_of_times]) begin
  [statements]
end
repeat ([num_of_times]) @ ([some_event]) begin
  [statements]
end

예제

module my_design;
  initial begin
    repeat(4) begin
      $display("이것은 새로운 반복입니다 ...");
    end
  end
endmodule

시뮬레이션 로그

ncsim> run
This is a new iteration ...
This is a new iteration ...
This is a new iteration ...
This is a new iteration ...
ncsim: *W,RNQUIE: Simulation is complete.

while 반복문

표현식이 참인 동안 문장을 실행하고, 조건이 거짓이 되면 종료합니다. 처음부터 조건이 거짓이면 문장이 전혀 실행되지 않습니다.

while (expression) begin
  [statements]
end

예제

module my_design;
  integer i = 5;
  initial begin
    while (i > 0) begin
      $display ("반복 #%0d", i);
      i = i - 1;
    end
  end
endmodule

시뮬레이션 로그

ncsim> run
Iteration#5
Iteration#4
Iteration#3
Iteration#2
Iteration#1
ncsim: *W,RNQUIE: Simulation is complete.

for 반복문

for (initial_assignment; condition; increment_variable) begin
  [statements]
end

세 단계 과정으로 문장을 제어합니다:

예제

module my_design;
  integer i = 5;
  initial begin
    for (i = 0; i < 5; i = i + 1) begin
      $display ("루프 #%0d", i);
    end
  end
endmodule

시뮬레이션 로그

ncsim> run
Loop #0
Loop #1
Loop #2
Loop #3
Loop #4
ncsim: *W,RNQUIE: Simulation is complete.

for 루프에 대해 더 읽어보려면 여기를 클릭하세요.

verilog

  1. C# 식, 문, 블록: 개념과 실전 예제로 완벽 이해
  2. Java 표현식, 문장, 블록 이해하기
  3. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  4. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  5. Verilog 할당문 이해: 유형, 문법, 모범 사례
  6. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  7. Verilog 제어문 마스터하기: IF-ELSE, Case, 반복문
  8. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  9. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  10. Verilog 지연 제어 이해: 타이밍 기법과 모범 사례