본문 바로가기

실전! Verilog HDL RTL Design

[Verilog HDL] 2. Module

반응형

module은 하드웨어 기능을 구현하는 기본 단위이다. module은 입력 port를 통하여 입력 신호를 받고 이를 처리하여 출력 port를 통하여 module 외부로 출력한다.

 

아래는 기본적인 module의 구조이다.

 
module adder // adder는 module의 이름 
( 
    input wire [7:0] A,    // 8bit 입력 port 
    input wire [7:0] B,    // 8bit 입력 port 
    output wire [7:0] Y    // 8bit 출력 port 
); 
/* 
..... 
기능 구현 부분 
*/ 
endmodule // module의 마지막

'module'이라는 keyword 뒤에는 항상 module name이 와야 한다. 그리고 괄호 안에 입/출력 port를 정의한다. 여기에 입/출력 port의 방향만 설정하고 괄호 이후에 port의 bit 수나 type을 정의하는 방법이 있으나 한꺼번에 정의하는 것이 더 편하고 간단하다.

 

입출력 port 정의는 아래의 형식을 따른다.

 

<in/out keyword> <data type> <bit range> <name>

 
  • in/out keyword
  • data type
  • bit range
  • name

port 선언 예:

input wire [15:0] AAA, // 입력 port는 대부분 wire type으로 선언한다.
output reg [31:0] BBB, // 출력 port가 reg type인 경우 begin/end block문 안에서 바로 대입할 수 있다.
output wire [3:0] YYY, // 출력 type이 wire일 경우 assign문을 사용하여 대입한다.

 

반응형