본문 바로가기

디지털 회로 실습

2-1강 - Verilog 기초 1 (module, 기초 문법)

1. Verilog의 기본적인 구조 – module

1) module

module은 Verilog에서 기본 설계 단위이며

이를 통해 다른 모듈을 포함하는 계층적 구성을 할 수 있습니다.

 

2) Verilog의 기본 구성

머리부, 선언부, 몸체부 등 크게 3가지로 구성됩니다.

 

1> 머리부

module {모듈 이름} ({port 목록});

- 이후에 module 맨 마지막에 endmodule로 module의 끝을 알려야 한다.

 

2> 선언부

- module에서 필요한 것들을 선언한다.

- C언어에서 변수 선언하는 것과 유사한 부분

  • port (port들의 방향, 비트 폭)
  • reg
  • wire
  • parameter

 

3> 몸체부

회로의 기능, 동작, 구조 등을 표현하는 구문들로 구성

 

2. Verilog의 기초 문법

1) Verilog Data Type

1> register : 추상적 저장 장치

(즉 value를 저장하는 장치)

reg : 절차형 할당문(always, initial)에 의해 값을 받는 객체

integer : 정수형 변수

time, realtime : 시간형 변수 (시간에 따라 다른 값을 넣고 싶을 때처럼 시간 체크가 필요한 상황에서 simulation 시간을 처리)

real : 실수형 변수

2> Net : 디바이스의 물리적인 연결

(간단히 생각해서 각 Gate 간 연결해주는 부분을 의미한다.)  

wire : 변수들이 모듈 내에서 어떻게 연결되어 있는 지를 나타내주는 변수

tri : 선을 연결할 때 사용한다. (tri-state net에 사용한다.)

 

2) 상수 (constant) 선언

=> bit 수 제한이 있는 reg의 값 선언할 때

{bit 수}‘{입력 형식}{입력 값}

1> bit(size) 정한 경우

  • 4‘b1111; => binary 1111 (4bit)
  • 4’hf; => hexadecimal 1 (4bit)

2> bit(size) 정하지 않은 경우

  • 214; => integer 214
  • h32; => hexadecimal 32
  • o324; => octal 324

3> signed number

  • -8’d6; => decimal –6 (8bit)

3) 연산자

1> 연산자

 

연산자

의미

산술 연산자

+, -, %, *, /

산술 연산

관계 연산자

==, !=, >, >=

관계 연산

논리 연산자

&&

논리적 AND

||

논리적 OR

!

논리적 NOT

&

비트 AND

|

비트 OR

~

비트 NOT

^

비트 XOR

^~, ~^

비트 XNOR

시프트 연산자

>>

오른쪽 shift

<<

왼쪽 shift

기타

{}

결합 연산자

{{}}

반복 연산자

exp1?exp2:exp3

3항 조건 연산자

2> 예시 1

3> 예시 2

verilog에서는 밀려난 bit는 사라진다.

그리고 새로 생긴 자리는 0으로 채워진다.