Hardware/FPGA

[Verilog] #0 베릴로그(Verilog)란? / 데이터 타입(Data Types)

개발자 H 2020. 12. 7. 03:18

베릴로그(Verilog)란?

베릴로그(Verilog)는 전자 회로 및 시스템에 쓰이는 하드웨어 기술 언어(HDL, Hardware Description Language)다.

회로를 설계할 때 사용하는 언어로, 하드웨어는 순차적으로 돌아가지 않고 Clock에 따라서 동시에 동작하므로

시간과 동시성(concurrency)을 표현할 수 있고 컴파일 과정이 일반적인 프로그래밍언어와 다르다.

 

VHDL(VHSIC Hardware Description Language)도 있는데 위에서 설명한 Verilog HDL는 다르므로 주의하자!

 

기본적인 문법은 C언어와 유사하다. 

if, for, while과 같은 제어문을 사용할 수 있고 세부적인 문법에서는 차이점이 존재하지만 

대부분 유사하게 사용가능하고 연산자도 거의 비슷하게 사용할 수 있다.

한가지 차이점은 중괄호 대신에 begin ~ end를 사용하여 묶어준다.

 

데이터 타입(Data Types)

베릴로그의 데이터 타입으로는 기억소자인 Register와 연결하는 선인 Net으로 구성되어 있다.

Register는 값을 받아서 저장할 때 사용되고 Net은 신호를 연결할 때 사용한다.

일반적으로 Input에는 reg타입을 사용하고 Output에는 wire타입을 사용한다. 

 

벡터형으로 변수 앞에 [7:0], [0:31]과 같이 표현할 수 있다.

wire [7:0] databus 변수의 경우 8-bit wire타입이고 변수명은 databus이다.

reg [0:31] address 변수의 경우에는 32-bit이고 reg타입의 변수명은 address이다.

[7:0] bus와  [0:7] bus의 차이점은 각각 상위비트(MSB)가 bus[7], bus[0]이다.

 

reg [0:7] B1, B2, B3를 보면 address의 벡터 중에서 일부를 골라서 사용할 수 있다는 것을 의미한다.

자세한 문법에 대해서는 다음 시간에 배우고 이번에는 벡터의 일부를 짤라서 사용할 수 있다는 것을 알아두자!

 

각 변수들을 입출력으로 사용하는 방법은 변수명 앞에 input과 output을 넣어주면 된다.

입출력을 동시에 사용하는 변수에 경우 inout을 사용하면 된다.

위 그림처럼 모듈 안에 input, output을 적어도 되고, 모듈 안에는 변수만 적고 외부에 따로 표시해도 된다.

모듈 안에 변수를 넣는 순서는 output에서 input 순서대로 변수들을 넣어주는 것이 좋다.

(gate level modeling에 사용되는 모듈은 대부분 처음에 오는 변수가 출력 값이다.)

 

'Hardware > FPGA' 카테고리의 다른 글

[Verilog] #3-1 Structural Modeling (Gate level Modeling)  (0) 2020.12.09
[Verilog] #2 테스트벤치 (Testbench)  (1) 2020.12.07
[Verilog] #1 모듈 (Module)  (0) 2020.12.07