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

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

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

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
katte

개발새발 우주정복기

EE/Verilog

[Verilog] initial과 always 구문

2023. 1. 16. 20:17

모든 행위 수준 문장은 반드시 initial, always 블록 안에 있어야 한다.

각 initial, always 블록은 분리되어 수행되며, 서로 중첩될 수 없다. 

 

여러 문장은 begin, end를 통해 묶어준다.(C에서의 중괄호와 같은 역할)

 

 

  • initial

initial 블록은 시간 0에서 시작되고, 시뮬레이션동안 단 한 번만 수행된다. 

여러개의 initial 블록이 있다면 동시에 시간 0에서 시작되며 각각 독립적으로 실행을 마치게 된다.

 

initial
	m = 1'b0;
    
initial
begin
	#5 a = 1'b1; // #<지연>은 문장을 만나고 수행되기까지의 지연시간
    #25 b = 1'b0;
end

// 시간 0일 때 m = 1'b0 수행
// 시간 5일 때 a = 1'b1 수행
// 시간 30일 때 b = 1'b0 수행

 

 

변수에 초기값을 할당할 때에는 두가지 방법을 사용할 수 있다.

//방법 1
reg clock;
initial clock = 0;

//방법 2
reg clock = 0;

 

 

  • always

always 구문 역시 시간 0에서 시작하고, 블록 내의 문장을 루프 형식으로 수행한다.

always 블록은 전원이 들어오면 계속해서 지속적으로 반복되는 활동과 연관이 있다. 

문장 수행은 $finish(전원 꺼짐), $stop(인터럽트)에 의해서만 멈춘다.

 

 


Reference: Samir Palnitkar - Verilog HDL 2판

저작자표시 (새창열림)

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

[Verilog] 지연 기반 타이밍 제어  (0) 2023.01.17
[Verilog] 절차적 할당 - 블록킹과 논블록킹  (0) 2023.01.17
[Verilog] 연산자 정리  (0) 2023.01.11
[Verilog] 데이터 플로우 모델링, assign 연속 할당문  (0) 2023.01.11
[Verilog] 게이트 지연  (0) 2023.01.06
    'EE/Verilog' 카테고리의 다른 글
    • [Verilog] 지연 기반 타이밍 제어
    • [Verilog] 절차적 할당 - 블록킹과 논블록킹
    • [Verilog] 연산자 정리
    • [Verilog] 데이터 플로우 모델링, assign 연속 할당문
    katte
    katte
    개발새발 코딩하는 블로그 / HW 위주

    티스토리툴바