+ 레지스터 (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 |
탭 문자 |
%% |
% 문자 |
\\ |
\ 문자 |
\" |
" 문자 |