반응형
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;
반응형
'공부 기록 > 회로설계' 카테고리의 다른 글
Verilog에서 C code 사용이 가능한 Direct Programming Interface (DPI) 개념 및 사용법 (1) | 2023.06.01 |
---|---|
하드웨어 검증 언어, System Verilog 란? - Testbench, DUT (0) | 2022.12.16 |
[Verilog] Blocking Assignment vs Non-Blocking Assignment - 베릴로그 절차형 할당문의 종류 (0) | 2022.04.21 |
[Verilog] Continuous Assignment vs Procedural Assignment - 베릴로그 연속 할당 vs 절차형 할당 (0) | 2022.04.21 |
[HDL] Behavioral Model vs Structural Model (0) | 2022.04.06 |