공부 기록/회로설계

[Verilog] reg vs wire - reg와 wire의 차이점

tomatt0 2022. 5. 5. 17:31
반응형

Verilog 언어의 reg와 wire 자료형에 대해 알아보자.

 

 


1. reg

" Data를 저장하기 위한 변수 "

Reg는 data를 저장하기 위한 변수로 다음 값이 할당되기 전까지 현재 값을 유지하므로 procedural assignment를 구현할 때 사용된다. Initial/always block 구문 내에서 출력으로는 반드시 reg를 사용해야 한다. Combinational logic과 sequential logic을 구현할 때 모두 사용 가능하다. 하지만 reg를 사용하여 combinational logic을 구현하면 현재 값을 유지할 필요가 없기 때문에 wire처럼 합성된다.

 

※ reg과 register는 같은 말이다?

reg와 register의 개념이 동일한 것은 아니다. reg라는 자료형을 사용하여 register의 역할을 하는 logic을 하드웨어로 구현하는 것으로 이해함이 적절하다.

 

(예시)

reg Q;
wire D;

always @(posedge clk or negedge reset_n) begin
    if (reset_n)
    	Q <= 1'b0
    else
    	Q <= D;
end

 


2. wire

" Gate 및 module을 연결하기 위한 연결선 "

Wire는 그 단어 그대로 물리적인 연결선이다. Continuous assignment의 출력을 연결하기 위해 사용된다. 즉, continuous assignment의 대표적인 구문인 assign문에서 사용되며 combinational logic을 설계할 때 사용된다. Wire를 통해 gate와 module을 서로 연결하며 신호가 저장되지 않는다.

 

 

(예시)

wire out1 = a & b & c;

wire out2;
assign out2 = a & b & c;

 

반응형