[VerilogHDL] 03_모듈(Module) 정의와 인터페이스
Verilog HDL는 하드웨어 설계를 기술하기 위한 하드웨어 기술 언어입니다. Verilog HDL 코드는 모듈 단위로 구성되며, 각 모듈은 하나 이상의 입력과 출력을 가지며 기능을 수행합니다. 다음은 Verilog HDL 코드의 구조를 자세히 설명합니다:
1. 모듈 정의 (Module Definition)
Verilog HDL 코드는 모듈 단위로 구성됩니다. 각 모듈은 module
키워드를 사용하여 정의되며, 이름과 입력 포트, 출력 포트, 내부 선언 및 논리 구현으로 구성됩니다.
module 모듈이름 (입력포트, 출력포트);
// 내부 선언과 논리 구현
endmodule
2. 포트 (Ports)
모듈은 입력 포트와 출력 포트를 가질 수 있습니다. 입력 포트는 외부로부터 데이터를 받아들이는 데 사용되며, 출력 포트는 모듈의 결과를 외부로 보내는 데 사용됩니다. 각 포트는 이름과 데이터 형식을 가지며, 필요에 따라 크기가 지정될 수 있습니다.
input [크기-1:0] 입력포트; // 입력 포트 선언
output [크기-1:0] 출력포트; // 출력 포트 선언
3. 내부 선언 (Internal Declarations)
모듈 내부에서는 다양한 종류의 내부 선언을 할 수 있습니다. 이러한 선언은 모듈 내에서 사용되는 변수, 레지스터, 와이어 등을 포함합니다. 내부 선언은 모듈의 기능을 구현하는 데 사용되며, 필요한 경우 데이터 형식, 크기 및 초기값을 지정할 수 있습니다.
reg [크기-1:0] 변수명; // 레지스터 선언
wire [크기-1:0] 신호명; // 와이어 선언
4. 하위 모듈 호출 (Invocation of sub-module)
하위 모듈 호출은 상위 모듈 내에서 다른 모듈의 기능을 사용하는 과정입니다. 상위 모듈은 하위 모듈을 호출하여 하위 모듈의 동작을 활용하고 결과를 얻을 수 있습니다.
하위 모듈은 독립적인 기능을 가진 모듈로, 상위 모듈 내에서 사용될 수 있는 하나의 블록으로 생각할 수 있습니다. 상위 모듈은 하위 모듈을 호출하여 입력 값을 전달하고, 하위 모듈의 출력 값을 받아 사용합니다.
subModuleInstance(.inputPort(inputPort), .outputPort(outputPort));
5. 논리 구현 (Logic Implementation)
모듈의 논리 구현은 내부적으로 이루어집니다. 논리 구현은 조합 논리 및 순차 논리로 구성될 수 있으며, 주로 할당 연산자를 사용하여 수행됩니다. 조합 논리는 입력 신호에 기반하여 출력을 계산하는 데 사용되고, 순차 논리는 이전 상태를 유지하고 다음 상태를 결정하는 데 사용됩니다.
assign 와이어명 = 논리식; // 와이어에 조합 논리 할당
always @(posedge 클럭) begin // 순차 논리 할당
// 동작 코드
end
이와 같은 구조로 Verilog HDL 코드를 작성하면 하드웨어의 동작을 기술할 수 있습니다. 모듈화와 구조화된 설계를 통해 복잡한 하드웨어 시스템을 구축할 수 있으며, 재사용 가능한 디자인을 개발할 수 있습니다.
0 댓글