산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> verilog

Verilog 문법 마스터: 렉시컬 규칙, 연산자, 숫자 형식, 식별자 총정리

Verilog의 렉시컬 관례는 C와 유사합니다. 토큰 스트림으로 구성되며, 토큰은 주석, 키워드, 숫자, 문자열, 공백 등이 될 수 있습니다. 모든 문장은 세미콜론(;)으로 끝나야 하며, 대소문자 구분(case-sensitive)됩니다.

주석

// 한 줄 주석
integer a; // 변수 선언 후 주석
/* 여러 줄
   주석 */
/* /* 중첩 불가 */ */  // 에러
/* // 이건 괜찮음 */   // 정상

공백(Whitespace)

스페이스, 탭, 줄바꿈, 폼피드는 토큰을 구분하는 역할 외에는 무시됩니다. 단, 문자열 내 공백은 보존됩니다.

module dut;
    reg [8*6:1] name = "Hello!";  // 앞쪽 공백 무시
    reg [8*6:1] addr = "Earth ";  // 문자열 내 공백 보존 → "Earth "
endmodule

연산자 종류

유형예시설명
단항(Unary)~y피연산자 왼쪽에 위치
이항(Binary)y | z두 피연산자 사이에 위치
삼항/조건(Conditional)(y>5) ? w : z?:로 세 피연산자 구분

숫자 형식 (Number Format)

기본은 10진수. 다른 진법 사용 시 [크기]'[기수][값] 형식 사용.

크기 지정(Sized)

3'b010    // 3비트 2진수 (값 2)
3'd2      // 3비트 10진수 (값 2)
8'h70     // 8비트 16진수 0x70 (10진수 112)
9'h1FA    // 9비트 16진수 0x1FA (10진수 506)
4'hA = 4'd10 = 4'b1010 = 4'o12  // 모두 10진수 10
32'hFACE_47B2  // 언더스코어로 가독성 향상

크기 미지정(Unsized)

integer a = 5423;      // 10진수, 시뮬레이터/머신에 따라 비트 폭 결정(보통 32비트)
integer a = 'h1AD7;    // 크기 미지정 → 32비트로 패딩되어 32'h0000_1AD7 저장

음수 표현

-6'd3    // 6비트 2의 보수 표현 (-3)
-6'sd9   // 부호 있는 연산용
8'd-4    // 불법: 기수와 값 사이에 마이너스 불가

문자열

큰따옴표(" ")로 감싸며 여러 줄로 분할 불가. 문자당 1바이트.

"Hello World!"        // 12바이트
"x + z"               // 5바이트
"How are you?"        // 여러 줄 분할 시 에러

식별자 (Identifiers)

영문자, 숫자, 언더스코어(_), 달러($) 조합. 숫자나 $로 시작 불가. 대소문자 구분.

integer var_a;    // 유효
integer $var_a;   // 무효: $로 시작
integer v$ar_a;   // 유효: 중간에 $ 허용
integer 2var;     // 무효: 숫자로 시작
integer var23_g;  // 유효
integer 23;       // 무효: 숫자만으로 구성

키워드 (Keywords)

언어 구문 예약어. 모두 소문자. 주요 키워드: module, endmodule, input, output, inout, wire, reg, always, initial, assign, if, else, case, for, while, parameter, localparam, posedge, negedge 등.

Verilog 표준 개정 이력

verilog

  1. 버릴로그(Verilog) 입문: 디지털 회로 설계를 위한 하드웨어 기술 언어
  2. Verilog 결합(Concatenation) & 복제(Replication) 연산자 실전 가이드
  3. Verilog 할당문 이해: 유형, 문법, 모범 사례
  4. Verilog 차단 vs 비차단 할당: 핵심 차이점 완벽 이해
  5. Verilog 함수 마스터하기: 효율적인 RTL 설계를 위한 활용법
  6. Verilog 태스크 이해: 함수와의 차이점, 문법, 활용법
  7. Verilog 클럭 생성기: 설계 및 구현 가이드
  8. Verilog 수학 함수 마스터하기: 효율적인 하드웨어 설계를 위한 활용
  9. Verilog $timeformat 마스터하기: 정밀도 및 표시 제어
  10. 모든 범위에서 Verilog Timescale 이해 및 출력하기