Verilog 문법

(2024-12-01)

1. Verilog 어휘 규약어휘 토큰 (Lexical Token)
     - 여백(공백문자), 주석, , 문자열, 키워드, 식별자, 연산자

  ㅇ 여백 (공백문자 : White Space)
     - 공백문자(빈칸,,새줄,페이지넘김 등)은, 다른 어휘 토큰들을 분리하는 역할 외에는, 무시됨
     - 한편, 키워드,식별자,연산자,수 등 내에서 공백문자 허용 안됨

  ㅇ 주석 (Comment)
     - 1라인 주석은, 2개 슬래시(//) 이고,
     - 다중라인 주석은, (/* ~ */) 이며,
     - 중첩 사용은 금지

  ㅇ 키워드 (Keyword)
     - Verilog HDL 언어 내 미리 정의된 약 100개의 키워드(소문자)가 있음
        . 例) module, endmodule, input, output, wire, and, or, not 등

  ㅇ 식별자 (Identifier) 
     - 대소문자 구분됨
     - 알파벳,숫자,밑줄(_)로 구성
     - 알파벳 또는 밑줄로 만 시작 가능, 
     - 주로, 사용자가 정하는 이름에 쓰임 : (모듈명,신호 변수명,함수명 등)
        . 例) 입력 신호 : `i_이름`, 출력 신호 : `o_이름`,  선(wire) : `w_이름`,
              레지스터 : `r_이름` 등

  ㅇ 연산
     - 피연산자(operand) : 식별자, 리터럴, 벡터인덱스,슬라이스, 함수 호출

  ㅇ 표현식 (expression)
     - 다양한 연산자를 활용하여 논리적, 산술적, 관계적 등의 연산을 수행하는 구문
        . 주로, 회로 동작의 표현, 신호 간의 관계를 정의하는 데 사용


2. Verilog 자료형자료형 (data type)
     - 표현 대상 : 하드웨어에서, 신호의 전달 및 데이터의 저장

     - 형태 구분 둘(2) : 네트 자료형 (net), 변수 자료형 (variable)
        . 값 할당, 값 유지 방식, 하드웨어 구조 등이 다름

     - 네트 (net) 자료형 : 게이트 같은 하드웨어 요소들 간의 물리적 연결 (선)
        . 입력 변경시 지속 갱신됨
        . 통상, 값을 저장 않고, 게이트나 연속 진행 지정문 같은 드라이버에 의해 값이 결정됨
           .. 단, trireg는 값 저장 가능
        . wire(기본), uwire, wand, wor, tri, triand, trior, tri0, tri1, trireg, supply0, supply1
     - 변수 (variable) 자료형 : 기억 소자 같은 하드웨어 요소의 데이터 저장 형태의 추상화
        . procedural 구문 실행시 만 갱신됨
        . 값을 저장함
        . reg, integer, time, real

  ㅇ 자료의 값 (Value) 종류
     - 데이터값 (value) : 0, 1, X, Z
        . 0 : 논리값 0, false, 부정, GND
        . 1 : 논리값 1, true, 긍정, VDD
        . X : unknown (미확정), uninitialized (초기값 미설정)
        . Z : high-impedance, tri-stated, floating (미연결 상태)
     - 세기 (strength) : `()`은 세기 레벨
        . supply1 (7), supply0 (7), strong1 (6), strong0 (6), pull1 (5), pull0 (5),
          large (4), weak1 (3), weak0 (3), medium (2), small (1), highz1 (0), highz0 (0)
           .. (다수 드라이버에서 동시에 신호 줄 때, 가장 높은 레벨 취함)
           .. (모두 같은 세기 레벨일 때, unknown)
           .. (만일, 세기 미지정이면, stong (6) 취함)

  ㅇ 상수 (constant)
     - 정수형 상수 : 10진수, 16진수, 8진수, 2진수
     - 실수형 상수 : IEEE 754 - 1985 에 따름 (64 비트 배정밀도)


3. Verilog 문장

  ㅇ 라인 (문장)
     - 각 라인의 끝(문장)은, 세미콜론(;)으로 끝남

  ㅇ 할당문 (assignment)
     - 어떤 계산을 수행하기 보다는 신호들 간의 관계를 정의하는 것
        . 例) E = D C = (A + B) C
           .. wire D; assign D = A || B; assign E = D && C;
           .. 또는, E = (A||B)&&C;

  ㅇ 제어문 (Control Statement) : if, for, while

  ㅇ 블록문 (Block Statement) : begin ~ end
     - 블록의 시작과 끝이 중괄호({ })가 아닌 begin과 end를 사용하여 구분
     - 종류 : 절차적 블록 (begin end block), 병렬적 블록 (fork join block)

  ㅇ 모듈 : module ~ endmodule             ☞ Verilog 모듈 참조
     - Verilog HDL에서 기본 설계 단위
        . 설계시스템의 입출력, 동작에 대한 기술(description)이,
        . 이러한 모듈 내에 담겨있게됨


4. Verilog 서브프로그램

  ㅇ 태스크, 함수
     - 코드 반복을 줄이기 위한 서브 프로그램(Subprogram)


5. Verilog 타이밍 제어Verilog에서 타이밍 제어는,
     - 시뮬레이션을 통해 하드웨어의 동작을 정확하게 모델링하고 분석하는 데 필수적

  ㅇ 구분  
     - 지연 제어  :  문장 선언 시점에서 실행 시점을 정해줌
        . stimulus (시뮬레이션시 필요한 입력 신호) 생성시 유용
     - 이벤트 제어  :  이벤트 발생시까지 문장 실행이 지연됨
        . 시뮬레이션 이벤트 종류
           .. 암시적 이벤트 : 네트나 변수 값이 변할 때 발생
           .. 명시적 이벤트 : 명시된 이벤트에 대한 다른 프로시저로부터의 트리거 때 발생
           .. (대부분 클럭 신호의 상승,하강 에지이벤트로 사용됨)
     - 동기화
        . 클록 신호를 기준으로 데이터상태제어
        . 하드웨어 설계안정성과 정확성을 보장하는 과정

  ㅇ 시뮬레이션 타이밍 제어 방법
     - delay 제어
     - event 제어
     - wait 제어
New
[Verilog]1. Verilog   2. Verilog 모듈   3. Verilog 문법  

  1. Top (분류 펼침)      :     1,592개 분류    6,517건 해설

"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"
     [정보통신기술용어해설]       편집·운영 (차재복)          편집 후원          편집 이력