Blog | Tag | Local | Guest | Login | Write |  RSS
Verilog HDL 2. 문법
이번에는 Verilog HDL의 문법에 대해서 알아보겠습니다.
각각의 Programming Language 마다 정해진 문법이 있듯이 Verilog HDL도 정해진 규칙이 있습니다. C Language와 크게 다른 것은 없지만 어느면에서 틀리고 어떤 특징을 가지고 있는지 알아보겠습니다.

1. 기본적인 사항
- 여백(white space) : 빈칸(space), 탭(tap), carriage return, line feeds 등 사용
                               단어들을 분리하는데 사용
                               공백(blank), tap 은 문자열에서 의미 있게 취급된다.
- 이름 or 식별자(identifiers)등으로 사용되는 문자는 소문자와 대문자를 구별. 예약어는 반드시 소문자로 기술하여야 한다.
- 한 문장은 반드시 세미콜론(;)으로 끝난다. (end~ 로 시작되는 예약어는 제외)

2. 주석(comments)
- C Language와 비슷하게 사용
- 소스 코드의 설명을 위해 사용. 컴파일 과정에서 무시됨
- 단일 라인 주석문 : 2개의 슬래쉬 (//) 로 시작되어 해당 라인의 끝까지가 주석이 된다.
- 블록 주석문 : /* ~~~ */ 로 표시 여러줄에 걸쳐서 주석을 사용할 수 있다.

3. 수 표현 (number representation)
정수형(integer)
<비트폭>'(따옴표로 분리)<진수><값>
- 비트폭이 없는 경우 32비트 10진수를 나타낸다.
- 진수 표현 법
 b, B : 2진수
 o, O : 8진수
 d, D : 10진수
 h, H : 16진수
- 진수에 대응 되는 값
 2진수 : 0, 1, x, z
 8진수 : 0~7, x, z
 10진수 : 0~9(x, z 사용 불가)
 16진수 : 0~9, a~f(A~F), x, z

ex) 1'b1 -> 1비트폭을 가지는 2진수. 값은 1
     8'o377 -> 8비트폭을 가지는 8진수. 값은 11111111

- 숫자에서 언더바(_)를 사용하여 읽기 쉽게 할 수 있고, 숫자 크기에
영향을 주지 않는다.

실수형(real)
<가수><E or e><지수>
- 가수 : 10진수

ex) 32e-4 -> 0.0032
      4.1E3 -> 4100

4. 문자열(string)
- 겹따옴표(" ") 사이에 있는 문자들. 단일 라인에 존재해야 한다. 여러 라인에 걸친 문자열은 사용 불가
- 8비트 ASCII값으로 표현되는 unsigned 정수형 상수로 취급
- 문자열 변수는 reg형 변수이며, 문자열 내의 문자 수에 8을 곱한 크기의 비트 폭을 가진다.

ex)
reg [8*12:1] string_var;
initial begin
    string_var = "Hello world!";
end

- 특수 문자 앞에 확장 문자를 사용하면 일부 특수 문자를 문자열에 포함시킬수 있음.
\n, \t,  \\, \", %%
- 스트링은 시뮬레이션에만 사용된다.

5. 식별자(identifiers)
- 식별자는 사용자가 정의한 변수, 모듈 이름, 포트 이름, 함수 이름, 인스턴스 이름 등을 말한다.
- 대소문자를 구별하여 인식
- 가독성을 위해 언더바(_) 사용 가능
- 단순 식별자 : 문자, 숫자, 기호 $, 언더바 등으로 구성
                      첫번째 문자는 숫자나 기호 $ 사용 불가, 문자 또는 언더바만 사용
- 확장 식별자(escaped identifier) : back slash 로 시작 되며 여백(빈칸, 탭, 줄바꿈) 등으로 끝남
                      프린트 가능한 ASCII 문자들을 식별자에 포함시키는 수단을 제공
ex)
\***error***
       \{a,b}

6. 키워드(keyword)
- Verilog HDL 구성요소를 정의하기 위해 미리 정의된 식별자(예약어)
- 확장문자가 포함된 키워드는 키워드로 인식되지 않는다.


이상으로 간단하게 문법을 알아 보았습니다.
다음시간엔 실제로 QUATUS를 사용하여 Verilog HDL로 여러가지 로직설계하는 방법과 시뮬레이션 방법을 알아가 보도록 하겠습니다.