본문 바로가기

Programming/Verilog

Verilog HDL 문법 (키워드, 식별자, 숫자)



+ Verilog HDL의 특징 및 규약


베릴로그는 전체적으로 C 문법과 유사한 편이다.

문자는 대문자와 소문자를 구별(case sensitive)하며, 키워드는 반드시 소문자로 사용해야한다.
한 문장은 반드시 세미콜론(;) 으로 끝난다. (begin, end 등은 예외)






+ 키워드 (Keyword)


언어 구조를 정의하기 위해 사전에 예약된 식별자를 말한다. 
키워드는 변수(variable)나 식별자(identifier)로 사용하지 않도록 한다.
키워드들은 아래와 같으며, 일반적으로 컴파일러가 예약어들을 파란색으로 표시해줄 것이다.


always     and        assign    begin        buf
bufif0     bufif1     case      casex        casez
cmos       deassign   default   defparam     disable
else       end        endcase   endfunction  endmodule
endprimitive    endtable        endtask      event
for        force      forever   fork         function
highz0     highz1     if        initial      inout
input      integer    join      large        medium
module     nand       negedge   nmos         nor
not        notif0     notif1    or           output
parameter  pmos       posedge   primitive    pulldown
pullup     pull0      pull1     rcmos        reg
release    repeat     rnmos     rpmos        rtran
rtranif0   rtranin1   scalared  small        strong0
strong1    supply0    supply1   table        task
time       tran       tranif0   tranif1      tri
triand     trior      trireg    tri0         tri1
vectored   wait       wand      weak0        weak1
while      wire       wor       xnor         xor






+ 식별자 (identifier)


일반 변수들을 말하며, 객체를 참조할 수 있게 사용자가 부여하는 이름이다.
영문자 알파벳이나 숫자를 사용해야하며, 특수문자는 언더스코어(_), 달러($) 기호만 사용할 수 있다. 
단, 식별자는 반드시 알파벳이나 언더스코어로만 시작해야 한다.
예를 들면 다음과 같다.

 

rebAs

O

 

Rebas

O

 

always

X 

키워드를 식별자로 사용할 수 없음

_Rebas

O

 

9rebas

X

숫자로 시작할 수 없음

rebas7

O

 

$rebas

X

달러 기호로 시작할 수 없음

rebas$

O

 

re-bas

X

언더바, 달러 기호 외의 특수문자 사용 불가

 





+ 숫자 표현


기본적으로 <비트 수> <진수> <숫자> 로 표현한다.
<비트 수>에는 10진수 숫자로만 써야하며, 숫자의 크기를 말한다.
<진수>에는 b,B 로 2진수를, d, D로 10진수를, h, H로 16진수를 표현한다.
예를 들면 다음과 같다.

 

7'b1111001 

7비트 2진수 1111001

11'd2047

11비트 10진수 2047

17'h12a1

17비트 16진수 12a1

 

<비트 수>를 표현하지 않을 수 있다.
기본적으로 10진수로 표현되며, 시뮬레이터마다 다를 수 있지만 일반적으로 32비트 숫자가 된다. 

예를들면 다음과 같다.

 

2011147

32비트 10진수 2011147

'h113a

32비트 16진수 113a