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 |