katte
개발새발 우주정복기
katte
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • 블로그 소개 (1)
    • Computer (36)
      • 자료구조 (0)
      • 알고리즘&백준 (19)
      • 컴퓨터구조 (0)
      • C++ (17)
      • Kotlin (0)
    • EE (29)
      • Verilog (22)
      • 디지털 시스템 (2)
      • 집적회로설계 (1)
      • 임베디드 시스템 (4)
    • 토이프로젝트 (3)
    • 기타 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • C++11
  • cctype
  • Get
  • 스트림
  • c++
  • EOF
  • ctime
  • C언어
  • c++ 입출력
  • 입력버퍼
  • C++ 스트림 클래스
  • 표준스트림
  • C++ 스트림 개요
  • for 루프
  • 함수포인터
  • ignore
  • 배열포인터
  • cin

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
katte

개발새발 우주정복기

EE/Verilog

[Verilog] 모듈의 구성 요소

2023. 1. 5. 10:13

모듈을 정의할 때에는 항상 module ~ endmodule 형식을 갖추어야 한다. 

 

모듈 정의의 맨 처음 부분에서는 포트리스트와 포트 선언, 파라미터가 올 수 있다.

 

모듈 정의에 들어갈 수 있는 요소로는 5가지가 있다.

 

  •  변수 선언: wire, reg 또는 다른 변수들
  • 데이터플로우 문: assign
  • 하위 모듈의 파생(인스턴스화)
  • 행위적 블록: always, initial 블록, 모든 행위 선언은 이 블록에서 일어난다.
  • 태스크와 함수

 

모듈 정의에 이 다섯가지가 모두 들어갈 필요는 없다. 필요에 따라 선택적으로 사용할 수 있다. 

 

 

SR 래치 코드를 예로 하여 모듈 정의의 요소들을 살펴보겠다.

 

module SR_latch(Q, Qbar, Sbar, Rbar); //포트 리스트
 
//포트 선언
output Q, Qbar; 
input Sbar, Rbar;

//하위 모듈의 인스턴스화
nand n1(Q, Sbar, Qbar);
nand n2(Qbar, Rbar, Q);
 
endmodule //모듈 정의 끝
 
 
module Top; //포트 리스트 없음

//변수 선언
wire q, qbar; 
reg set, reset;

//하위 모듈의 인스턴스화
SR_latch m1(q,qbar, ~set, ~reset);

//행위적 블록(initial)
initial
begin
        $monitor($time, " set = %b,reset = %b, q = %b\n", set, reset, q);
        set = 0; reset = 0;
        #5 reset = 1;
        #5 reset = 0;
        #5 set = 1;
end
 
endmodule //모듈 정의 끝

 

 


Reference: Samir Palnitkar - Verilog HDL 2판

저작자표시 (새창열림)

'EE > Verilog' 카테고리의 다른 글

[Verilog] 게이트 수준 모델링  (0) 2023.01.06
[Verilog] 포트(Ports)와 포트 연결 규칙  (0) 2023.01.05
[Verilog] 컴파일러 지시어  (0) 2023.01.03
[Verilog] System task  (0) 2023.01.03
[Verilog] 베릴로그 자료형  (0) 2023.01.03
    'EE/Verilog' 카테고리의 다른 글
    • [Verilog] 게이트 수준 모델링
    • [Verilog] 포트(Ports)와 포트 연결 규칙
    • [Verilog] 컴파일러 지시어
    • [Verilog] System task
    katte
    katte
    개발새발 코딩하는 블로그 / HW 위주

    티스토리툴바