카테고리 없음

Verilog 이해하기 3 - Blocking/Non Blocking Assignment

스터디올 2021. 10. 29. 22:43
반응형

Procedural Assignment의 두 가지 종류 (Blocking, Non Blocking)

이전 글에서 continuous assignment 와 procedural assignment에 대해 다뤘다. 그중 Procedural assignment의 종류인 Blocking Assignment와 Non Blocking Assignment에 대해 다뤄보려 한다. 

 

1. Blocking Assignment 

Blocking은 우선 = 이 사용된다. Blocking은 Blocking이라는 이름 그대로 해당 문장이 할당이 된 다음다음 할당이 시작된다. 예를 들어 설명하면

module tb;
  
  reg [4:0] A,B,C,D;

	initial begin
  
  		A=3;
  		B=4;
  		C=5;
  		D=6;
  
  		A=B+C;
  		B=D;
  		C=A;
      
      $display(A);
      $display(B);
      $display(C);
      $display(D);
      
	end
endmodule

 결과는 아래와 같다. 

결과를 조금 생각해 보면 각각에 assign이 되는 부분이 순서대로 진행된 것을 결과를 보고 확인할 수 있다. 

 

2. Non Blocking Assignment

그렇다면 Non Blocking은 어떤 결과가 나올까? 위에 코드에서 blocking assign만 non blocking assign으로 바꾸어 보자. 

module tb;
	reg [4:0] A,B,C,D;

	initial begin
  
  		A=3;
  		B=4;
  		C=5;
  		D=6;
  
  		A<=B+C;
  		B<=D;
  		C<=A;
      
      $display(A);
      $display(B);
      $display(C);
      $display(D);
      
	end
endmodule

결과가 달라지는 것을 볼 수 있다. 결과를 해석해 보면 Non blocking 같은 경우는 모든 우변(RHS)가 첫 시작할 때 동시에 연산이 되어서 한 번에 좌변(LHS)에 assing 되는 것을 확인할 수 있다. 

 

3. Hardware 적인 차이가 무엇인가? 

verilog라는 것 자체가 Hardware를 설계하기 위한 것이다. 그렇다. Blocking과 Non blocking은 단순히 assign만 다르게 되는 것뿐만 아니라 Hardware 적으로 다른 점을 알아야 될 필요가 있다. 

 

보통 Procedural Assignment는 Flip-Flop이 많이 쓰이는데 Non-blocking 같은 경우에 하나의 한 clk에 동시에 data가 전달 된다고 볼 수 있고 blocking 같은 경우 여러 flip-flop이 쓰이는 것을 볼 수 있다. 

 

<함께 읽으면 좋은 글>

2021.10.28 - [IT정보] - verilog 이해하기 1 (verilog module의 몸체)

 

verilog 이해하기 1 (verilog module의 몸체)

<함께 읽으면 좋은 글> 2021.10.28 - [IT정보] - Verilog 인터넷에서 무료 사용하는 법(EDA Playground) Verilog 인터넷에서 무료 사용하는 법(EDA Playground) 1. Verilog 란 무엇인가? Digital 회로 및 시스템에..

jun-study.tistory.com

2021.10.28 - [IT정보] - verilog 이해하기2 (verilog siganl assignment의 종류)

 

verilog 이해하기2 (verilog siganl assignment의 종류)

2021.10.28 - [IT정보] - verilog 이해하기 1 (verilog module의 몸체) 2021.10.28 - [IT정보] - Verilog 인터넷에서 무료 사용하는 법(EDA Playground) Verilog 인터넷에서 무료 사용하는 법(EDA Playground) 1...

jun-study.tistory.com

 

반응형