[FPGA]

Verilog blocking, non-blocking 어떤 차이가 있나?

Neo Park 2012. 5. 4. 23:52

 

Verilog HDL의 기본적인 문법 중 Blocking Non-Blocking 있다.

Register 변수형에 대한 대입문

- Blocking 대입 : reg 변수 = 변수 or 식;

- Non-Blocking 대입 : reg 변수 <= 변수 or 식;

*Blocking
-----------------------------------------------------
//a=1 , b=2, c=3 가정
always @( posedge clk)
begin
a=b; // b=a=2
c=a; // c=a=b=2
end
-----------------------------------------------------

*Non- Blocking
-----------------------------------------------------
//a=1 , b=2, c=3 가정
always @( posedge clk)
begin
a<=b; // a=b=2
c<=a; // c=a(prior value)=1
end
-----------------------------------------------------

위와 같이 합성을 하면 Blocking 은 FF(Flip Flop)이 하나 생성되고,
Non-Blocking 은 FF이 두개 생성된다.

Blocking 합성

 







 

 

Blocking Simulation

 


 

 

 

 

Non-Blocking 합성








Non-Blocking Simulation