본문 바로가기

2-2/디지털 설계 및 실험

[디지털 설계 및 실험] Verilog 기초 vol.1 - 구성 요소

여름이었다.

 

전역한지 3주밖에 되지 않아 뭐든지 해낼 수 있을 것만 같았고,

나는 무적이었다.

그렇게 디지털설계 및 실험을 수강신청 했다.

 

그때 나는

 

그랬으면 안됬다. 

 

허나, 피하지 못하면 즐기라고.

 

즐겨보자.

 

 

💻Verilog란?

전자회로 및 시스템에 쓰이는 하드웨어 기술 언어(HDL, Hardware Description Language)이다.

쉽게 말해 하드웨어 코딩이라고 생각하면 된다.

C언어와 문법이 비슷해 쉽다(?????) 고 한다.

 

 

 

💻Module

Verilog에서 쓰는 기본 설계 단위이다.

포트 인터페이스를 통해 상위 블록에 필수 기능을 제공한다.

 

모듈의 기본 구성을 알아보자.

module <module_name> (<module_terminal list>);

...

<module internals>
...
...
endmodule

c언어와 구성이 상당히 비슷하게 되있는 것을 알 수 있다.

module_terminal list에는 입력되는 포트의 목록이 작성되어있다.

 

윗부분에서 module에서 필요한 것들을 선언한다.

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

이런것들이 선언되어 질 수 있다.

몸체에서는 회로의 기능,동작,구조 등을 표현해준다.

 

 

💻Instances

생성된 모듈을 통해 객최를 생성하는 과정을 instantiation이라 하고 그로 인해 생성된 객체들을 instance라고 한다.

붕어빵 틀을 module, 만들어진 붕어빵을 instance라고 생각하면 쉽다.

 

c++의 클래스와 객체 개념과 아주 유사하다.

모듈 안에 새로운 모듈을 정의할 수 없으니 유의해야한다.

 

 

💻Simulation

자신이 코드를 짯는데 모듈이 예상대로 동작하는 지 궁금할거다.

그럴 때, 시뮬레이션을 돌려 정상작동 하는지 확인을 해보면 된다.

 

모듈을 시뮬레이션 하기 위해서는 모듈에 입력값이 주어져야 하는데, 그러기 위해서 test bench를 먼저 생성해야한다.

이 테스트 벤치가 모듈에 필요한 입력값을 생성해 낸다. 

 

 

 

아직은 기초이니 verilog의 대략적인 구성요소들을 짚고 넘어가겠다.