프로그래밍/Verilog

Verilog HDL 문법 (레지스터, 벡터, 배열, 파라미터, 문자열)

반응형


+ 레지스터 (register)


레지스터는 데이터를 저장하는데 사용하는 변수이다.

<키워드> <변수 명> 으로 사용한다.

 

키워드

정의

reg

일반적으로 사용하는 레지스터

real

실수 표현을 하는 레지스터

time

시뮬레이션 시간을 저장하는 레지스터

integer

정수 표현을 하는 레지스터, signed 형태 사용가능


* 예시


reg start;
initial begin
   start = 1'b0;
   #10 start = 1'b1;
end

real pi;
initial begin
   pi = 3.141592;
end






+ 벡터 (vector)


벡터란 n비트 폭을 가진 하나의 원소를 말한다.
net과 reg 데이터 타입은 여러개의 비트를 가진 벡터로 선언할 수 있다.
<데이터 타입> [최상위 비트:최하위 비트] <변수 명> 으로 선언한다.
[높은 수:낮은 수] 또는 [낮은 수:높은 수] 둘 다 나타낼 수 있으며, 항상 왼쪽에 있는 것이 최상위 비트를 나타낸다.
비트 폭을 따로 선언하지 않으면 1비트 스칼라이다.


* 예시


wire [31:0] wire_test; // 32비트 wire_test 선언
wire [7:0] wire_t1, wire_t2, wire_t3; // 3개의 wire_t1~3을 각각 8비트로 선언
reg [0:15] reg_test; // 16비트 폭을 가진 벡터 레지스터

 





+ 배열 (array)


배열은 1비트 또는 n비트를 가지는 여러 원소를 말한다.

reg, integer, time, 벡터 레지스터 데이터 타입의 배열을 선언할 수 있다.
<데이터 타입> <벡터 데이터 비트 폭> <배열 이름> 으로 선언한다.
다차원 배열은 만들 수 없다.


* 예시


integer rebas_test [0:3]; // 4개의 rebas_test 변수의 배열
reg rebas [15:0]; // 16개의 rebas 레지스터 변수의 배열
reg [5:0] arr_test [0:9]; // 10개의 arr_test 변수의 배열, 각 변수는 6비트 폭을 가짐
integer abc [3:0][3:0]; // 사용할 수 없는 표현. 다차원 배열은 사용 불가능


 




+ 파라미터 (parameter)


모듈 내에서 상수(constant)를 정의하는 수단이다. C언어의 #define ABC 10 과 비슷한 표현이다.
변수로는 사용할 수 없으며, 파라미터의 값들은 컴파일할 때 자동적으로 매칭시켜준다.
파라미터를 사용하면 코드의 가독성을 높힐 수 있으며, 값 편집이 용이해진다.


* 예시


parameter rebas = 7; // rebas를 7의 값을 가진 상수로 정의
parameter index_number = 10; // index_number를 10의 값을 가진 상수로 정의
reg [index_number:0] arr_test ; // reg [10:0] arr_test 와 같은 표현






+ 문자열 (string)


큰 따옴표를 사용하며, 하나의 라인에 써야한다.
문자열은 한 문자당 1바이트(8비트)의 크기를 가지므로, 레지스터를 선언할 때 비트 수를 고려하여 선언해야 한다.
특수 문자는 역슬래시(\)를 사용하여 출력할 수 있다.

 

이스케이프 문자 (escape)

출력 문자

\n

개행 문자

\t

탭 문자

%%

% 문자

\\

\ 문자

\"

" 문자

 

 

 

반응형