본문 바로가기

verilog HDL

[Verilog]

module

기본적인 verilog 설계 블록 단위

요소 또는 하위 수준 설계 블록의 집합

4개의 추상화 수준

게이트수준

데이터플로우수준

행위수준

스위치수준

 

구성요소

module 모듈명(port_list);

port 선언

reg / net / parameter 선언

모듈 구성 요소

하위 모듈 호출

assign / always / function 문

endmodule

 

 포트의 개요

<키워드> [MSB : LSB] <선언된 포트이름>

input 입력

output 출력

inout 양방향

모든 포트는 wire로 선언

output 포트가 포트 값을 유지해야 할 때, 반드시 reg로 선언

 

포트 연결 규칙

하나의 모듈이 다른 모듈과 연결될 때

외부 신호에 포트 연결

- 위치에 의한 연결

모듈 인스턴스의 포트와 모듈 정의의 포트들은 같은 위치에 있는 신호들끼리 연결

간단한 회로 구성 시 용이 

ex) testbench

module top;

f_add f1(sout, cout, in1, in2, cin);

 

- 이름에 의한 연결

포트 이름에 의한 외부 신호 연결 가능

대형 설계에서 용이

포트 이름이 변경되지 않는 한 모듈 인스턴스에서 포트 연결 바꾸지 않고,

모듈 포트 리스트의 순서 재배치 가능

ex)

module top;

f_add f1(.sout(sout), .cout(cout), .a(in1), .b(in2), .cin(cin));

 

시스템 태스크 키워드 (system task keyword)

 

화면출력 태스크

$display : 변수 값, 문자열, 수식 등의 출력을 위한 태스크

ex) $dispaly("data address is %h", data_address);

// data address의 값을 16진수 표기법으로 사용

 

문자열 포맷

%d : 10진수로 변수 출력

%b : 2진수로 변수 출력

%s : 문자열 출력

%h : 16진수로 변수 출력

%o : 8진수로 변수 출력

%c : ASCII 문자 출력

%m : 계층 이름 출력

%v : 강도를 출력

%t : 현재 시간 포맥으로 출력

%e : 실수를 과학적 표기법으로 출력

%f : 실수를 십진 표기법으로 출력

 

모니터링 태스크

$monitor

변수, 파라미터에 지정 신호 값 계속 모니터링 → 변수나 신호 변할 때마다 모든 파라미터 출력

$monitoron : 시뮬동안 모니터링 가능

$monitoroff : 시뮬동안 모니터링 불가능

 

시뮬 중단 종료 태스크

$stop : 시뮬 중단, 신호 값 조사

$finish : 시뮬 끝냄

 

테스트벤치(testbench)

논리 및 타이밍 시뮬을 통해 회로의 기능과 동작 타이밍을 검증

 

'verilog HDL' 카테고리의 다른 글

[Verilog] Behavior modeling 설계  (0) 2022.03.19
[Verilog] Behavior modeling  (0) 2022.03.18
[Verilog] Data flow modeling  (0) 2022.03.17
[Verilog] Gate level modeling  (0) 2022.03.16
[Verilog] 기초문법  (0) 2022.03.15