Module
- 하나의 하드웨어 블록(block)을 module로 정의할 수 있다.
- 모듈 내에서 input / output 을 정의
- 모듈의 동작(작동방식) 정의
Verilog에서 module의 형태는 다음과 같습니다.
머리부에서는 모듈을 선언하고, 해당 모듈의 이름과 I/O port를 작성하면 되겠습니다.
- 이때 모듈의 이름을 숫자로 하시면 오류가 발생하니 반드시 영문자로 하시길 바랍니다.
- I/O port의 순서는 무관합니다.
- ;(세미콜론) 반드시 작성해주세요.
선언부에서는 I/O port를 선언하고 reg, wire, parameter를 선언합니다.
(reg, wire, parameter에 관한 설명은 추후에 작성하여 올리겠습니다)
몸체에서는 모듈의 동작을 정의합니다.
(이때 여러 가지 방법으로 동작을 정의할 수 있는데 다음과 같습니다)
- 하위 모듈 인스턴스 (다른 모듈을 호출)
- Gate Primitive
- Assign 문
- Always, Initial 문
- Function, task 호출
예시로 설명하면 이해가 될 것입니다.
ex1. 2개의 input 을 갖는 AND Gate
위와 같은 AND Gate를 모듈로 구현하려면, 다음과 같은 작업을 통해서 작성할 수 있습니다.
코드를 통해 자세히 보겠습니다.
---Veriog Code---
module And_Gate(A, B, out); // 모듈 선언 , 모듈 이름 : And_Gate, 모듈 Port_list : A, B, out
input A, B; // input 선언. 비트선언 없을 경우 자동적으로 1-bit 인식
output out; //output 선언. 비트선언 없을 경우 자동적으로 1-bit 인식
wire A, B, out; //wire 선언. (별도의 reg, wire, parameter 선언 없을 경우 자동적으로 wire로 인식. 따라서 없어도 무방)
//아래는 모듈의 동작 방식
case({A,B}) // 중괄호{}는 bit를 묶는데 사용. case문을 통해 작동 방식 설명
2'b00 : out = 0;
2'b01 : out = 0;
2'b10 : out = 0;
2'b11 : out = 1;
endcase
endmodule // 모듈 종료
[Verilog(베릴로그)] Module : 1-bit Full Adder (0) | 2023.10.21 |
---|